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

No commit message

No commit message
parent b335420e
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,6 @@ import gov.anl.aps.dm.portal.exceptions.InvalidDate;
import gov.anl.aps.dm.portal.exceptions.MissingProperty;
import gov.anl.aps.dm.portal.model.entities.Experiment;
import gov.anl.aps.dm.portal.model.beans.ExperimentFacade;
import gov.anl.aps.dm.portal.model.beans.ExperimentTypeFacade;
import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade;
import gov.anl.aps.dm.portal.model.beans.UserInfoFacade;
......@@ -40,9 +39,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
@EJB
private ExperimentFacade experimentFacade;
@EJB
private ExperimentTypeFacade experimentTypeFacade;
@EJB
private UserInfoFacade userInfoFacade;
......@@ -54,102 +50,95 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
public class ExperimentUser extends CloneableEntity {
String username;
String name;
int userId;
int experimentId;
private final boolean [] roles;
String username;
String name;
int userId;
int experimentId;
private final boolean[] roles;
public ExperimentUser(int experimentId, int userId) {
roles = new boolean[maxExperimentRoleTypeId];
this.experimentId = experimentId;
this.userId = userId;
}
public String getUsername() {
return username;
}
public ExperimentUser(int experimentId, int userId) {
roles = new boolean[maxExperimentRoleTypeId];
this.experimentId = experimentId;
this.userId = userId;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public String getName() {
return name;
}
public void setUsername(String username) {
this.username = username;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public boolean isIsManager() {
return roles[2];
}
public void setName(String name) {
this.name = name;
}
public void setIsManager(boolean isManager) {
logger.debug("setting Manager role for experiment "+ experimentId + " and user " + username + " to " + isManager);
roles[2] = isManager;
}
public boolean isIsManager() {
return roles[2];
}
public boolean isIsPI() {
return roles[3];
}
public void setIsManager(boolean isManager) {
roles[2] = isManager;
}
public void setIsPI(boolean isPI) {
roles[3] = isPI;
}
public boolean isIsPI() {
return roles[3];
}
public boolean isIsUser() {
return roles[4];
}
public void setIsPI(boolean isPI) {
roles[3] = isPI;
}
public void setIsUser(boolean isUser) {
roles[4] = isUser;
}
public boolean isIsUser() {
return roles[4];
}
public void setIsInRole(RoleType role, boolean isInRole) {
roles[role.getId()] = isInRole;
}
public boolean[] getRoles() {
return roles;
}
public void removeAllExperimentRoles() {
UserExperimentRole userExperimentRole;
for (int i = 1; i <= 4; i++) {
if (roles[i]) {
userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, i);
userExperimentRoleFacade.remove(userExperimentRole);
}
}
}
public void removeExperimentRole(int roleId) {
UserExperimentRole userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, roleId);
userExperimentRoleFacade.remove(userExperimentRole);
}
public void setIsUser(boolean isUser) {
roles[4] = isUser;
}
public boolean canAddUsers() {
return roles[2] || roles[3];
}
@Override
public int hashCode() {
return userId + experimentId * 100;
}
public void setIsInRole(RoleType role, boolean isInRole) {
roles[role.getId()] = isInRole;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ExperimentUser)) {
return false;
public boolean[] getRoles() {
return roles;
}
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);
}
}
}
public boolean canAddUsers() {
return roles[2] || roles[3];
}
@Override
public int hashCode() {
return userId + experimentId * 100;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ExperimentUser)) {
return false;
}
return ((userId == ((ExperimentUser) object).userId) && (experimentId == ((ExperimentUser) object).experimentId));
}
return ((userId == ((ExperimentUser)object).userId) && (experimentId == ((ExperimentUser)object).experimentId));
}
}
class ExperimentUsersTable extends DataTableController<ExperimentUser> {
@Override
......@@ -161,7 +150,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
public List<ExperimentUser> findAll() {
List<UserInfo> list = userInfoFacade.findUsersInExperiment(getCurrent().getId());
return convertExperimentUsers(list);
// return new ArrayList<>(tempUsersList);
}
List<ExperimentUser> convertExperimentUsers(List<UserInfo> list) {
......@@ -208,19 +196,13 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
}
}
private ExperimentController.ExperimentUsersTable experimentUsersListTable;
private ExperimentController.ExperimentUsersTable experimentUsersEditTable;
private ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable;
private ExperimentController.ExperimentUsersTable experimentUsersListTable = new ExperimentController.ExperimentUsersTable();
private ExperimentController.ExperimentUsersTable experimentUsersEditTable = new ExperimentController.ExperimentUsersTable();
private ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable();
final private Map<UserInfo, ExperimentUser> experimentUsers = new HashMap<>();
int maxExperimentRoleTypeId = 5;
int maxExperimentRoleTypeId = 0;
public ExperimentController() {
// List<RoleType> roleTypesList = roleTypeFacade.findAll();
// for (RoleType roleType : roleTypesList) {
// if ((roleType.getId() > maxExperimentRoleTypeId) && !roleType.isIsSystemRole()) {
// maxExperimentRoleTypeId = roleType.getId();
// }
// }
this.experimentUsersListTable = new ExperimentController.ExperimentUsersTable();
this.experimentUsersEditTable = new ExperimentController.ExperimentUsersTable();
this.noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable();
......@@ -257,15 +239,31 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
@Override
public String prepareEdit(Experiment experiment) {
clear();
if (maxExperimentRoleTypeId == 0) {
setMaxExperimentRoleTypeId();
}
return super.prepareEdit(experiment);
}
@Override
public String prepareView(Experiment experiment) {
clear();
if (maxExperimentRoleTypeId == 0) {
setMaxExperimentRoleTypeId();
}
return super.prepareView(experiment);
}
private void setMaxExperimentRoleTypeId() {
List<RoleType> roleTypesList = roleTypeFacade.findAll();
for (RoleType roleType : roleTypesList) {
if ((roleType.getId() > maxExperimentRoleTypeId) && !roleType.isIsSystemRole()) {
maxExperimentRoleTypeId = roleType.getId();
}
}
maxExperimentRoleTypeId++;
}
@Override
public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty {
if ((experiment.getName() == null) || (experiment.getName().length() == 0)){
......@@ -356,8 +354,25 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
// experiment type permission
// return experimentUsersMap.get(username).canAddUsers();
}
public void updateRemovedExperimentRoles() {
UserExperimentRole userExperimentRole;
List<RoleType> roleTypesList = roleTypeFacade.findAll();
for (UserInfo user : experimentUsers.keySet()) {
ExperimentUser experimentUser = experimentUsers.get(user);
for (RoleType roleType : roleTypesList) {
int roleId = roleType.getId();
if (!roleType.isIsSystemRole() && (!experimentUser.roles[roleId]) && (user.inRole(roleId, experimentUser.experimentId))) {
userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(experimentUser.userId, experimentUser.experimentId, roleId);
if (userExperimentRole != null) {
userExperimentRoleFacade.remove(userExperimentRole);
}
}
}
}
}
@Override
@Override
public String update() {
boolean updated;
List<RoleType> roleTypesList = roleTypeFacade.findAll();
......@@ -388,8 +403,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
}
clear();
// experimentUsersListTable.resetList();
// experimentUsersEditTable.resetList();
return super.update();
}
......@@ -401,7 +414,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
}
public String removeUser() {
List<RoleType> roleTypesList = roleTypeFacade.findAll();
ExperimentUser experimentUser = experimentUsersEditTable.getCurrentObject();
UserInfo user = findUserInExperiment(experimentUser);
......@@ -421,19 +433,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
experimentUser.removeAllExperimentRoles();
}
public void updateRemovedExperimentRoles() {
List<RoleType> roleTypesList = roleTypeFacade.findAll();
for (UserInfo user : experimentUsers.keySet()) {
ExperimentUser experimentUser = experimentUsers.get(user);
for (RoleType roleType : roleTypesList) {
int roleId = roleType.getId();
if (!roleType.isIsSystemRole() && (!experimentUser.roles[roleId]) && (user.inRole(roleId, experimentUser.experimentId))) {
experimentUser.removeExperimentRole(roleId);
}
}
}
}
private UserInfo findUserInExperiment(ExperimentUser experimentUser) {
for (UserInfo user : experimentUsers.keySet()) {
if (experimentUsers.get(user).equals(experimentUser)) {
......
......@@ -6,7 +6,6 @@
package gov.anl.aps.dm.portal.model.entities;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
......@@ -208,18 +207,6 @@ public class UserInfo extends CloneableEntity
}
}
public void removeExperiment(int experimentId) {
List<UserExperimentRole> rolesToRemove = new ArrayList();
for (UserExperimentRole userExperimentRole : userExperimentRoleList) {
if (userExperimentRole.getUserExperimentRolePK().getExperimentId() == experimentId) {
rolesToRemove.add(userExperimentRole);
}
}
for (UserExperimentRole userExperimentRole : rolesToRemove) {
userExperimentRoleList.remove(userExperimentRole);
}
}
public void addUserExperimentRole(UserExperimentRole userExperimentRole) {
userExperimentRoleList.add(userExperimentRole);
}
......
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