diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java index ccf292efc82e3ed5152c8038f0b2c2b2c1ee74bc..cf0d0a28ac2d233db8f5f097f027538acaf384c6 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/CrudEntityController.java @@ -195,11 +195,17 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F current = updatedEntity; return view(); } - catch (DmPortalException | RuntimeException ex) { + catch (DmPortalException ex) { SessionUtility.addErrorMessage("Error", "Could not update " + getDisplayEntityTypeName() + ": " + ex.getMessage()); return null; } + catch (RuntimeException ex) { + SessionUtility.addErrorMessage("Error", "Could not update " + getDisplayEntityTypeName() + ": " + getObjectAlreadyExistMessage(current)); + return null; + } } + + abstract protected String getObjectAlreadyExistMessage(EntityType entity); public void destroy(EntityType entity) { current = entity; diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java index abf97ffe3feaf2a4d585cb8d2ab310a380ff9940..9e5f03beaddd08a8326ebfb52c8eb826f2310d09 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java @@ -65,29 +65,36 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper @Override public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty { - verifyExperiment(experiment); - logger.debug("Inserting new experiment " + experiment.getName()); + Experiment existingExperiment = experimentFacade.findByName(experiment.getName()); + if (existingExperiment != null) { + throw new ObjectAlreadyExists("Experiment " + experiment.getName() + " already exists."); + } + + verifyExperiment(experiment); + logger.debug("Inserting new experiment " + experiment.getName()); } @Override - public void prepareEntityUpdate(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty { + public void prepareEntityUpdate(Experiment experiment) throws DmPortalException { verifyExperiment(experiment); logger.debug("Updating experiment " + experiment.getName()); } - private void verifyExperiment(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty { - Experiment existingExperiment = experimentFacade.findByName(experiment.getName()); - if (existingExperiment != null) { - throw new ObjectAlreadyExists("Experiment " + experiment.getName() + " already exists."); + @Override + protected String getObjectAlreadyExistMessage(Experiment experiment) { + if (experiment == null) + return null; + return "Experiment " + experiment.getName() + " already exists."; + } + + private void verifyExperiment(Experiment experiment) throws InvalidDate, MissingProperty { + if (experiment.getExperimentType() == null) { + throw new MissingProperty("Experiment Type is missing."); } if ((experiment.getStartDate() != null) && (experiment.getEndDate() != null) && (experiment.getEndDate().before(experiment.getStartDate()))) { throw new InvalidDate("Experiment end date is before start date."); } - - if (experiment.getExperimentType() == null) { - throw new MissingProperty("Experiment Type is missing."); - } } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java index a0b3eecbc7b1251dbe55a8232b17887d795b05f3..e8545915caca1bd67212bbd9103aeee903c32023 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java @@ -72,12 +72,14 @@ public class ExperimentTypeController extends CrudEntityController<ExperimentTyp @Override public void prepareEntityUpdate(ExperimentType experimentType) throws DmPortalException { - ExperimentType existingExperimentType = experimentTypeFacade.findByName(experimentType.getName()); - if (existingExperimentType != null) { - throw new ObjectAlreadyExists("Experiment type " + experimentType.getName() + " already exists."); - } } - + + @Override + protected String getObjectAlreadyExistMessage(ExperimentType experimentType) { + if (experimentType == null) + return null; + return "Experiment Type " + experimentType.getName() + " already exists."; + } @FacesConverter(forClass = ExperimentType.class) public static class ExperimentTypeControllerConverter implements Converter diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java index df521f9428b0456123215c6df67e217a462e611b..8f1c34f543b842f60eef56649f5d4337f0c5ba03 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java @@ -150,10 +150,6 @@ public class LoginController implements Serializable } } - public String displayRole() { - return "User"; - } - public boolean isUserWriteable(UserInfo user) { if (!isLoggedIn()) { return false; diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java index 5e29cde8ccb7def537df681a7bc95ea771870c35..8e444f69118c5355984a26986a970fd0837fc3b1 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/RoleTypeController.java @@ -4,7 +4,6 @@ import gov.anl.aps.dm.portal.exceptions.DmPortalException; import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists; import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade; import gov.anl.aps.dm.portal.model.entities.RoleType; -import gov.anl.aps.dm.portal.utilities.SessionUtility; import java.util.ArrayList; import java.util.List; import javax.ejb.EJB; @@ -77,12 +76,16 @@ public class RoleTypeController extends CrudEntityController<RoleType, RoleTypeF @Override public void prepareEntityUpdate(RoleType roleType) throws DmPortalException { - RoleType existingRoleType = roleTypeFacade.findByName(roleType.getName()); - if (existingRoleType != null) { - throw new ObjectAlreadyExists("Role Type " + roleType.getName() + " already exists."); - } } + @Override + protected String getObjectAlreadyExistMessage(RoleType roleType) { + if (roleType == null) + return null; + return "Role Type " + roleType.getName() + " already exists."; + } + + public boolean isRoleSystemType(String name) { if (name == null) { logger.warn("Current row is not set"); diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java index d83fca3ec8a1e0e270d055147a01294bd7258293..1e6b0f00c70f13c74c98b06614524a35666e8bf8 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java @@ -1,14 +1,10 @@ package gov.anl.aps.dm.portal.controllers; import gov.anl.aps.dm.portal.exceptions.DmPortalException; -import gov.anl.aps.dm.portal.exceptions.InvalidDate; -import gov.anl.aps.dm.portal.exceptions.MissingProperty; import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists; import gov.anl.aps.dm.portal.model.entities.UserInfo; import gov.anl.aps.dm.portal.model.beans.UserInfoFacade; -import gov.anl.aps.dm.portal.model.entities.Experiment; import gov.anl.aps.dm.portal.utilities.SessionUtility; -import java.util.ArrayList; import java.util.List; import javax.ejb.EJB; @@ -79,18 +75,21 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF } @Override - public void prepareEntityUpdate(UserInfo user) throws ObjectAlreadyExists { + public void prepareEntityUpdate(UserInfo user) throws DmPortalException { if (passwordEntry != null && !passwordEntry.isEmpty()) { user.setPassword(passwordEntry); } passwordEntry = null; + } - UserInfo existingUserInfo = userInfoFacade.findByUsername(user.getUsername()); - if (existingUserInfo != null) { - throw new ObjectAlreadyExists("User " + user.getUsername() + " already exists."); - } + @Override + protected String getObjectAlreadyExistMessage(UserInfo user) { + if (user == null) + return null; + return "User " + user.getUsername() + " already exists."; } + public String prepareSessionUserEdit(String viewPath) { UserInfo sessionUser = (UserInfo) SessionUtility.getUser(); if (sessionUser == null) { diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java index 1851c94a5d0b8b57bf2357f97cfb4087376dfdc5..1f965aa8ed4606f804bd8f622d18740ac8cc6bbd 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java @@ -128,6 +128,20 @@ public class UserSystemRoleController implements Serializable return rt.isAdmin(user); } + public String displayRole(String user) { + // for now this method returns "Administrator" if user has this role, and "User" otherwise + RoleType rt = roleTypeFacade.findById(1); + if (rt == null) { + return null; + } + if (rt.isAdmin(user)) { + return "Administrator"; + } + else { + return "User"; + } + } + public String prepareSystemRoleView() { logger.debug("Preparing system role view"); noSystemRoleTable.resetList(); diff --git a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml index 93ea642265afed5fd8fb4db0bc107608d4c1db6b..b8b399bdb711c14a49771445d0339b8aef1bc477 100644 --- a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml +++ b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml @@ -28,7 +28,7 @@ <h:outputText value="Username: #{loginController.displayUsername()}"/> <br/> - <h:outputText value="Role: #{loginController.displayRole()}"/> + <h:outputText value="Role: #{userSystemRoleController.displayRole(loginController.username)}"/> </ui:insert> </div>