From 839bba939eb0ae51bb458dae8354671195361e8e Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Wed, 4 Feb 2015 23:17:14 +0000
Subject: [PATCH]

---
 .../controllers/CrudEntityController.java     |  5 ++++
 .../controllers/UserInfoController.java       | 26 +++++++------------
 .../web/views/experiment/create.xhtml         |  2 +-
 .../web/views/experiment/edit.xhtml           |  2 +-
 .../experiment/experimentEditPanelGrid.xhtml  |  2 +-
 .../experimentUsersEditDataTable.xhtml        | 11 +++++---
 .../experimentUsersListDataTable.xhtml        |  9 ++++---
 .../web/views/experiment/view.xhtml           |  2 +-
 .../DmWebPortal/web/views/roleType/list.xhtml |  2 ++
 .../userExperimentsListDataTable.xhtml        | 18 ++++++++-----
 .../userInfo/userInfoListDataTable.xhtml      |  4 ++-
 .../DmWebPortal/web/views/userInfo/view.xhtml |  2 +-
 .../web/views/userSystemRole/list.xhtml       |  4 ++-
 .../userSystemRole/systemRoleAddDialog.xhtml  | 13 +++++-----
 14 files changed, 58 insertions(+), 44 deletions(-)

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 8e233ac6..aa9b5d95 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
@@ -122,10 +122,15 @@ public abstract class CrudEntityController<EntityType extends CloneableEntity, F
 
  
     public String prepareView(EntityType entity) {
+        clear();
         logger.debug("Preparing view");
         current = entity;
         return "view?faces-redirect=true";
     }
+    
+    public void clear() {
+        
+    }
 
     public String view() {
         return "view?faces-redirect=true";
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 c1a4c8f5..50d9bb2e 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
@@ -127,18 +127,16 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
             roleTypes = experimentRoles.values();
             ExperimentUser experimentUser;
             for (Experiment experiment : list) {
-                if ((experimentUser = userExperiments.get(experiment.getId())) == null) {
-                    experimentUser = new ExperimentUser(experiment.getId(), getCurrent().getId());
-                    experimentUser.setExperimentName(experiment.getName());
-                    experimentUser.setDescription(experiment.getDescription());
-                    userExperiments.put(experiment.getId(), experimentUser);
-                }
+                experimentUser = new ExperimentUser(experiment.getId(), getCurrent().getId());
+                experimentUser.setExperimentName(experiment.getName());
+                experimentUser.setDescription(experiment.getDescription());
+                userExperiments.add(experimentUser);
                 for (RoleType roleType : roleTypes) {
                     boolean inRole = getCurrent().inRole(roleType.getId(), experiment.getId());
                     experimentUser.setIsInRole(roleType, inRole);
                 }
             }
-            return new ArrayList<>(userExperiments.values());
+            return new ArrayList<>(userExperiments);
         }
 
         @Override
@@ -149,7 +147,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
 
     private UserInfoController.UserExperimentsTable userExperimentsListTable = new UserInfoController.UserExperimentsTable();
 
-    private final Map<Integer, ExperimentUser> userExperiments = new HashMap<>();
+    private final List<ExperimentUser> userExperiments = new ArrayList<>();
     private final Map<String, RoleType> experimentRoles = new HashMap<>();
     int maxExperimentRoleTypeId;
     boolean initialized = false;
@@ -170,9 +168,10 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
         initialized = true;
     }
     
+    @Override
     public void clear() {
         userExperimentsListTable.resetList();
-        userExperimentsListTable.resetFilterList();
+        userExperiments.clear();
     }
 
     public UserExperimentsTable getUserExperimentsListTable() {
@@ -227,12 +226,6 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
         logger.debug("Inserting new user " + user.getUsername());
     }
     
-    @Override
-    public String update() {
-        clear();
-        return super.update();
-    }
-
     private void verifyMandatoryParam(UserInfo user) throws MissingProperty {
         int missing = 0;
         if ((user.getUsername() == null) || (user.getUsername().length() == 0)) {
@@ -280,8 +273,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
         }
         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/web/views/experiment/create.xhtml b/src/java/DmWebPortal/web/views/experiment/create.xhtml
index f9a48d18..a22b8705 100644
--- a/src/java/DmWebPortal/web/views/experiment/create.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/create.xhtml
@@ -7,7 +7,7 @@
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                 xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
                 template="../../templates/contentViewTemplate4x3.xhtml">
-
+    
     <ui:define name="middleCenter">
         <div class="pageTitle">
             <h1>Add Experiment</h1>
diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
index 7ca74d86..e6194487 100644
--- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
@@ -12,7 +12,7 @@
         <h:form id="editExperimentForm">
 
                 <div class="pageTitle">
-                    <h1>Edit Experiment</h1>
+                    <h1>Edit Experiment #{experimentController.current.name}</h1>
                 </div>
 
             <p:accordionPanel multiple="true" dynamic="true" cache="false" activeIndex="0,1"  >
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml
index 8592664d..47a54382 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentEditPanelGrid.xhtml
@@ -12,7 +12,7 @@
     <p:panelGrid columns="2" > 
 
         <h:outputLabel for="name" value="Name" styleClass="entityDataEmphasizedLabel"/>
-        <h:inputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
+        <h:outputText id="name" value="#{experimentObject.name}" title="Name" styleClass="entityDataEmphasizedText"/>
 
         <h:outputLabel for="experimentType" value="Experiment Type" styleClass="entityDataLabel"/>
         <p:selectOneMenu id="experimentType" value="#{experimentObject.experimentType}" styleClass="entityDataText">
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
index cd6a59f3..0a483d7d 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
@@ -20,13 +20,16 @@
         <p:tooltip for="ResetFiltersButton" value="Reset filters."/>
     </p:commandButton>
 
+    <p:commandButton id="#{entityTypeName}NoOp" style="visibility:hidden" value="NoOp"/>
+    <p:defaultCommand target="#{entityTypeName}NoOp"/>
+
     <p:dataTable id="experimentUsersEditDataTable"                              
                  var="experimentUserObject" 
                  value="#{experimentController.experimentUsersEditTable.listDataModel}" 
                  filteredValue="#{experimentController.experimentUsersEditTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="8"
                  binding="#{experimentController.experimentUsersEditTable.listDataTable}"
                  widgetVar="experimentUsersEditWidget" 
                  emptyMessage="No users found.">
@@ -44,17 +47,17 @@
             <h:outputText value="#{experimentUserObject.name}"/>
         </p:column>                  
 
-        <p:column headerText="Manager">
+        <p:column sortBy="#{!experimentUserObject.isManager}" headerText="Manager">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isManager and !isAdmin and !isManager}" /> 
             <p:selectBooleanCheckbox value="#{experimentUserObject.isManager}" rendered="#{isAdmin or isManager}" immediate="true" />  
         </p:column>
 
-        <p:column headerText="Principal Investigator">
+        <p:column sortBy="#{!experimentUserObject.isPI}" headerText="Principal Investigator">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isPI and !isAdmin and !isPi}" /> 
             <p:selectBooleanCheckbox value="#{experimentUserObject.isPI}" rendered="#{isAdmin or isPi}" />  
         </p:column>
 
-        <p:column headerText="User">
+        <p:column sortBy="#{!experimentUserObject.isUser}" headerText="User">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isUser and !isAdmin and !isPi}" /> 
             <p:selectBooleanCheckbox value="#{experimentUserObject.isUser}" rendered="#{isAdmin or isPi}" />  
         </p:column>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
index 3ffb91e5..b17657ad 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
@@ -5,9 +5,12 @@
                 xmlns:p="http://primefaces.org/ui"
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
 
+
     <p:commandButton id="ResetFiltersButton" action="#{experimentController.experimentUsersListTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('experimentUsersListWidget').clearFilters()" update="experimentUsersListDataTable">
         <p:tooltip for="ResetFiltersButton" value="Reset filters."/>
     </p:commandButton>
+    <p:commandButton id="#{entityTypeName}NoOp" style="visibility:hidden" value="NoOp"/>
+    <p:defaultCommand target="#{entityTypeName}NoOp"/>
 
     <p:dataTable id="experimentUsersListDataTable"                              
                  var="experimentUserObject" 
@@ -31,15 +34,15 @@
         </p:column>                  
 
 
-        <p:column headerText="Manager">
+        <p:column sortBy="#{!experimentUserObject.isManager}" headerText="Manager" >
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isManager}" /> 
         </p:column>
 
-        <p:column headerText="Principal Investigator">
+        <p:column sortBy="#{!experimentUserObject.isPI}" headerText="Principal Investigator">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isPI}" />  
         </p:column>
 
-        <p:column headerText="User">
+        <p:column sortBy="#{!experimentUserObject.isUser}" headerText="User">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isUser}" />   
         </p:column>
 
diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml
index e8582377..f059e962 100644
--- a/src/java/DmWebPortal/web/views/experiment/view.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml
@@ -11,7 +11,7 @@
     <ui:define name="middleCenter">
         <h:form id="viewExperimentForm">
             <div class="pageTitle">
-                <h1>Experiment Details</h1>
+                <h1>Experiment #{experimentController.current.name}</h1>
             </div>
 
             <ui:param name="experimentObject" value="#{experimentController.current}"/>
diff --git a/src/java/DmWebPortal/web/views/roleType/list.xhtml b/src/java/DmWebPortal/web/views/roleType/list.xhtml
index 73dcee27..3ae2e81e 100644
--- a/src/java/DmWebPortal/web/views/roleType/list.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/list.xhtml
@@ -20,6 +20,8 @@
                 <p:commandButton id="#{entityTypeName}ResetFiltersButton" action="#{entityController.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight">
                     <p:tooltip for="#{entityTypeName}ResetFiltersButton" value="Reset list filters."/>
                 </p:commandButton>
+                <p:commandButton id="#{entityTypeName}NoOp" style="visibility:hidden" value="NoOp"/>
+                <p:defaultCommand target="#{entityTypeName}NoOp"/>
             </div>
 
             <h:panelGroup>  
diff --git a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
index 2df53a70..74727954 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
@@ -5,9 +5,13 @@
                 xmlns:p="http://primefaces.org/ui"
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
 
-    <p:commandButton id="ResetFiltersButton" action="#{userInfoController.userExperimentsListTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('userExperimentsListWidget').clearFilters()" update="userExperimentsListDataTable">
-        <p:tooltip for="ResetFiltersButton" value="Reset filters."/>
-    </p:commandButton>
+    <div>
+        <p:commandButton id="ResetFiltersButton" action="#{userInfoController.userExperimentsListTable.resetList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('userExperimentsListWidget').clearFilters()" update="userExperimentsListDataTable">
+            <p:tooltip for="ResetFiltersButton" value="Reset filters."/>
+        </p:commandButton>
+        <p:commandButton id="#{entityTypeName}NoOp" style="visibility:hidden" value="NoOp"/>
+        <p:defaultCommand target="#{entityTypeName}NoOp"/>
+    </div>
 
     <p:dataTable id="userExperimentsListDataTable"                              
                  var="userExperimentObject" 
@@ -15,7 +19,7 @@
                  filteredValue="#{userInfoController.userExperimentsListTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="6"
                  binding="#{userInfoController.userExperimentsListTable.listDataTable}"
                  widgetVar="userExperimentsListWidget" 
                  emptyMessage="No users found.">
@@ -31,15 +35,15 @@
         </p:column>                  
 
 
-        <p:column headerText="Manager">
+        <p:column sortBy="#{!experimentUserObject.isManager}" headerText="Manager">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isManager}" /> 
         </p:column>
 
-        <p:column headerText="Principal Investigator">
+        <p:column sortBy="#{!experimentUserObject.isPI}" headerText="Principal Investigator">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isPI}" />  
         </p:column>
 
-        <p:column headerText="User">
+        <p:column sortBy="#{!experimentUserObject.isUser}" headerText="User">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isUser}" />   
         </p:column>
 
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
index b75e01aa..fab31128 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
@@ -54,7 +54,9 @@
         
         <p:column headerText="Actions" >
             <div class="actionLink">
-                <p:commandLink action="#{userInfoController.prepareView(userInfoObject)}" styleClass="ui-icon ui-icon-info" title="View"/>
+                <p:commandLink action="#{userInfoController.prepareView(userInfoObject)}" styleClass="ui-icon ui-icon-info" title="View">
+                    <f:setPropertyActionListener value="#{userInfoObject}" target="#{userInfoController.current}"/>
+                </p:commandLink>
                 <p:commandLink action="#{userInfoController.prepareEdit(userInfoObject)}" rendered="#{loginController.admin}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
                 <p:commandLink oncomplete="PF('userInfoDestroyDialogWidget').show()" rendered="#{loginController.admin}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
                     <f:setPropertyActionListener value="#{userInfoObject}" target="#{userInfoController.current}"/>
diff --git a/src/java/DmWebPortal/web/views/userInfo/view.xhtml b/src/java/DmWebPortal/web/views/userInfo/view.xhtml
index 50f39a1e..5847bc78 100644
--- a/src/java/DmWebPortal/web/views/userInfo/view.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/view.xhtml
@@ -11,7 +11,7 @@
     <ui:define name="middleCenter">
         <h:form id="viewUserInfoForm">
             <div class="pageTitle">
-                <h1>User Details</h1>
+                <h1>User #{userInfoController.current.username}</h1>
             </div>
 
             <ui:param name="userInfoObject" value="#{userInfoController.current}"/>
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml
index f23059ab..652683ec 100644
--- a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml
+++ b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml
@@ -19,10 +19,12 @@
                 <p:commandButton id="systemRoleAddButton" value="Add" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{loginController.admin}" icon="ui-icon-plus" >
                     <p:tooltip for="systemRoleAddButton" value="Add new Administrators."/>
                 </p:commandButton>
-                
+
                 <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>
+                <p:commandButton id="#{entityTypeName}NoOp" style="visibility:hidden" value="NoOp"/>
+                <p:defaultCommand target="#{entityTypeName}NoOp"/>
             </div>
 
             <h:panelGroup>  
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
index 033d51d1..df7c4fd9 100644
--- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
@@ -13,12 +13,13 @@
     <p:dialog id="adminAddDialog" 
               header="Add Administrators" widgetVar="systemRoleAddDialogWidget" dynamic="true" styleClass="dialog" width="800">
         
-            <div class="actionButton">
-                <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>
-        
+        <div class="actionButton">
+            <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>
+        <p:commandButton id="systemRoleNoOp" style="visibility:hidden" value="SNoOp"/>
+        </div>
+
         <div>
          <p:dataTable id="addSystemRoleList"                              
                  var="adminUser" 
-- 
GitLab