From a215575f155b3cb6ce37c79185f9d555496dfb8d Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Thu, 22 Jan 2015 19:44:10 +0000
Subject: [PATCH]

---
 .../controllers/ExperimentController.java     | 43 +++-------
 .../portal/controllers/LoginController.java   |  5 +-
 .../controllers/UserSystemRoleController.java | 83 ++++++++-----------
 .../experimentUsersEditDataTable.xhtml        |  2 +-
 .../DmWebPortal/web/views/loginHelp.xhtml     |  1 -
 .../roleType/roleTypeListDataTable.xhtml      |  2 +-
 6 files changed, 51 insertions(+), 85 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 1a1ea26e..46149030 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
@@ -48,6 +48,10 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
     @EJB
     private UserExperimentRoleFacade userExperimentRoleFacade;
     
+    int USER_ROLE_ID = 4;
+    int PI_ROLE_ID = 3;
+    int MANAGER_ROLE_ID = 2;
+    
     public class ExperimentUser extends CloneableEntity {
 
         String username;
@@ -79,27 +83,27 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
         }
 
         public boolean isIsManager() {
-            return roles[2];
+            return roles[MANAGER_ROLE_ID];
         }
 
         public void setIsManager(boolean isManager) {
-            roles[2] = isManager;
+            roles[MANAGER_ROLE_ID] = isManager;
         }
 
         public boolean isIsPI() {
-            return roles[3];
+            return roles[PI_ROLE_ID];
         }
 
         public void setIsPI(boolean isPI) {
-            roles[3] = isPI;
+            roles[PI_ROLE_ID] = isPI;
         }
 
         public boolean isIsUser() {
-            return roles[4];
+            return roles[USER_ROLE_ID];
         }
 
         public void setIsUser(boolean isUser) {
-            roles[4] = isUser;
+            roles[USER_ROLE_ID] = isUser;
         }
 
         public void setIsInRole(RoleType role, boolean isInRole) {
@@ -120,10 +124,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             }
         }
 
-        public boolean canAddUsers() {
-            return roles[2] || roles[3];
-        }
-
         @Override
         public int hashCode() {
             return userId + experimentId * 100;
@@ -337,25 +337,8 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
     public void setNoExperimentUsersTypeTable(ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable) {
         this.noExperimentUsersTypeTable = noExperimentUsersTypeTable;
     }
-    
-    public boolean canAddUsers(String username) {
-        UserInfo user = userInfoFacade.findByUsername(username);
-        // optimally here it should find all system roles. The roles optimally would have a policy
-        // defining adding/removing users. For each of the role that allows adding users,
-        // the code that is for administartor role (below) would be added.
-        RoleType rt = roleTypeFacade.findById(1);   // administrator role id
-        if (rt == null) {
-            return false;
-        }
-        if (rt.isAdmin(username)) {
-            return true;
-        }
-        return false;
-        // experiment type permission
-        // return experimentUsersMap.get(username).canAddUsers();
-    }
-    
-     public void updateRemovedExperimentRoles() {
+        
+    public void updateRemovedExperimentRoles() {
         UserExperimentRole userExperimentRole;
         List<RoleType> roleTypesList = roleTypeFacade.findAll();
         for (UserInfo user : experimentUsers.keySet()) {
@@ -454,7 +437,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper
             try {
                 UserExperimentRole userExperimentRole;
                 for (UserInfo user : newUsers) {
-                    userExperimentRole = new UserExperimentRole(user.getId(), current.getId(), 4); // set the User
+                    userExperimentRole = new UserExperimentRole(user.getId(), current.getId(), USER_ROLE_ID); // set the User
                     user.getUserExperimentRoleList().add(userExperimentRole);
                     userInfoFacade.edit(user);
                 }
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 30da44d6..9c3d6182 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
@@ -37,6 +37,7 @@ public class LoginController implements Serializable
     private String password = null;
     private boolean loggedIn = false;
     private UserInfo user = null;
+    int ADMIN_ROLE_ID = 1;
 
     private static final Logger logger = Logger.getLogger(LoginController.class.getName());
 
@@ -132,7 +133,7 @@ public class LoginController implements Serializable
         }
         else {
              SessionUtility.addErrorMessage(null, "Invalid Credentials. Username/password combination could not be verified.");
-             SessionUtility.addErrorMessage(null, "If you are having difficulty logging in, please see our <a href=\"perch.aps.anl.gov:8080/dm/views/loginHelp\">Login Help</a> page.");
+             SessionUtility.addErrorMessage(null, "If you are having difficulty logging in, please see our <a href=\"/dm/views/loginHelp.xhtml\">login help</a> page.");
             return (username = password = null);
         }
 
@@ -179,7 +180,7 @@ public class LoginController implements Serializable
 
         public boolean hasSystemRole() {
         RoleType adminRoleType;
-        adminRoleType = roleTypeFacade.findById(1);
+        adminRoleType = roleTypeFacade.findById(ADMIN_ROLE_ID);
         if (adminRoleType == null) {
             return false;
         }
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 d4968403..4b31dcdb 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
@@ -28,11 +28,8 @@ public class UserSystemRoleController  implements Serializable
 
     @EJB
     private RoleTypeFacade roleTypeFacade;
-
-    public UserSystemRoleController() {
-        this.systemRoleTable = new SystemRoleTypeTable();
-        this.noSystemRoleTable = new NoSystemRoleTypeTable();
-    }
+    
+    int ADMIN_ROLE_ID = 1;
 
     class SystemRoleTypeTable extends DataTableController<UserInfo> {
 
@@ -43,12 +40,7 @@ public class UserSystemRoleController  implements Serializable
 
         @Override
         public List<UserInfo> findAll() {
-            try {
-                int id = Integer.parseInt(systemRoleId);
-                return userInfoFacade.findSystemRoleUsers(id);
-            } catch (NumberFormatException e) {
-                return null;
-            }
+            return userInfoFacade.findSystemRoleUsers(systemRole.getId());
         }
     }
     
@@ -61,21 +53,29 @@ public class UserSystemRoleController  implements Serializable
 
         @Override
         public List<UserInfo> findAll() {
-            try {
-                int id = Integer.parseInt(systemRoleId);
-                return userInfoFacade.findNoSystemRoleUsers(id);
-            } catch (NumberFormatException e) {
-                return null;
-            }
+            return userInfoFacade.findNoSystemRoleUsers(systemRole.getId());
         }
     }
     
     private SystemRoleTypeTable systemRoleTable;
     private NoSystemRoleTypeTable noSystemRoleTable;
 
-    private String systemRoleId;
+    private RoleType systemRole;
 
     private static final Logger logger = Logger.getLogger(UserSystemRoleController.class.getName());
+    
+    public UserSystemRoleController() {
+        this.systemRoleTable = new SystemRoleTypeTable();
+        this.noSystemRoleTable = new NoSystemRoleTypeTable();
+    }
+
+   public RoleType getSystemRole() {
+        return systemRole;
+    }
+
+    public void setSystemRole(RoleType systemRole) {
+        this.systemRole = systemRole;
+    }
 
     public SystemRoleTypeTable getSystemRoleTable() {
         return systemRoleTable;
@@ -92,18 +92,9 @@ public class UserSystemRoleController  implements Serializable
     public void setNoSystemRoleTable(NoSystemRoleTypeTable noSystemRoleTable) {
         this.noSystemRoleTable = noSystemRoleTable;
     }
-
-     public String getSystemRoleId() {
-        return systemRoleId;
-    }
-
-    public void setSystemRoleId(String systemRoleId) {
-        this.systemRoleId = systemRoleId;
-    }
          
     public String getSystemRoleName() {
-        int id = Integer.parseInt(systemRoleId);
-        return roleTypeFacade.findById(id).getName(); 
+        return systemRole.getName(); 
     }
 
      public String resetSystemRoleUserList() {
@@ -116,10 +107,10 @@ public class UserSystemRoleController  implements Serializable
         logger.debug("Resetting System Role Add User list");
         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(1);
+        RoleType rt = roleTypeFacade.findById(ADMIN_ROLE_ID);
         if (rt == null) {
             return null;
         }
@@ -138,23 +129,19 @@ public class UserSystemRoleController  implements Serializable
     }
 
     public String addSystemRole() {
-        int id = Integer.parseInt(systemRoleId);
-        RoleType rt = roleTypeFacade.findById(id);
-        if (rt != null) {
-            List<UserInfo> uiList = noSystemRoleTable.getSelectedObjectList();
-
-            if (uiList == null) {
-                logger.debug("null selected list");
-            } else if (uiList.isEmpty()) {
-                logger.debug("empty selected list");
-            } else {
-                for (UserInfo userInfo : uiList) {
-                    rt.addRoleTypeToUser(userInfo);
-                }
+        List<UserInfo> uiList = noSystemRoleTable.getSelectedObjectList();
+
+        if (uiList == null) {
+            logger.debug("null selected list");
+        } else if (uiList.isEmpty()) {
+            logger.debug("empty selected list");
+        } else {
+            for (UserInfo userInfo : uiList) {
+                systemRole.addRoleTypeToUser(userInfo);
             }
         }
         try {
-            roleTypeFacade.edit(rt);
+            roleTypeFacade.edit(systemRole);
             resetNoSystemRoleUserList();
             return resetSystemRoleUserList();
         } catch (RuntimeException ex) {
@@ -165,13 +152,9 @@ public class UserSystemRoleController  implements Serializable
 
     public String removeSystemRole() {
         logger.debug("removing system role from user");
-        int id = Integer.parseInt(systemRoleId);
-        RoleType rt = roleTypeFacade.findById(id);
-        if (rt != null) {
-            rt.removeRoleTypeFromUser(systemRoleTable.currentObject);
-        }
+        systemRole.removeRoleTypeFromUser(systemRoleTable.currentObject);
         try {
-        roleTypeFacade.edit(rt);
+        roleTypeFacade.edit(systemRole);
         resetNoSystemRoleUserList();
         return resetSystemRoleUserList();
         }
diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
index dacb92de..6407d75a 100644
--- a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml
@@ -10,7 +10,7 @@
 
     <ui:include src="experimentUserAddDialog.xhtml" />
 
-    <p:commandButton id="experimentUserAddButton" value="Add" onclick="PF('experimentUserAddDialogWidget').show();" rendered="#{experimentController.canAddUsers(loginController.username)}" icon="ui-icon-plus" >
+    <p:commandButton id="experimentUserAddButton" value="Add" onclick="PF('experimentUserAddDialogWidget').show();" rendered="#{loginController.hasSystemRole()}" icon="ui-icon-plus" >
         <p:tooltip for="experimentUserAddButton" value="Add new users." />
     </p:commandButton>
 
diff --git a/src/java/DmWebPortal/web/views/loginHelp.xhtml b/src/java/DmWebPortal/web/views/loginHelp.xhtml
index 632ee177..b057379f 100644
--- a/src/java/DmWebPortal/web/views/loginHelp.xhtml
+++ b/src/java/DmWebPortal/web/views/loginHelp.xhtml
@@ -3,7 +3,6 @@
 
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:p="http://primefaces.org/ui"
       xmlns:h="http://java.sun.com/jsf/html">
 
     <h:head>
diff --git a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
index 1a58e673..d4172394 100644
--- a/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
+++ b/src/java/DmWebPortal/web/views/roleType/roleTypeListDataTable.xhtml
@@ -45,7 +45,7 @@
                 </p:commandLink>
 
          <p:commandLink action="#{userSystemRoleController.prepareSystemRoleView()}" rendered="#{roleTypeController.isRoleSystemType(roleTypeObject)}"  styleClass="ui-icon ui-icon-person" title="List All" >
-                   <f:setPropertyActionListener value="#{roleTypeObject.id}" target="#{userSystemRoleController.systemRoleId}"/>
+                   <f:setPropertyActionListener value="#{roleTypeObject}" target="#{userSystemRoleController.systemRole}"/>
                 </p:commandLink>
           </div>
         </p:column>
-- 
GitLab