}
public Map<String, Object> updateRole (String roleId, String roleName, String roleKey, String parentRoleId, boolean canEditUsers, boolean canEditPermissions,
boolean canEditLayouts, String description) throws DotDataException, DotRuntimeException, PortalException, SystemException {
RoleAPI roleAPI = APILocator.getRoleAPI();
Role role = roleAPI.loadRoleById(roleId);
role.setName(roleName);
role.setRoleKey(roleKey);
role.setEditUsers(canEditUsers);
role.setEditPermissions(canEditPermissions);
role.setEditLayouts(canEditLayouts);
role.setDescription(description);
if(parentRoleId != null) {
Role parentRole = roleAPI.loadRoleById(parentRoleId);
role.setParent(parentRole.getId());
} else {
role.setParent(role.getId());
}
User user = getUser();
String date = DateUtil.getCurrentDate();
ActivityLogger.logInfo(getClass(), "Modifying Role", "Date: " + date + "; "+ "User:" + user.getUserId() + "; RoleID: " + role.getId() );
AdminLogger.log(getClass(), "Modifying Role", "Date: " + date + "; "+ "User:" + user.getUserId() + "; RoleID: " + role.getId() );
try {
role = roleAPI.save(role);
} catch(DotDataException | DotStateException e) {
ActivityLogger.logInfo(getClass(), "Error Modifying Role", "Date: " + date + "; "+ "User:" + user.getUserId() + "; RoleID: " + role.getId() );
AdminLogger.log(getClass(), "Error Modifying Role", "Date: " + date + "; "+ "User:" + user.getUserId() + "; RoleID: " + role.getId() );
throw e;
}