From 63e554f2f00d78a42750990a01e12ed0c8f766c9 Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Wed, 18 Feb 2015 22:27:33 +0000
Subject: [PATCH]

---
 .../controllers/ExperimentController.java     | 40 +++++++++++++++----
 .../portal/controllers/LoginController.java   |  1 -
 .../controllers/PolicyTypeController.java     | 12 +++---
 .../controllers/UserInfoController.java       |  3 +-
 .../model/entities/AllowedPolicyValue.java    |  5 +--
 .../dm/portal/model/entities/DataFolder.java  |  5 +--
 .../model/entities/DataFolderPermission.java  |  5 +--
 .../dm/portal/model/entities/Experiment.java  | 16 ++++++--
 .../model/entities/ExperimentPolicy.java      |  6 +--
 .../portal/model/entities/ExperimentType.java |  5 +--
 .../dm/portal/model/entities/PolicyType.java  | 17 ++++----
 .../dm/portal/model/entities/RoleType.java    |  5 +--
 .../dm/portal/model/entities/SettingType.java |  5 +--
 .../portal/model/entities/TemplatePolicy.java |  5 +--
 .../model/entities/TemplatePolicySet.java     |  5 +--
 .../model/entities/UserExperimentRole.java    |  5 +--
 .../model/entities/UserExperimentRolePK.java  |  5 +--
 .../dm/portal/model/entities/UserInfo.java    |  5 +--
 .../dm/portal/model/entities/UserSetting.java |  5 +--
 src/java/DmWebPortal/web/WEB-INF/web.xml      |  4 ++
 .../resources/js/common/forwardFromHome.js    |  1 +
 .../web/templates/dmViewTemplate.xhtml        |  7 ++--
 .../web/views/experiment/edit.xhtml           |  9 +++--
 .../experiment/experimentListDataTable.xhtml  |  4 +-
 .../experimentPoliciesEditSelection.xhtml     | 12 ------
 src/java/DmWebPortal/web/views/home.xhtml     |  9 +++--
 .../userExperimentsListDataTable.xhtml        |  6 +--
 27 files changed, 99 insertions(+), 108 deletions(-)
 create mode 100644 src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js

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 721359a0..13aaba33 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
@@ -170,6 +170,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class ExperimentPoliciesTable extends DataTableController<ExperimentPolicy> {
 
         @Override
@@ -188,6 +189,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class ExperimentPoliciesTypeTable extends DataTableController<ExperimentPolicyType> {
 
         @Override
@@ -211,8 +213,13 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             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;
         }
@@ -223,6 +230,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class ExperimentUsersTable extends DataTableController<ExperimentUser> {
 
         @Override
@@ -262,6 +270,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
 
+    @SessionScoped
     class NoExperimentUsersTypeTable extends DataTableController<UserInfo> {
 
         @Override
@@ -314,7 +323,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             ExperimentPolicy experimentPolicy = new ExperimentPolicy();
             experimentPolicy.setExperiment(newExperiment);
             experimentPolicy.setPolicyType(policyType);
-            experimentPolicy.setPolicyValue(policyType.getDefaultPolicyValue());
+//            experimentPolicy.setPolicyValue(policyType.getDefaultPolicyValue());
             newExperiment.getExperimentPolicyList().add(experimentPolicy);
         }
         return newExperiment;
@@ -578,34 +587,49 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
     }
     
-    public boolean canEditExperiment(int experimentId) {
+    public boolean canEditExperiment(Experiment experiment) {
+        UserInfo logged = (UserInfo) SessionUtility.getUser();
+        if (logged == null) {
+            return false;
+        }
+        if (experiment == null) {
+            return false;
+        }
         if (!initialized) {
             initializeTables();
         }
         // user that is Manager or PI can edit experiment
         int managerRoleId = experimentRoles.get(RoleTypeName.MANAGER).getId();
         int piRoleId = experimentRoles.get(RoleTypeName.PI).getId();
-        UserInfo logged = (UserInfo) SessionUtility.getUser();
-        return (logged.getExperimetRole(managerRoleId, experimentId) != null) || (logged.getExperimetRole(piRoleId, experimentId) != null);
+        return (logged.getExperimetRole(managerRoleId, experiment.getId()) != null) || (logged.getExperimetRole(piRoleId, experiment.getId()) != null);
     }
     
     public boolean isRestricted() {
+        UserInfo logged = (UserInfo) SessionUtility.getUser();
+        if (logged == null) {
+            return false;
+        }
         if (current == null) {
             return true;
         }
         int managerRoleId = experimentRoles.get(RoleTypeName.MANAGER).getId();
         int piRoleId = experimentRoles.get(RoleTypeName.PI).getId();
-        UserInfo logged = (UserInfo) SessionUtility.getUser();
         return (logged.getExperimetRole(managerRoleId, current.getId()) == null) && (logged.getExperimetRole(piRoleId, current.getId()) == null);
     }
     
-    public boolean canDeleteExperiment(int experimentId) {
+    public boolean canDeleteExperiment(Experiment experiment) {
+        UserInfo logged = (UserInfo) SessionUtility.getUser();
+        if (logged == null) {
+            return false;
+        }
+        if (experiment == null) {
+            return false;
+        }
         if (!initialized) {
             initializeTables();
         }
         int managerRoleId = experimentRoles.get(RoleTypeName.MANAGER).getId();
-        UserInfo logged = (UserInfo) SessionUtility.getUser();
-        return logged.getExperimetRole(managerRoleId, experimentId) != null;
+        return logged.getExperimetRole(managerRoleId, experiment.getId()) != null;
     }
     
     public boolean canAddManager() {
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 37e692f0..2376ba0c 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
@@ -8,7 +8,6 @@ package gov.anl.aps.dm.portal.controllers;
 import gov.anl.aps.dm.portal.constants.RoleTypeName;
 import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade;
 import gov.anl.aps.dm.portal.model.beans.UserInfoFacade;
-import gov.anl.aps.dm.portal.model.entities.RoleType;
 import gov.anl.aps.dm.portal.model.entities.UserInfo;
 import gov.anl.aps.dm.portal.utilities.LdapUtility;
 import gov.anl.aps.dm.portal.utilities.SessionUtility;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java
index d29170cd..7e7600d7 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/PolicyTypeController.java
@@ -74,12 +74,12 @@ public class PolicyTypeController extends CrudEntityController<PolicyType, Polic
         logger.debug("Inserting new experiment type " + policyType.getName());
     }
 
-    @Override
-    public void prepareEntityUpdate(PolicyType policyType) throws DmPortalException {
-        if ((policyType.getName() == null) || (policyType.getName().length() == 0)) {
-            throw new MissingProperty("Name is missing.");
-        }
-    }
+//    @Override
+//    public void prepareEntityUpdate(PolicyType policyType) throws DmPortalException {
+//        if ((policyType.getName() == null) || (policyType.getName().length() == 0)) {
+//            throw new MissingProperty("Name is missing.");
+//        }
+//    }
     
       @Override
      protected String getObjectAlreadyExistMessage(PolicyType policyType)  {
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 8e3078a5..6f06d295 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
@@ -122,6 +122,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
             if (!initialized) {
                 initializeRoleTypes();
             }
+            userExperiments.clear();
             logger.debug("converting UserExperiments ");
             Collection<RoleType> roleTypes;
             roleTypes = experimentRoles.values();
@@ -136,7 +137,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF
                     experimentUser.setIsInRole(roleType, inRole);
                 }
             }
-            return new ArrayList<>(userExperiments);
+            return userExperiments;
         }
 
         @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java
index 06f757a8..76f89cbb 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/AllowedPolicyValue.java
@@ -112,10 +112,7 @@ public class AllowedPolicyValue extends CloneableEntity
             return false;
         }
         AllowedPolicyValue other = (AllowedPolicyValue) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java
index e03a57fb..185c99bc 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolder.java
@@ -152,10 +152,7 @@ public class DataFolder extends CloneableEntity
             return false;
         }
         DataFolder other = (DataFolder) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java
index 9fd9b0a5..410cbb63 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/DataFolderPermission.java
@@ -110,10 +110,7 @@ public class DataFolderPermission extends CloneableEntity
             return false;
         }
         DataFolderPermission other = (DataFolderPermission) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
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 0e2e2868..6d63ee0f 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,6 +161,16 @@ 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) {
@@ -170,6 +180,7 @@ public class Experiment extends CloneableEntity
         return null;
     }
 
+
     @Override
     public int hashCode() {
         int hash = 0;
@@ -184,10 +195,7 @@ public class Experiment extends CloneableEntity
             return false;
         }
         Experiment other = (Experiment) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java
index 48a38100..c60480a9 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentPolicy.java
@@ -17,7 +17,6 @@ import javax.persistence.ManyToOne;
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.Table;
-import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import javax.xml.bind.annotation.XmlRootElement;
 
@@ -120,10 +119,7 @@ public class ExperimentPolicy extends CloneableEntity
             return false;
         }
         ExperimentPolicy other = (ExperimentPolicy) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java
index a2ac97ff..dd204831 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/ExperimentType.java
@@ -124,10 +124,7 @@ public class ExperimentType extends CloneableEntity
             return false;
         }
         ExperimentType other = (ExperimentType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java
index 5183030e..a664fbf9 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/PolicyType.java
@@ -14,9 +14,12 @@ import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
@@ -56,8 +59,9 @@ public class PolicyType extends CloneableEntity
     @Column(name = "handler_name")
     private String handlerName;
     @Size(max = 2147483647)
-    @Column(name = "default_policy_value")
-    private String defaultPolicyValue;
+    @JoinColumn(name = "default_policy_value", referencedColumnName = "policy_value")
+    @OneToOne
+    private AllowedPolicyValue defaultPolicyValue;
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "policyType")
     private List<ExperimentPolicy> experimentPolicyList;
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "policyType")
@@ -109,11 +113,11 @@ public class PolicyType extends CloneableEntity
         this.handlerName = handlerName;
     }
 
-    public String getDefaultPolicyValue() {
+    public AllowedPolicyValue getDefaultPolicyValue() {
         return defaultPolicyValue;
     }
 
-    public void setDefaultPolicyValue(String defaultPolicyValue) {
+    public void setDefaultPolicyValue(AllowedPolicyValue defaultPolicyValue) {
         this.defaultPolicyValue = defaultPolicyValue;
     }
 
@@ -158,10 +162,7 @@ public class PolicyType extends CloneableEntity
             return false;
         }
         PolicyType other = (PolicyType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
index c0fed6b2..bf68b2dd 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/RoleType.java
@@ -164,10 +164,7 @@ public class RoleType extends CloneableEntity
             return false;
         }
         RoleType other = (RoleType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java
index 4c9d8465..ec9e90eb 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/SettingType.java
@@ -146,10 +146,7 @@ public class SettingType extends CloneableEntity
             return false;
         }
         SettingType other = (SettingType) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java
index 6e9757c9..e966180b 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicy.java
@@ -119,10 +119,7 @@ public class TemplatePolicy extends CloneableEntity
             return false;
         }
         TemplatePolicy other = (TemplatePolicy) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java
index 2baf67a8..55117db5 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/TemplatePolicySet.java
@@ -112,10 +112,7 @@ public class TemplatePolicySet extends CloneableEntity
             return false;
         }
         TemplatePolicySet other = (TemplatePolicySet) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java
index 93771878..58ea02bd 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRole.java
@@ -100,10 +100,7 @@ public class UserExperimentRole extends CloneableEntity
             return false;
         }
         UserExperimentRole other = (UserExperimentRole) object;
-        if ((this.userExperimentRolePK == null && other.userExperimentRolePK != null) || (this.userExperimentRolePK != null && !this.userExperimentRolePK.equals(other.userExperimentRolePK))) {
-            return false;
-        }
-        return true;
+        return (this.userExperimentRolePK != null || other.userExperimentRolePK == null) && (this.userExperimentRolePK == null || this.userExperimentRolePK.equals(other.userExperimentRolePK));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java
index 14efa81f..327c1ac1 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java
@@ -87,10 +87,7 @@ public class UserExperimentRolePK implements Serializable
         if (this.experimentId != other.experimentId) {
             return false;
         }
-        if (this.roleTypeId != other.roleTypeId) {
-            return false;
-        }
-        return true;
+        return this.roleTypeId == other.roleTypeId;
     }
 
     @Override
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 d1fc360a..62e35b2a 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
@@ -245,10 +245,7 @@ public class UserInfo extends CloneableEntity
             return false;
         }
         UserInfo other = (UserInfo) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java
index 7d539cba..e618cc19 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserSetting.java
@@ -101,10 +101,7 @@ public class UserSetting extends CloneableEntity
             return false;
         }
         UserSetting other = (UserSetting) object;
-        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
-            return false;
-        }
-        return true;
+        return (this.id != null || other.id == null) && (this.id == null || this.id.equals(other.id));
     }
 
     @Override
diff --git a/src/java/DmWebPortal/web/WEB-INF/web.xml b/src/java/DmWebPortal/web/WEB-INF/web.xml
index 5d426f41..086dcfb7 100644
--- a/src/java/DmWebPortal/web/WEB-INF/web.xml
+++ b/src/java/DmWebPortal/web/WEB-INF/web.xml
@@ -21,4 +21,8 @@
     <welcome-file-list>
         <welcome-file>index.xhtml</welcome-file>
     </welcome-file-list>
+    <error-page>
+        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
+        <location>/login.xhtml</location>
+    </error-page>
 </web-app>
diff --git a/src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js b/src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js
new file mode 100644
index 00000000..3e5512f7
--- /dev/null
+++ b/src/java/DmWebPortal/web/resources/js/common/forwardFromHome.js
@@ -0,0 +1 @@
+  window.location = "login.xhtml";
diff --git a/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml b/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml
index 19764018..1971d8b4 100644
--- a/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml
+++ b/src/java/DmWebPortal/web/templates/dmViewTemplate.xhtml
@@ -58,9 +58,10 @@
                                     <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="Policies" url="/views/policyType/list.xhtml"/>                                    <p:menuitem value="Role Types" url="/views/roleType/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>
+                                    <p:menuitem value="Policies" url="/views/policyType/list.xhtml"/>                                    
+                                    <p:menuitem value="Role Types" url="/views/roleType/list.xhtml"/>
+                                    <p:menuitem value="Logout" action="#{loginController.logout()}" icon="ui-icon-close"/>
+                                </p:menubar>
                             </h:form>
                         </ui:insert>
                     </div>
diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
index 1669275e..78360f86 100644
--- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml
@@ -7,17 +7,18 @@
                 xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                 xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
 
-    <h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/>
+    <h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}" />
     <h:outputScript library="js/common" name="forwardNotAuthorized.js" rendered="#{!loginController.admin and experimentController.isRestricted()}"/>
-    <ui:composition template="../../templates/dmViewTemplate.xhtml">
-    <ui:define name="middleCenter">
+
+    <ui:composition template="../../templates/dmViewTemplate.xhtml" >
+    <ui:define name="middleCenter" >
         <h:form id="editExperimentForm">
 
                 <div class="pageTitle">
                     <h1>Edit Experiment #{experimentController.current.name}</h1>
                 </div>
 
-            <p:accordionPanel multiple="true" dynamic="true" cache="false" activeIndex="0,1"  >
+            <p:accordionPanel multiple="true" dynamic="true" cache="false" activeIndex="0,1,2"  >
                 <p:tab title="Experiment Properties" id="detailsTab" >
 
                     <div class="middleCenterLeftContent">
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
index 52f7128d..8d0f1c73 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml
@@ -58,11 +58,11 @@
                 <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View">
                 </p:commandLink>
     
-                <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.admin or experimentController.canEditExperiment(experimentObject.id)}" styleClass="ui-icon ui-icon-pencil" title="Edit">
+                <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{loginController.admin or experimentController.canEditExperiment(experimentObject)}" styleClass="ui-icon ui-icon-pencil" title="Edit">
                     <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
                 </p:commandLink>
 
-                <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.admin or experimentController.canDeleteExperiment(experimentObject.id)}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
+                <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.admin or experimentController.canDeleteExperiment(experimentObject)}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
                     <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/>
                 </p:commandLink>
             </div>
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml
index f64d0209..1950af37 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentPoliciesEditSelection.xhtml
@@ -10,18 +10,6 @@
     <p/>
 
         <h:panelGrid columns="2" cellpadding="5">
-            <p:outputLabel for="deletionPolicy" value="Data Deletion Policy: " />
-            <p:selectOneMenu id="deletionPolicy" value="#{experimentController.current.getPolicyForType(1).name}" style="width:150px">
-                <f:selectItem itemLabel="#{experimentController.current.getPolicyForType(1).name}" itemValue="" noSelectionOption="false" />
-                <f:selectItems value="#{experimentController.getPoliciesNamesForType(1)}" />
-            </p:selectOneMenu>
- 
-            <p:outputLabel for="transferPolicy" value="Data Transfer Policy: " />
-            <p:selectOneMenu id="transferPolicy" value="#{experimentController.current.getPolicyForType(2).name}" style="width:150px">
-                <f:selectItem itemLabel="#{experimentController.current.getPolicyForType(1).name}" itemValue="" noSelectionOption="false" />
-                <f:selectItems value="#{experimentController.getPoliciesNamesForType(2)}" />
-            </p:selectOneMenu>
- 
         </h:panelGrid> 
 
 <!--        <p:dataTable id="experimentPoliciesEditDataTable"                              
diff --git a/src/java/DmWebPortal/web/views/home.xhtml b/src/java/DmWebPortal/web/views/home.xhtml
index 5bfdf960..e62fae7b 100644
--- a/src/java/DmWebPortal/web/views/home.xhtml
+++ b/src/java/DmWebPortal/web/views/home.xhtml
@@ -3,11 +3,14 @@
 
 <ui:composition xmlns="http://www.w3.org/1999/xhtml"
                 xmlns:h="http://java.sun.com/jsf/html"
-                xmlns:ui="http://java.sun.com/jsf/facelets"
                 xmlns:p="http://primefaces.org/ui"
-                xmlns:f="http://xmlns.jcp.org/jsf/core">
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
+                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
+
+
+    <h:outputScript library="js/common" name="forwardFromHome.js" rendered="#{!loginController.loggedIn}" />
 
-    <h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/>
     <ui:composition template="../templates/dmViewTemplate.xhtml">
         <ui:define name="middleCenter">
 
diff --git a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
index 28d5d490..bdf04952 100644
--- a/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/userInfo/userExperimentsListDataTable.xhtml
@@ -35,15 +35,15 @@
         </p:column>                  
 
 
-        <p:column sortBy="#{!experimentUserObject.isManager}" headerText="Manager">
+        <p:column sortBy="#{!userExperimentObject.isManager}" headerText="Manager">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isManager}" /> 
         </p:column>
 
-        <p:column sortBy="#{!experimentUserObject.isPI}" headerText="Principal Investigator">
+        <p:column sortBy="#{!userExperimentObject.isPI}" headerText="Principal Investigator">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isPI}" />  
         </p:column>
 
-        <p:column sortBy="#{!experimentUserObject.isUser}" headerText="User">
+        <p:column sortBy="#{!userExperimentObject.isUser}" headerText="User">
             <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{userExperimentObject.isUser}" />   
         </p:column>
 
-- 
GitLab