if (user.checkAuthorisation(UserModule.AUTH_ROLE_EDIT)) {
String roleId = (String) session.getAttribute(SESSION_ROLE_SELECTEDROLE);
Role role = null;
if (roleId != null) {
try {
role = roleDao.findById(roleId, true);
} catch (Exception e) {
}
}
if (role == null) {
role = new Role();
}
role.setName(roleForm.getName());
if (roleForm.getUserGroup().equals("")) {
role.setUserGroup(null);
} else {
UserGroup userGroup = userGroupDao.getUserGroup(roleForm.getUserGroup());
role.setUserGroup(userGroup);
}
Set<Permission> permissions = (Set<Permission>) session.getAttribute("permissions");
// add new permissions
for (Permission p : permissions) {
if (role.getPermission(p.getKey()) == null) {
log.debug("add permission");
role.addPermission(p);
} else {
role.getPermission(p.getKey()).setValue(p.getValue());
}
}
// remove deleted permissions
for (Permission p : new ArrayList<Permission>(role.getPermissions())) {
if (!permissions.contains(p)) {
log.debug("remove permission");
role.removePermission(p);
}
}
boolean error = false;
for (String permissionKey : roleForm.getValues().keySet()) {
Permission permission = role.getPermission(permissionKey);
if (permission != null) {
PermissionTemplate permissionTemplate = getModuleManager().getPermissionTemplate(permissionKey);
if (permissionTemplate != null) {
String value = roleForm.getValues().get(permissionKey);
if (permissionTemplate.isValuePermission()) {