diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java index 6617843114c49bfc090a6a51ed420370d75e6921..c2bdc586f2d45cbc420757dff64dc9a18e0555f0 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/constants/DmStatus.java @@ -15,4 +15,5 @@ public class DmStatus public static final int DM_OBJECT_ALREADY_EXISTS = 6; public static final int DM_OBJECT_NOT_FOUND = 7; public static final int DM_INVALID_DATE = 8; + public static final int DM_MISSING_PROPERTY = 9; } \ No newline at end of file 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 07e9f66e90e4a040dbce09cdcc1d695b68186d94..ccf292efc82e3ed5152c8038f0b2c2b2c1ee74bc 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 @@ -77,13 +77,12 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F public String resetList() { logger.debug("Resetting list"); - resetListDataModel(); return prepareList(); } public String prepareList() { logger.debug("Preparing list"); - current = null; + resetListDataModel(); return "list?faces-redirect=true"; } @@ -268,8 +267,6 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F } public List<EntityType> getFilteredObjectList() { - boolean isNull = (filteredObjectList == null); - logger.debug("filteredObjectList is null "+ isNull); return filteredObjectList; } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java index 0f966d8fad23a4af593745cbb01523c5e7d9b974..40c603ca04a2cc2ffb6e094feadb8d5e882d0bb8 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DataTableController.java @@ -63,6 +63,7 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im listDataTable = null; listDataModelReset = true; filteredObjectList = null; + selectedObjectList = null; current = null; } @@ -99,7 +100,7 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im this.filteredObjectList = filteredObjectList; } - public List<EntityType> getFilteredItems() { + public List<EntityType> getFilteredItems() { return filteredObjectList; } @@ -107,6 +108,10 @@ public abstract class DataTableController<EntityType extends CloneableEntity> im this.filteredObjectList = filteredItems; } + public void resetFilterList() { + filteredObjectList = null; + } + public boolean isListDataModelReset() { if (listDataModelReset) { listDataModelReset = false; 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 206fee050b5d70f5d7e3833b71056f8a64d14505..abf97ffe3feaf2a4d585cb8d2ab310a380ff9940 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 @@ -3,6 +3,7 @@ package gov.anl.aps.dm.portal.controllers; import gov.anl.aps.dm.portal.exceptions.DmPortalException; import gov.anl.aps.dm.portal.exceptions.ObjectAlreadyExists; 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 java.util.List; @@ -63,7 +64,18 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper } @Override - public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, InvalidDate { + public void prepareEntityInsert(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty { + verifyExperiment(experiment); + logger.debug("Inserting new experiment " + experiment.getName()); + } + + @Override + public void prepareEntityUpdate(Experiment experiment) throws ObjectAlreadyExists, InvalidDate, MissingProperty { + 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."); @@ -73,15 +85,9 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper throw new InvalidDate("Experiment end date is before start date."); } - logger.debug("Inserting new experiment " + experiment.getName()); - } - - @Override - public void prepareEntityUpdate(Experiment experiment) throws DmPortalException { - super.prepareEntityUpdate(experiment); - 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 0571eecc6bceaa5ed1c779a29161658859d909d7..a0b3eecbc7b1251dbe55a8232b17887d795b05f3 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,7 +72,10 @@ public class ExperimentTypeController extends CrudEntityController<ExperimentTyp @Override public void prepareEntityUpdate(ExperimentType experimentType) throws DmPortalException { - super.prepareEntityUpdate(experimentType); + ExperimentType existingExperimentType = experimentTypeFacade.findByName(experimentType.getName()); + if (existingExperimentType != null) { + throw new ObjectAlreadyExists("Experiment type " + experimentType.getName() + " already exists."); + } } 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 1c0e21c034341484991f313892f4df5edee42cd7..5e29cde8ccb7def537df681a7bc95ea771870c35 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 @@ -77,7 +77,10 @@ public class RoleTypeController extends CrudEntityController<RoleType, RoleTypeF @Override public void prepareEntityUpdate(RoleType roleType) throws DmPortalException { - super.prepareEntityUpdate(roleType); + RoleType existingRoleType = roleTypeFacade.findByName(roleType.getName()); + if (existingRoleType != null) { + throw new ObjectAlreadyExists("Role Type " + roleType.getName() + " already exists."); + } } public boolean isRoleSystemType(String name) { 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 5a58c9f52f81c5355c5707a536270dd80554fb66..d83fca3ec8a1e0e270d055147a01294bd7258293 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,9 +1,12 @@ 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; @@ -76,12 +79,16 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF } @Override - public void prepareEntityUpdate(UserInfo user) throws DmPortalException { + public void prepareEntityUpdate(UserInfo user) throws ObjectAlreadyExists { if (passwordEntry != null && !passwordEntry.isEmpty()) { user.setPassword(passwordEntry); } passwordEntry = null; - super.prepareEntityUpdate(user); + + UserInfo existingUserInfo = userInfoFacade.findByUsername(user.getUsername()); + if (existingUserInfo != null) { + throw new ObjectAlreadyExists("User " + user.getUsername() + " already exists."); + } } public String prepareSessionUserEdit(String viewPath) { 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 da428975855e3a8d7daa17e4ca59a3f4c90474e6..1851c94a5d0b8b57bf2357f97cfb4087376dfdc5 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 @@ -75,7 +75,7 @@ public class UserSystemRoleController implements Serializable private String systemRoleId; - private static final Logger logger = Logger.getLogger(UserSystemRoleController.class.getName()); + private static final Logger logger = Logger.getLogger(UserSystemRoleController.class.getName()); public SystemRoleTypeTable getSystemRoleTable() { @@ -94,7 +94,7 @@ public class UserSystemRoleController implements Serializable this.noSystemRoleTable = noSystemRoleTable; } - public String getSystemRoleId() { + public String getSystemRoleId() { return systemRoleId; } @@ -120,7 +120,6 @@ public class UserSystemRoleController implements Serializable } public boolean hasSystemRole(String user) { - logger.debug("in hasSystemRole username, roleId "+ user+" "+systemRoleId); int id = Integer.parseInt(systemRoleId); RoleType rt = roleTypeFacade.findById(id); if (rt == null) { @@ -131,7 +130,8 @@ public class UserSystemRoleController implements Serializable public String prepareSystemRoleView() { logger.debug("Preparing system role view"); - return "/views/userSystemRole/list?faces-redirect=true"; + noSystemRoleTable.resetList(); + return resetSystemRoleUserList(); } public String addSystemRole() { @@ -169,6 +169,7 @@ public class UserSystemRoleController implements Serializable } try { roleTypeFacade.edit(rt); + resetNoSystemRoleUserList(); return resetSystemRoleUserList(); } catch (RuntimeException ex) { diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/MissingProperty.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/MissingProperty.java new file mode 100644 index 0000000000000000000000000000000000000000..ee8f99142a00e7d3c1ade65de28b09cd240ea638 --- /dev/null +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/exceptions/MissingProperty.java @@ -0,0 +1,60 @@ +/* + * 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.exceptions; + +import gov.anl.aps.dm.portal.constants.DmStatus; + +/** + * + * @author bfrosik + */ +public class MissingProperty extends DmPortalException +{ + /** + * Constructor. + */ + public MissingProperty() + { + super(); + setErrorCode(DmStatus.DM_MISSING_PROPERTY); + } + + /** + * Constructor. + * + * @param message Error message + */ + public MissingProperty(String message) + { + super(message); + setErrorCode(DmStatus.DM_MISSING_PROPERTY); + } + + /** + * Constructor. + * + * @param throwable Throwable object + */ + public MissingProperty(Throwable throwable) + { + super(throwable); + setErrorCode(DmStatus.DM_MISSING_PROPERTY); + } + + /** + * Constructor. + * + * @param message Error message + * @param throwable Throwable object + */ + public MissingProperty(String message, Throwable throwable) + { + super(message, throwable); + setErrorCode(DmStatus.DM_MISSING_PROPERTY); + } +} + diff --git a/src/java/DmWebPortal/web/resources/css/portal.css b/src/java/DmWebPortal/web/resources/css/portal.css index 22159fbe0c25e9dd623b87f987b54152c4687290..28c15503806e1a501d350a8fec121d9d32aaa39b 100644 --- a/src/java/DmWebPortal/web/resources/css/portal.css +++ b/src/java/DmWebPortal/web/resources/css/portal.css @@ -226,61 +226,6 @@ a:link:hover, a:visited:hover { width: 300px; } -.systemRoleAddTable { - -} - -.systemRoleAddTable td:nth-child(1) { - width: 16px; - text-align:center; -} - -.systemRoleAddTable td:nth-child(2) { - width: 100px; -} - -.systemRoleAddTable td:nth-child(3) { - width: 120px; -} - -.systemRoleAddTable td:nth-child(4) { - width: 120px; -} - -.systemRoleAddTable td:nth-child(5) { - width: 200px; -} - -.systemRoleTable { - -} - -.systemRoleTable td:nth-child(1) { - width: 16px; - text-align:center; -} - -.systemRoleTable td:nth-child(2) { - width: 100px; -} - -.systemRoleTable td:nth-child(3) { - width: 120px; -} - -.systemRoleTable td:nth-child(4) { - width: 120px; -} - -.systemRoleTable td:nth-child(5) { - width: 200px; -} - -.systemRoleTable td:nth-child(7) { - width: 150px; - visibility:visible; -} - .entityLogList td:last-child { width: 195px; } diff --git a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml index 7429bc24f1c349aa00632ab91b55d8b6dfb4a9f5..93ea642265afed5fd8fb4db0bc107608d4c1db6b 100644 --- a/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml +++ b/src/java/DmWebPortal/web/templates/contentViewTemplate4x3.xhtml @@ -57,10 +57,10 @@ <h:form prependId="false"> <p:menubar> <p:menuitem value="Home" url="/views/home.xhtml" icon="ui-icon-home"/> + <p:menuitem value="Experiments" url="/views/experiment/list.xhtml"/> + <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/> <p:menuitem value="Experiment Types" url="/views/experimentType/list.xhtml"/> <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/> - <p:menuitem value="Users" url="/views/userInfo/list.xhtml"/> - <p:menuitem value="Experiments" url="/views/experiment/list.xhtml"/> <p:menuitem value="Login" onclick="PF('loginDialog').show();" rendered="#{!loginController.loggedIn}" icon="ui-icon-person"/> <p:menuitem value="Logout" action="#{loginController.logout()}" rendered="#{loginController.loggedIn}" icon="ui-icon-close"/> </p:menubar> </h:form> diff --git a/src/java/DmWebPortal/web/views/roleType/list.xhtml b/src/java/DmWebPortal/web/views/roleType/list.xhtml index 4241dd77dbcf1d6d8b01fe1bd32dca1a71d634b7..d0badb8312175885b7068f646d0fbbea251005ae 100644 --- a/src/java/DmWebPortal/web/views/roleType/list.xhtml +++ b/src/java/DmWebPortal/web/views/roleType/list.xhtml @@ -23,8 +23,6 @@ <ui:include src="roleTypeDestroyDialog.xhtml"/> - <h:outputScript library="js/roleType" name="list.filter.js" rendered="#{loginController.loggedIn}"/> - </h:form> </ui:define> diff --git a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml index edbc2cf582e19df3b66d28320b91337572d52137..eea8848616e8676744ccb757241de4ec376810f6 100644 --- a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml +++ b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml @@ -16,12 +16,12 @@ <h:form id="adminListForm"> <div class="actionButton"> - <p:commandButton id="systemRoleAddButton" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{userSystemRoleController.hasSystemRole(loginController.username)}" icon="ui-icon-plus"> + <p:commandButton id="systemRoleAddButton" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{userSystemRoleController.hasSystemRole(loginController.username)}" icon="ui-icon-plus" > <p:tooltip for="systemRoleAddButton" value="Add new Administrators."/> </p:commandButton> - <p:commandButton id="#{UserInfo}ResetFiltersButton" action="#{userSystemRoleController.resetSystemRoleUserList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight"> - <p:tooltip for="#{UserInfo}ResetFiltersButton" value="Reset list filters."/> + <p:commandButton id="ResetFiltersButton" action="#{userSystemRoleController.resetSystemRoleUserList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight"> + <p:tooltip for="ResetFiltersButton" value="Reset list filters."/> </p:commandButton> </div> diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml index 40d2669b0cfb8b1725d6d6c9c89fc82a0212dccb..033d51d19551542076d2c11079f86801ac448a0f 100644 --- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml +++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml @@ -11,10 +11,10 @@ <p:dialog id="adminAddDialog" - header="Add Administrators" widgetVar="systemRoleAddDialogWidget" > + header="Add Administrators" widgetVar="systemRoleAddDialogWidget" dynamic="true" styleClass="dialog" width="800"> <div class="actionButton"> - <p:commandButton id="ResetFilters" action="#{userSystemRoleController.resetNoSystemRoleUserList()}" update="adminAddDialog" onsuccess="systemRoleAddTableWidgetVar.show()" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight"> + <p:commandButton id="ResetFilters" actionListener="#{userSystemRoleController.noSystemRoleTable.resetFilterList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('systemRoleAddDialogWidget').show()" update="adminAddDialog" > <p:tooltip for="ResetFilters" value="Reset list filters."/> </p:commandButton> </div> @@ -32,7 +32,6 @@ rowKey="#{adminUser.username}" widgetVar="systemRoleAddTableWidgetVar" emptyMessage="No users to add." - tableStyleClass="systemRoleTable" rowSelectMode="true" selectionMode="multiple" > @@ -57,7 +56,7 @@ </p:column> <f:facet name="footer"> - <p:commandButton value="Add Adminstrators" actionListener="#{userSystemRoleController.addSystemRole()}" oncomplete="PF('systemRoleAddDialogWidget').hide()" /> + <p:commandButton value="Add" action="#{userSystemRoleController.addSystemRole()}" oncomplete="PF('systemRoleAddDialogWidget').hide()" /> <p:commandButton value="Clear Selection" onclick="PF('systemRoleAddTableWidgetVar').unselectAllRows()" /> </f:facet> </p:dataTable>