From 30aadc4365f4c5c72731d63c59b5d94be431cf34 Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Wed, 25 Feb 2015 19:28:21 +0000
Subject: [PATCH]

---
 .../controllers/ExperimentController.java     | 170 ++----------------
 .../controllers/ExperimentTypeController.java |   5 +
 .../controllers/RoleTypeController.java       |   7 +-
 .../controllers/UserInfoController.java       |   5 +
 .../controllers/UserSystemRoleController.java |  25 +--
 .../dm/portal/model/entities/Experiment.java  |  10 --
 .../dm/portal/model/entities/UserInfo.java    |  21 +++
 .../web/views/experiment/edit.xhtml           |   2 +-
 .../experiment/experimentListDataTable.xhtml  |   2 +-
 .../experimentPoliciesViewListDataTable.xhtml |   2 +-
 .../experiment/experimentUserAddDialog.xhtml  |  12 +-
 .../experimentUsersEditDataTable.xhtml        |  13 +-
 .../experimentUsersListDataTable.xhtml        |  13 +-
 .../web/views/experiment/view.xhtml           |   2 +-
 .../experimentTypeListDataTable.xhtml         |   2 +-
 .../roleType/roleTypeListDataTable.xhtml      |   2 +-
 .../userExperimentsListDataTable.xhtml        |   2 +-
 .../userInfo/userInfoCreatePanelGrid.xhtml    |   6 +
 .../userInfo/userInfoEditPanelGrid.xhtml      |   9 +-
 .../userInfo/userInfoListDataTable.xhtml      |  23 ++-
 .../userInfo/userInfoViewPanelGrid.xhtml      |  11 +-
 .../userSystemRole/systemRoleAddDialog.xhtml  |   9 +-
 .../systemRoleListDataTable.xhtml             |   9 +-
 23 files changed, 151 insertions(+), 211 deletions(-)

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 13aaba33..71ace99c 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
@@ -13,7 +13,6 @@ import gov.anl.aps.dm.portal.model.beans.PolicyTypeFacade;
 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;
-import gov.anl.aps.dm.portal.model.entities.AllowedPolicyValue;
 import gov.anl.aps.dm.portal.model.entities.CloneableEntity;
 import gov.anl.aps.dm.portal.model.entities.ExperimentPolicy;
 import gov.anl.aps.dm.portal.model.entities.PolicyType;
@@ -51,49 +50,10 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
 
     @EJB
     private RoleTypeFacade roleTypeFacade;
-    
-    @EJB
-    private PolicyTypeFacade policyTypeFacade;
-    
-    @EJB
-    private AllowedPolicyValueFacade allowedPolicyValueFacade;
-    
+        
     @EJB
     private UserExperimentRoleFacade userExperimentRoleFacade;
-    
-    public class ExperimentPolicyType extends CloneableEntity {
-        PolicyType type;
-        private ExperimentPolicy policy;
         
-        public ExperimentPolicyType(PolicyType type) {
-            this.type= type;
-        }
-
-        public ExperimentPolicy getPolicy() {
-            return policy;
-        }
-
-        public void setPolicy(ExperimentPolicy policy) {
-            this.policy = policy;
-        }
-        
-        public PolicyType getPolicyType() {
-            return type;
-        }
-        
-        public ExperimentPolicy getPolicyValue() {
-            return policy;
-        }
-        
-        public String getPolicyName() {
-            if (policy == null) {
-                return "none";
-            }
-            return policy.getPolicyValue();
-        }
-
-    }
-    
     public class ExperimentUser extends CloneableEntity {
 
         String name;
@@ -107,9 +67,18 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             this.user = user;
         }
         
+        public String getBadge() {
+            return user.getBadge();
+        }
+        
         public UserInfo getUser() {
             return user;
         }
+        
+                
+        public String getGlobusUsername() {
+            return user.getGlobusUsername();
+        }
 
         public String getUsername() {
             return user.getUsername();
@@ -170,66 +139,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
-    @SessionScoped
-    class ExperimentPoliciesTable extends DataTableController<ExperimentPolicy> {
-
-        @Override
-        public String getClassName() {
-            return "ExperimentPolicy";
-        }
-
-        @Override
-        public List<ExperimentPolicy> findAll() {
-            return getCurrent().getExperimentPolicyList();
-        }
-        
-        @Override
-        public String getTableName() {
-            return "experimentPoliciesTable";
-        }
-    }
-
-    @SessionScoped
-    class ExperimentPoliciesTypeTable extends DataTableController<ExperimentPolicyType> {
-
-        @Override
-        public String getClassName() {
-            return "ExperimentPolicyType";
-        }
-
-        @Override
-        public List<ExperimentPolicyType> findAll() {
-            if (!initialized) {
-                initializeTables();
-            }
-            Collection<PolicyType> list = policies.keySet();
-            return convertExperimentPolicyTypes(list);
-        }
-        
-        List<ExperimentPolicyType> convertExperimentPolicyTypes(Collection<PolicyType> list) {
-            List<ExperimentPolicyType> newList = new ArrayList<>();
-            ExperimentPolicyType experimentPolicyType;
-            ExperimentPolicy policy;
-            for (PolicyType type : list) {
-                experimentPolicyType = new ExperimentPolicyType(type);
-                newList.add(experimentPolicyType);
-
-//                policy = getCurrent().getPolicyForType(type);
-//                experimentPolicyType.setPolicy(policy);
-
-                policy = getCurrent().getPolicyForType(type.getId());
-                experimentPolicyType.setPolicy(policy);
-
-            }
-            return newList;
-        }
-        
-        @Override
-        public String getTableName() {
-            return "experimentPoliciesTable";
-        }
-    }
-
     @SessionScoped
     class ExperimentUsersTable extends DataTableController<ExperimentUser> {
 
@@ -290,15 +199,14 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
     
+    private int rows = 25;
+
     private ExperimentController.ExperimentUsersTable experimentUsersListTable = new ExperimentController.ExperimentUsersTable();
     private ExperimentController.ExperimentUsersTable experimentUsersEditTable = new ExperimentController.ExperimentUsersTable();
     private ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable();
-    private ExperimentController.ExperimentPoliciesTable experimentPoliciesTable = new ExperimentPoliciesTable();
-    private ExperimentController.ExperimentPoliciesTypeTable experimentPoliciesTypeTable = new ExperimentPoliciesTypeTable();
 
     final private Map<UserInfo, ExperimentUser> experimentUsers = new HashMap<>();
     final private Map<String, RoleType> experimentRoles = new HashMap<>();
-    final private Map<PolicyType, List<AllowedPolicyValue>> policies = new HashMap<>();
     int maxExperimentRoleTypeId = 0;
     boolean initialized = false;
 
@@ -308,6 +216,10 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         this.noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable();
     }
 
+    public int getRows() {
+        return rows;
+    }
+    
     @Override
     protected ExperimentFacade getFacade() {
         return experimentFacade;
@@ -319,13 +231,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         if (!initialized) {
             initializeTables();
         }
-        for (PolicyType policyType : policies.keySet()) {
-            ExperimentPolicy experimentPolicy = new ExperimentPolicy();
-            experimentPolicy.setExperiment(newExperiment);
-            experimentPolicy.setPolicyType(policyType);
-//            experimentPolicy.setPolicyValue(policyType.getDefaultPolicyValue());
-            newExperiment.getExperimentPolicyList().add(experimentPolicy);
-        }
         return newExperiment;
     }
 
@@ -366,13 +271,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
                 }
             }
         }
-        for (PolicyType policyType : policyTypeFacade.findAll()) {
-            List<AllowedPolicyValue> list = new ArrayList<>();
-            for (AllowedPolicyValue allowedPolicyValue : (List<AllowedPolicyValue>) allowedPolicyValueFacade.findByPolicyType(policyType.getId())) {
-                list.add(allowedPolicyValue);
-            }
-            policies.put(policyType, list);
-        }
         initialized = true;
     }
 
@@ -425,7 +323,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         experimentUsersEditTable.resetList();
         experimentUsers.clear();
         noExperimentUsersTypeTable.resetList();
-        experimentPoliciesTable.resetList();
     }
     
     public ExperimentController.ExperimentUsersTable getExperimentUsersListTable() {
@@ -451,40 +348,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
     public void setNoExperimentUsersTypeTable(ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable) {
         this.noExperimentUsersTypeTable = noExperimentUsersTypeTable;
     }
-        
-    public ExperimentPoliciesTable getExperimentPoliciesTable() {
-        return experimentPoliciesTable;
-    }
-
-    public void setExperimentPoliciesTable(ExperimentPoliciesTable experimentPoliciesTable) {
-        this.experimentPoliciesTable = experimentPoliciesTable;
-    }
-
-    public ExperimentPoliciesTypeTable getExperimentPoliciesTypeTable() {
-        return experimentPoliciesTypeTable;
-    }
-
-    public void setExperimentPoliciesTypeTable(ExperimentPoliciesTypeTable experimentPoliciesTypeTable) {
-        this.experimentPoliciesTypeTable = experimentPoliciesTypeTable;
-    }
-    
-    public List<AllowedPolicyValue> getAllowedPolicies(PolicyType policyType) {
-        return policies.get(policyType);
-    }
-    
-    public List<String> getPoliciesNamesForType(int id) {
-        for (PolicyType type : policies.keySet()) {
-            if (type.getId() == id) {
-                List<String> values = new ArrayList<>();
-                for (AllowedPolicyValue policy : policies.get(type) ) {
-                    values.add(policy.getName());
-                }
-                return values;
-            }
-        }
-        return null;
-    }
-         
+                 
     public void updateRemovedExperimentRoles() {
         UserExperimentRole userExperimentRole;
         for (UserInfo user : experimentUsers.keySet()) {
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 b036a0d0..ec293074 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
@@ -22,12 +22,17 @@ public class ExperimentTypeController extends CrudEntityController<ExperimentTyp
 {
 
     private static final Logger logger = Logger.getLogger(ExperimentTypeController.class.getName());
+    private int rows = 25;
 
     @EJB
     private ExperimentTypeFacade experimentTypeFacade;
 
     public ExperimentTypeController() {
     }
+    
+    public int getRows() {
+        return rows;
+    }
 
     @Override
     protected ExperimentTypeFacade getFacade() {
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 49160828..acf3f419 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
@@ -20,13 +20,18 @@ import org.apache.log4j.Logger;
 public class RoleTypeController extends CrudEntityController<RoleType, RoleTypeFacade>
 {
     private static final Logger logger = Logger.getLogger(RoleTypeController.class.getName());
+    private int rows = 25;
 
     @EJB
     private RoleTypeFacade roleTypeFacade;
 
     public RoleTypeController() {
     }
-
+    
+    public int getRows() {
+        return rows;
+    }
+ 
     @Override
     protected RoleTypeFacade getFacade() {
         return roleTypeFacade;
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 6f06d295..19c7335a 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
@@ -31,6 +31,7 @@ import org.apache.log4j.Logger;
 public class UserInfoController extends CrudEntityController<UserInfo, UserInfoFacade> {
 
     private static final Logger logger = Logger.getLogger(UserInfoController.class.getName());
+    private int rows = 25;
 
     @EJB
     private UserInfoFacade userInfoFacade;
@@ -155,6 +156,10 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
 
     public UserInfoController() {
     }
+    
+    public int getRows() {
+        return rows;
+    }
 
     private void initializeRoleTypes() {
         List<RoleType> roleTypesList = roleTypeFacade.findAll();
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 4b31dcdb..07e0893e 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
@@ -29,11 +29,10 @@ public class UserSystemRoleController  implements Serializable
     @EJB
     private RoleTypeFacade roleTypeFacade;
     
-    int ADMIN_ROLE_ID = 1;
+    private int rows = 25;
 
     class SystemRoleTypeTable extends DataTableController<UserInfo> {
-
-        @Override
+       @Override
         public String getClassName() {
             return "UserInfo";
         }
@@ -69,7 +68,11 @@ public class UserSystemRoleController  implements Serializable
         this.noSystemRoleTable = new NoSystemRoleTypeTable();
     }
 
-   public RoleType getSystemRole() {
+    public int getRows() {
+        return rows;
+    }
+
+    public RoleType getSystemRole() {
         return systemRole;
     }
 
@@ -108,20 +111,6 @@ public class UserSystemRoleController  implements Serializable
         noSystemRoleTable.resetList();
     }
      
-   public String displayRole(String user) {
-       // for now this method returns "Administrator" if user has this role, and "User" otherwise
-        RoleType rt = roleTypeFacade.findById(ADMIN_ROLE_ID);
-        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/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java
index 6d63ee0f..cfcb6c56 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/Experiment.java
@@ -161,16 +161,6 @@ public class Experiment extends CloneableEntity
         this.experimentType = experimentType;
     }
     
-
-//    public ExperimentPolicy getPolicyForType(PolicyType type) {
-//        for (ExperimentPolicy experimentPolicy : experimentPolicyList) {
-//            if (experimentPolicy.getPolicyType().getId() == type.getId()) {
-//                return experimentPolicy;
-//            }
-//        }
-//        return null;
-//    }
-
     public ExperimentPolicy getPolicyForType(int typeId) {
         for (ExperimentPolicy experimentPolicy : experimentPolicyList) {
             if (experimentPolicy.getPolicyType().getId() == typeId) {
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
index 62e35b2a..4be19e85 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java
@@ -78,6 +78,12 @@ public class UserInfo extends CloneableEntity
     @Column(name = "email")
     private String email;
     @Size(max = 120)
+    @Column(name = "badge")
+    private String badge;
+    @Size(max = 120)
+    @Column(name = "globus_username")
+    private String globusUsername;
+    @Size(max = 120)
     @Column(name = "description")
     private String description;
     @Size(max = 64)
@@ -152,6 +158,21 @@ public class UserInfo extends CloneableEntity
     public void setEmail(String email) {
         this.email = email;
     }
+      public String getBadge() {
+        return badge;
+    }
+
+    public void setBadge(String badge) {
+        this.badge = badge;
+    }
+  
+    public String getGlobusUsername() {
+        return globusUsername;
+    }
+
+    public void setGlobusUsername(String globusUsername) {
+        this.globusUsername = globusUsername;
+    }    
 
     public String getDescription() {
         return description;
diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
index 78360f86..76c786d9 100644
--- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
@@ -28,7 +28,7 @@
                 </p:tab>
                 
                 <p:tab title="Experiment Policies">
-                    <ui:include src="experimentPoliciesEditSelection.xhtml"/>
+                   
                 </p:tab>
 
                 <p:tab title="Experiment Users" id="usersTab">                
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
index 8d0f1c73..a62946a8 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
@@ -13,7 +13,7 @@
                  filteredValue="#{experimentController.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{experimentController.rows}"
                  binding="#{experimentController.listDataTable}"
                  widgetVar="experimentListWidget" 
                  emptyMessage="No experiments found.">
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentPoliciesViewListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentPoliciesViewListDataTable.xhtml
index 11b15a23..8df31705 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentPoliciesViewListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentPoliciesViewListDataTable.xhtml
@@ -14,7 +14,7 @@
                  filteredValue="#{experimentController.experimentPoliciesTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{experimentController.rows}"
                  binding="#{experimentController.experimentPoliciesTable.listDataTable}"
                  widgetVar="policyListWidget" 
                  emptyMessage="No policies found.">
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml
index bc486eac..c803e0f7 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUserAddDialog.xhtml
@@ -26,7 +26,7 @@
                  filteredValue="#{experimentController.noExperimentUsersTypeTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{experimentController.rows}"
                  binding="#{experimentController.noExperimentUsersTypeTable.listDataTable}"
                  selection="#{experimentController.noExperimentUsersTypeTable.selectedObjectList}"
                  rowKey="#{experimentUser.username}"
@@ -35,6 +35,11 @@
                  rowSelectMode="true"
                  selectionMode="multiple" >
 
+             <p:column sortBy="#{experimentUser.badge}" headerText="Badge" 
+                       filterBy="#{experimentUser.badge}" filterMatchMode="contains" >
+                 <h:outputText value="#{experimentUser.badge}"/>
+             </p:column>   
+
             <p:column sortBy="#{experimentUser.username}" headerText="Username" 
                       filterBy="#{experimentUser.username}" filterMatchMode="contains" >
                 <h:outputText value="#{experimentUser.username}"/>
@@ -55,6 +60,11 @@
                 <h:outputText value="#{experimentUser.email}"/>
             </p:column>
 
+            <p:column sortBy="#{experimentUser.globusUsername}" headerText="Globus Username" 
+                      filterBy="#{experimentUser.globusUsername}" filterMatchMode="contains" >
+                <h:outputText value="#{experimentUser.globusUsername}"/>
+            </p:column>
+
             <f:facet name="footer">
                 <p:commandButton value="Add" action="#{experimentController.addExperimentUser()}" oncomplete="PF('experimentUserAddDialogWidget').hide()" update="@form"/>
                 <p:commandButton value="Clear Selection" onclick="PF('experimentUserAddTableWidgetVar').unselectAllRows()" />
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
index 4b01e585..bb3df1cd 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
@@ -7,7 +7,6 @@
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
 
 
-
     <ui:include src="experimentUserAddDialog.xhtml" />
 
     <ui:param name="isAdmin" value="#{loginController.admin}" />
@@ -29,7 +28,7 @@
                  filteredValue="#{experimentController.experimentUsersEditTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="8"
+                 rows="#{experimentController.rows}"
                  binding="#{experimentController.experimentUsersEditTable.listDataTable}"
                  widgetVar="experimentUsersEditWidget" 
                  emptyMessage="No users found.">
@@ -37,6 +36,11 @@
         <ui:param name="isManager" value="#{experimentController.canAddManager()}" />
         <ui:param name="isPi" value="#{experimentController.canAddPiAndUser()}" />
 
+        <p:column sortBy="#{experimentUserObject.badge}" headerText="Badge"
+                  filterBy="#{experimentUserObject.badge}" filterMatchMode="contains" >
+            <h:outputText value="#{experimentUserObject.badge}"/>
+        </p:column> 
+
         <p:column sortBy="#{experimentUserObject.username}" headerText="Username"
                   filterBy="#{experimentUserObject.username}" filterMatchMode="contains" >
             <h:outputText value="#{experimentUserObject.username}"/>
@@ -47,6 +51,11 @@
             <h:outputText value="#{experimentUserObject.name}"/>
         </p:column>                  
 
+        <p:column sortBy="#{experimentUserObject.globusUsername}" headerText="Globus Username"
+                  filterBy="#{experimentUserObject.globusUsername}" filterMatchMode="contains" >
+            <h:outputText value="#{experimentUserObject.globusUsername}"/>
+        </p:column>
+        
         <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" />  
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
index b17657ad..eda467d9 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml
@@ -18,11 +18,16 @@
                  filteredValue="#{experimentController.experimentUsersListTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{experimentController.rows}"
                  binding="#{experimentController.experimentUsersListTable.listDataTable}"
                  widgetVar="experimentUsersListWidget" 
                  emptyMessage="No users found.">
 
+        <p:column sortBy="#{experimentUserObject.badge}" headerText="Badge"
+                  filterBy="#{experimentUserObject.badge}" filterMatchMode="contains" >
+            <h:outputText value="#{experimentUserObject.badge}"/>
+        </p:column>
+        
         <p:column sortBy="#{experimentUserObject.username}" headerText="Username"
                   filterBy="#{experimentUserObject.username}" filterMatchMode="contains" >
             <h:outputText value="#{experimentUserObject.username}"/>
@@ -33,7 +38,11 @@
             <h:outputText value="#{experimentUserObject.name}"/>
         </p:column>                  
 
-
+        <p:column sortBy="#{experimentUserObject.globusUsername}" headerText="Globus Username"
+                  filterBy="#{experimentUserObject.globusUsername}" filterMatchMode="contains" >
+            <h:outputText value="#{experimentUserObject.globusUsername}"/>
+        </p:column>
+        
         <p:column sortBy="#{!experimentUserObject.isManager}" headerText="Manager" >
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isManager}" /> 
         </p:column>
diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml
index aea85d98..ac0c9b29 100644
--- a/src/java/DmWebPortal/web/views/experiment/view.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml
@@ -24,7 +24,7 @@
                 </p:tab>
                 
                 <p:tab title="Experiment Policies">
-                    <ui:include src="experimentPoliciesViewListDataTable.xhtml"/>
+                    
                 </p:tab>
 
                 <p:tab title="Experiment Users">                
diff --git a/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml
index 626869df..40ebd188 100644
--- a/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experimentType/experimentTypeListDataTable.xhtml
@@ -13,7 +13,7 @@
                  filteredValue="#{experimentTypeController.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{experimentTypeController.rows}"
                  binding="#{experimentTypeController.listDataTable}"
                  widgetVar="experimentTypeListWidget" 
                  emptyMessage="No experiment types found.">
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
index 317b4027..9f8bf29f 100644
--- a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
@@ -13,7 +13,7 @@
                  filteredValue="#{roleTypeController.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{roleTypeController.rows}"
                  binding="#{roleTypeController.listDataTable}"
                  widgetVar="roleTypeListWidget" 
                  emptyMessage="No role types found." >
diff --git a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
index bdf04952..aa87e3ba 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
@@ -19,7 +19,7 @@
                  filteredValue="#{userInfoController.userExperimentsListTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{userInfoController.rows}"
                  binding="#{userInfoController.userExperimentsListTable.listDataTable}"
                  widgetVar="userExperimentsListWidget" 
                  emptyMessage="No experiments found.">
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoCreatePanelGrid.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoCreatePanelGrid.xhtml
index 242e049a..c996ae2b 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoCreatePanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoCreatePanelGrid.xhtml
@@ -9,6 +9,9 @@
 
     <p:panelGrid columns="2" styleClass="createEntityDetails">
 
+        <h:outputLabel for="badge" value="Badge" styleClass="entityDataEmphasizedLabel"/>
+        <h:inputText id="badge" value="#{userInfoObject.badge}" title="Badge" styleClass="entityDataEmphasizedText"/>
+                     
         <h:outputLabel for="username" value="Username" styleClass="entityDataEmphasizedLabel"/>
         <h:inputText id="username" value="#{userInfoObject.username}" title="Username" styleClass="entityDataEmphasizedText"/>
 
@@ -26,6 +29,9 @@
 
         <h:outputLabel for="password" value="Password" styleClass="entityDataLabel"/>
         <p:password id="password" value="#{userInfoObject.password}" title="Password" feedback="true" styleClass="entityDataText"/>
+        
+        <h:outputLabel for="globusUsername" value="Globus Username" styleClass="entityDataEmphasizedLabel"/>
+        <h:inputText id="globusUsername" value="#{userInfoObject.globusUsername}" title="Globus Username" styleClass="entityDataEmphasizedText"/>
 
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:inputText id="description" value="#{userInfoObject.description}" title="Description" styleClass="entityDataText"/>        
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml
index 6b6c56ba..ac51c316 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoEditPanelGrid.xhtml
@@ -10,6 +10,10 @@
 
     <p:panelGrid columns="2" styleClass="editEntityDetails"> 
 
+        
+        <h:outputLabel for="badge" value="Badge" styleClass="entityDataEmphasizedLabel"/>
+        <h:inputText id="badge" value="#{userInfoObject.badge}" title="Badge" styleClass="entityDataEmphasizedText"/>
+
         <h:outputLabel for="username" value="Username" styleClass="entityDataEmphasizedLabel"/>
         <h:inputText id="username" value="#{userInfoObject.username}" rendered="#{isFieldWriteable}" title="Username" styleClass="entityDataEmphasizedText"/>
         <h:outputText id="usernameOutput" value="#{userInfoObject.username}" rendered="#{!isFieldWriteable}" title="Username" styleClass="entityDataEmphasizedText"/>
@@ -31,7 +35,10 @@
 
         <h:outputLabel for="password" value="Password" styleClass="entityDataLabel"/>
         <p:password id="password" value="#{userInfoController.passwordEntry}" title="Password" feedback="true" styleClass="entityDataText"/>
-
+        
+        <h:outputLabel for="globusUsername" value="Globus Username" styleClass="entityDataEmphasizedLabel"/>
+        <h:inputText id="globusUsername" value="#{userInfoObject.globusUsername}" title="Globus Username" styleClass="entityDataEmphasizedText"/>
+        
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:inputText id="description" value="#{userInfoObject.description}" title="Description" styleClass="entityDataText"/>     
         
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
index fab31128..cffa1266 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoListDataTable.xhtml
@@ -13,7 +13,7 @@
                  filteredValue="#{userInfoController.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{userInfoController.rows}"
                  binding="#{userInfoController.listDataTable}"
                  widgetVar="userInfoListWidget" 
                  emptyMessage="No users found.">
@@ -21,7 +21,12 @@
         <p:column sortBy="#{userInfoObject.id}" headerText="Id" >
             <h:outputText value="#{userInfoObject.id}"/>
         </p:column>
-
+ 
+        <p:column sortBy="#{userInfoObject.badge}" headerText="ANL Badge" 
+                  filterBy="#{userInfoObject.badge}" filterMatchMode="contains" >
+            <h:outputText value="#{userInfoObject.badge}"/>
+        </p:column>
+        
         <p:column sortBy="#{userInfoObject.username}" headerText="Username" 
                   filterBy="#{userInfoObject.username}" filterMatchMode="contains" >
             <h:outputText value="#{userInfoObject.username}"/>
@@ -32,14 +37,9 @@
             <h:outputText value="#{userInfoObject.lastName}"/>
         </p:column>                  
 
-        <p:column sortBy="#{userInfoObject.firstName}" headerText="First Name" 
+        <p:column sortBy="#{userInfoObject.firstName}" headerText="First, middle Name" 
                   filterBy="#{userInfoObject.firstName}" filterMatchMode="contains" >
-            <h:outputText value="#{userInfoObject.firstName}"/>
-        </p:column> 
-
-        <p:column sortBy="#{userInfoObject.middleName}" rendered="false" headerText="Middle Name" 
-                  filterBy="#{userInfoObject.middleName}" filterMatchMode="contains">
-            <h:outputText value="#{userInfoObject.middleName}"/>
+            <h:outputText value="#{userInfoObject.firstName}, #{userInfoObject.middleName}"/>
         </p:column> 
 
         <p:column sortBy="#{userInfoObject.email}" headerText="Email" 
@@ -47,6 +47,11 @@
             <h:outputText value="#{userInfoObject.email}"/>
         </p:column>
 
+               <p:column sortBy="#{userInfoObject.globusUsername}" headerText="Globus username" 
+                  filterBy="#{userInfoObject.globusUsername}" filterMatchMode="contains">
+            <h:outputText value="#{userInfoObject.globusUsername}"/>
+        </p:column>
+        
         <p:column sortBy="#{userInfoObject.description}" headerText="Description" 
                   filterBy="#{userInfoObject.description}" filterMatchMode="contains">
             <h:outputText value="#{userInfoObject.description}"/>
diff --git a/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml b/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml
index 06d76ff1..44b80ecd 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userInfoViewPanelGrid.xhtml
@@ -6,9 +6,11 @@
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
 
     <ui:param name="userInfoObject" value="#{userInfoController.selected}"/>
-
     <p:panelGrid columns="2" styleClass="viewEntityDetails">
-
+        
+        <h:outputLabel for="badge" value="Badge" styleClass="entityDataEmphasizedLabel"/>
+        <h:outputText id="badge" value="#{userInfoObject.badge}" title="Badge" styleClass="entityDataEmphasizedText"/>
+        
         <h:outputLabel for="username" value="Username" styleClass="entityDataEmphasizedLabel"/>
         <h:outputText id="username" value="#{userInfoObject.username}" title="Username" styleClass="entityDataEmphasizedText"/>
 
@@ -23,7 +25,10 @@
 
         <h:outputLabel for="email" value="Email" styleClass="entityDataLabel"/>
         <h:outputText id="email" value="#{userInfoObject.email}" title="Email" styleClass="entityDataText"/>
-
+        
+        <h:outputLabel for="uglobusUsername" value="Globus Username" styleClass="entityDataEmphasizedLabel"/>
+        <h:outputText id="globusUsername" value="#{userInfoObject.globusUsername}" title="Globus Username" styleClass="entityDataEmphasizedText"/>
+        
         <h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
         <h:outputText id="description" value="#{userInfoObject.description}" title="Description" styleClass="entityDataText"/>
         
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
index df7c4fd9..2ca501e0 100644
--- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleAddDialog.xhtml
@@ -27,7 +27,7 @@
                  filteredValue="#{userSystemRoleController.noSystemRoleTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{userSystemRoleController.rows}"
                  binding="#{userSystemRoleController.noSystemRoleTable.listDataTable}"
                  selection="#{userSystemRoleController.noSystemRoleTable.selectedObjectList}"
                  rowKey="#{adminUser.username}"
@@ -35,7 +35,12 @@
                  emptyMessage="No users to add."
                  rowSelectMode="true"
                  selectionMode="multiple" >
-
+        
+        <p:column sortBy="#{systemUserObject.badge}" headerText="ANL badge" 
+                  filterBy="#{systemUserObject.badge}" filterMatchMode="contains" >
+            <h:outputText value="#{systemUserObject.badge}"/>
+        </p:column>
+             
             <p:column sortBy="#{adminUser.username}" headerText="Username" 
                       filterBy="#{adminUser.username}" filterMatchMode="contains" >
                 <h:outputText value="#{adminUser.username}"/>
diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
index 1312040b..88a49ca7 100644
--- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml
@@ -13,7 +13,7 @@
                  filteredValue="#{userSystemRoleController.systemRoleTable.filteredObjectList}"
                  paginator="true" 
                  paginatorAlwaysVisible="false" 
-                 rows="25"
+                 rows="#{userSystemRoleController.rows}"
                  binding="#{userSystemRoleController.systemRoleTable.listDataTable}"
                  widgetVar="systemRoleListWidget" 
                  emptyMessage="No users found."
@@ -22,7 +22,12 @@
         <p:column sortBy="#{systemUserObject.id}" headerText="Id" >
             <h:outputText value="#{systemUserObject.id}"/>
         </p:column>
-
+        
+        <p:column sortBy="#{systemUserObject.badge}" headerText="ANL badge" 
+                  filterBy="#{systemUserObject.badge}" filterMatchMode="contains" >
+            <h:outputText value="#{systemUserObject.badge}"/>
+        </p:column>
+        
         <p:column sortBy="#{systemUserObject.username}" headerText="Username" 
                   filterBy="#{systemUserObject.username}" filterMatchMode="contains" >
             <h:outputText value="#{systemUserObject.username}"/>
-- 
GitLab