Skip to content
Snippets Groups Projects
Commit 8e02355d authored by Barbara B. Frosik's avatar Barbara B. Frosik
Browse files

No commit message

No commit message
parent b4ac9c74
No related branches found
No related tags found
No related merge requests found
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package gov.anl.aps.dm.portal.constants;
/**
*
* @author bfrosik
*/
public class RoleTypeName {
public static final String ADMIN = "Administrator";
public static final String EXPERIMENT_ADMIN = "Experiment Administrator";
public static final String MANAGER = "Manager";
public static final String PI = "Principal Investigator";
public static final String USER = "User";
}
package gov.anl.aps.dm.portal.controllers;
import gov.anl.aps.dm.portal.constants.RoleTypeName;
import gov.anl.aps.dm.portal.exceptions.DmPortalException;
import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists;
import gov.anl.aps.dm.portal.exceptions.InvalidDate;
......@@ -48,20 +49,16 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
@EJB
private UserExperimentRoleFacade userExperimentRoleFacade;
int USER_ROLE_ID = 4;
int PI_ROLE_ID = 3;
int MANAGER_ROLE_ID = 2;
public class ExperimentUser extends CloneableEntity {
String username;
String name;
int userId;
int experimentId;
private final boolean[] roles;
private final boolean[] userRoles;
public ExperimentUser(int experimentId, int userId) {
roles = new boolean[maxExperimentRoleTypeId];
userRoles = new boolean[maxExperimentRoleTypeId];
this.experimentId = experimentId;
this.userId = userId;
}
......@@ -83,43 +80,43 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
}
public boolean isIsManager() {
return roles[MANAGER_ROLE_ID];
return userRoles[experimentRoles.get(RoleTypeName.MANAGER).getId()];
}
public void setIsManager(boolean isManager) {
roles[MANAGER_ROLE_ID] = isManager;
userRoles[experimentRoles.get(RoleTypeName.MANAGER).getId()] = isManager;
}
public boolean isIsPI() {
return roles[PI_ROLE_ID];
return userRoles[experimentRoles.get(RoleTypeName.PI).getId()];
}
public void setIsPI(boolean isPI) {
roles[PI_ROLE_ID] = isPI;
userRoles[experimentRoles.get(RoleTypeName.PI).getId()] = isPI;
}
public boolean isIsUser() {
return roles[USER_ROLE_ID];
return userRoles[experimentRoles.get(RoleTypeName.USER).getId()];
}
public void setIsUser(boolean isUser) {
roles[USER_ROLE_ID] = isUser;
userRoles[experimentRoles.get(RoleTypeName.USER).getId()] = isUser;
}
public void setIsInRole(RoleType role, boolean isInRole) {
roles[role.getId()] = isInRole;
userRoles[role.getId()] = isInRole;
}
public boolean[] getRoles() {
return roles;
return userRoles;
}
public void removeAllExperimentRoles() {
UserExperimentRole userExperimentRole;
for (int i = 1; i < roles.length; i++) {
if (roles[i]) {
userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, i);
userExperimentRoleFacade.remove(userExperimentRole);
for (RoleType role : experimentRoles.values()) {
if (userRoles[role.getId()]) {
userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, role.getId());
userExperimentRoleFacade.remove(userExperimentRole);
}
}
}
......@@ -200,6 +197,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
private ExperimentController.ExperimentUsersTable experimentUsersEditTable = new ExperimentController.ExperimentUsersTable();
private ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable();
final private Map<UserInfo, ExperimentUser> experimentUsers = new HashMap<>();
final private Map<String, RoleType> experimentRoles = new HashMap<>();
int maxExperimentRoleTypeId = 0;
public ExperimentController() {
......@@ -257,8 +255,11 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
private void setMaxExperimentRoleTypeId() {
List<RoleType> roleTypesList = roleTypeFacade.findAll();
for (RoleType roleType : roleTypesList) {
if ((roleType.getId() > maxExperimentRoleTypeId) && !roleType.isIsSystemRole()) {
maxExperimentRoleTypeId = roleType.getId();
if (!roleType.isIsSystemRole()) {
experimentRoles.put(roleType.getName(), roleType);
if (roleType.getId() > maxExperimentRoleTypeId) {
maxExperimentRoleTypeId = roleType.getId();
}
}
}
maxExperimentRoleTypeId++;
......@@ -340,12 +341,11 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
public void updateRemovedExperimentRoles() {
UserExperimentRole userExperimentRole;
List<RoleType> roleTypesList = roleTypeFacade.findAll();
for (UserInfo user : experimentUsers.keySet()) {
ExperimentUser experimentUser = experimentUsers.get(user);
for (RoleType roleType : roleTypesList) {
for (RoleType roleType : experimentRoles.values()) {
int roleId = roleType.getId();
if (!roleType.isIsSystemRole() && (!experimentUser.roles[roleId]) && (user.inRole(roleId, experimentUser.experimentId))) {
if ((!experimentUser.userRoles[roleId]) && (user.inRole(roleId, experimentUser.experimentId))) {
userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(experimentUser.userId, experimentUser.experimentId, roleId);
if (userExperimentRole != null) {
userExperimentRoleFacade.remove(userExperimentRole);
......@@ -358,22 +358,21 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
@Override
public String update() {
boolean updated;
List<RoleType> roleTypesList = roleTypeFacade.findAll();
for (UserInfo user : experimentUsers.keySet()) {
updated = false;
ExperimentUser experimentUser = experimentUsers.get(user);
for (RoleType roleType : roleTypesList) {
for (RoleType roleType : experimentRoles.values()) {
if (!roleType.isIsSystemRole()) {
int roleId = roleType.getId();
if (!user.inRole(roleId, experimentUser.experimentId)) {
if (experimentUser.roles[roleId]) {
if (experimentUser.userRoles[roleId]) {
UserExperimentRole userExperimentRole = new UserExperimentRole(experimentUser.userId, experimentUser.experimentId, roleId);
user.addUserExperimentRole(userExperimentRole);
updated = true;
logger.debug("adding userExperimentRole " + experimentUser.userId + " " + experimentUser.experimentId + " " + roleId);
}
}
else if (!experimentUser.roles[roleId]) {
else if (!experimentUser.userRoles[roleId]) {
user.removeExperimentRole(roleId, experimentUser.experimentId);
updated = true;
logger.debug("adding userExperimentRole " + experimentUser.userId + " " + experimentUser.experimentId + " " + roleId);
......@@ -402,7 +401,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
UserInfo user = findUserInExperiment(experimentUser);
for (RoleType roleType : roleTypesList) {
int roleId = roleType.getId();
if (experimentUser.roles[roleId]) {
if (experimentUser.userRoles[roleId]) {
user.removeExperimentRole(roleId, experimentUser.experimentId);
}
}
......@@ -437,7 +436,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
try {
UserExperimentRole userExperimentRole;
for (UserInfo user : newUsers) {
userExperimentRole = new UserExperimentRole(user.getId(), current.getId(), USER_ROLE_ID); // set the User
userExperimentRole = new UserExperimentRole(user.getId(), current.getId(), experimentRoles.get(RoleTypeName.USER).getId()); // set the User
user.getUserExperimentRoleList().add(userExperimentRole);
userInfoFacade.edit(user);
}
......
......@@ -12,7 +12,7 @@
<p:panelGrid columns="2" styleClass="editEntityDetails">
<h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
<h:inputText id="name" value="#{roleTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
<h:outputText id="name" value="#{roleTypeObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
<h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
<h:inputText id="description" value="#{roleTypeObject.description}" title="Description" styleClass="entityDataText"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment