[elvystrac] r1815 - user role localization (part. 2) + better redirect after session timeout

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Mon, 22 Feb 2010 10:38:38 +0100

Author: DavidK
Date: 2010-02-22 10:38:37 +0100 (Mon, 22 Feb 2010)
New Revision: 1815

Added:
   trunk/server/webServer2/WebContent/reconnectMe.jsf
   trunk/server/webServer2/WebContent/reconnectMe.xhtml
Removed:
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/RoleConverter.java
Modified:
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/LocalizedRoleConverter.java
   
trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/faces/MessageUtils.java
   trunk/server/webServer2/WebContent/WEB-INF/web.xml
   trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml
Log:
user role localization (part. 2) + better redirect after session timeout

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
  2010-02-22 02:30:48 UTC (rev 1814)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java
  2010-02-22 09:38:37 UTC (rev 1815)
@@ -4,32 +4,20 @@
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.TimeZone;
 
 import javax.faces.application.FacesMessage;
 import javax.faces.context.FacesContext;
-import javax.faces.event.ActionEvent;
 import javax.faces.model.SelectItem;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpSession;
 
 import org.apache.log4j.Logger;
-import org.hibernate.Query;
-import org.hibernate.Session;
-import org.hibernate.Transaction;
 
-import cz.elvys.commons.utils.CommonUtils;
 import cz.elvys.webServer.HIBgen.Company;
 import cz.elvys.webServer.HIBgen.Role;
 import cz.elvys.webServer.HIBgen.User;
-import cz.elvys.webServer.db.InitSessionFactory;
-import cz.elvys.webServer.toSpring.exception.ExecuteException;
 import cz.elvys.webServer.utils.faces.BeanManager;
 import cz.elvys.webServer.utils.faces.MessageUtils;
-import cz.elvys.webServer.utils.type.ValidationMessageHolder;
 import elvys.server.bl.Fact;
 import elvys.server.bl.user.UserBL;
-import elvys.server.bl.user.UserBLImpl;
 
 public class UserEditBean implements Serializable {
        // fields
@@ -48,8 +36,11 @@
        
        private List<SelectItem> companiesToSelect = null;
        private Integer sizeOfCompaniesToSelect = null;
+       private String selectedCompany = null;
+       private List<Role> rolesList = null;
        private List<SelectItem> rolesToSelect = null;
        private Integer sizeOfRolesToSelect = null;
+       private String selectedRole = null;
        
        // password are separated from object user beacuse of password updating
        private String password = null;
@@ -81,12 +72,24 @@
        public void setCompaniesToSelect(List<SelectItem> companiesToSelect) {
                this.companiesToSelect = companiesToSelect;
        }
+       public String getSelectedCompany() {
+               return selectedCompany;
+       }
+       public void setSelectedCompany(String selectedCompany) {
+               this.selectedCompany = selectedCompany;
+       }
        public List<SelectItem> getRolesToSelect() {
                return rolesToSelect;
        }
        public void setRolesToSelect(List<SelectItem> rolesToSelect) {
                this.rolesToSelect = rolesToSelect;
        }
+       public String getSelectedRole() {
+               return selectedRole;
+       }
+       public void setSelectedRole(String selectedRole) {
+               this.selectedRole = selectedRole;
+       }
        public String getPasswordAgain() {
                return passwordAgain;
        }
@@ -111,6 +114,7 @@
         */
        public String prepareCreateUserForm() {                         
                selectedUser = new User();
+               selectedRole = "user";
                passwordAgain = null;
                selectedUser.setLocale("cs");
                selectedUser.setSystem(false);
@@ -131,6 +135,7 @@
                // locale has been set already
                // system has been set already
                rolesToSelect = loadPermittedRolesList();
+               selectedRole = selectedUser.getRole().getRole();
                sizeOfRolesToSelect = rolesToSelect.size();
                companiesToSelect= loadPermittedCompanyList();
                sizeOfCompaniesToSelect= companiesToSelect.size();
@@ -141,6 +146,17 @@
        private String saveOrUpdateUser(boolean isEdit){
                String result = null;
                
+               // set role from form
+               Role role = chooseRole(selectedRole, rolesList);
+               if (role == null) {
+                       // bad role string selected
+                       RuntimeException o = new RuntimeException("bad role 
string selected" + selectedRole);
+                       log.error(o);
+                       throw o;
+               }
+               selectedUser.setRole(role);
+               
+               
                if(!isEdit && password.equals("")){
                        FacesMessage message =  MessageUtils.getMessage(
                                        "user.form.emptyPassword", null, 
FacesMessage.SEVERITY_ERROR);
@@ -219,7 +235,30 @@
                return result;          
        }
        
+       
+       
        /**
+        * Method chooses right Role object from list by its role string
+        * @param roleString string representation of Role
+        * @param roles List<Roles>
+        * @return Role object
+        */
+       private Role chooseRole(String roleString, List<Role> roles) {
+               if(roleString == null || roleString.trim().equals("")) {
+                       return null;
+               }
+               Role toret = null;
+               for (Role r: roles) {
+                       if (r.getRole().equals(roleString)) {
+                               toret = r;
+                               break;
+                       }
+               }
+               return toret;
+       }
+       
+       
+       /**
         * Stores new User into DB and forwards to ListOfUsers UC.
         * @return
         */
@@ -252,44 +291,40 @@
        }
                
        private List<SelectItem> loadPermittedRolesList() {
-               List<Role> rolesList = userBL.loadPermittedRolesList();
+               rolesList = userBL.loadPermittedRolesList();
                
                UserLoginBean me = BeanManager.getUser();
                List<SelectItem> roles = new LinkedList<SelectItem>();
                if (me.getCompStr().equalsIgnoreCase("superadmin")){
                        // superadmin is allowed to create user with each 
competency
-                       roles.add(prepareSelectItem("user", rolesList));
-                       roles.add(prepareSelectItem("admin", rolesList));
-                       roles.add(prepareSelectItem("superadmin", rolesList));
+                       roles.add(prepareSelectItem("user"));
+                       roles.add(prepareSelectItem("admin"));
+                       roles.add(prepareSelectItem("superadmin"));
                } else if (me.getCompStr().equalsIgnoreCase("admin")) {
                        // admin is not allowed to create user with 
"superadmin" competency
-                       roles.add(prepareSelectItem("user", rolesList));
-                       roles.add(prepareSelectItem("admin", rolesList));
+                       roles.add(prepareSelectItem("user"));
+                       roles.add(prepareSelectItem("admin"));
                } else {
                        // user is allowed to create only users
-                       roles.add(prepareSelectItem("user", rolesList));
+                       roles.add(prepareSelectItem("user"));
                }
                
                return roles;
        }
 
-       private SelectItem prepareSelectItem(String compStr,List<Role> roles) {
-               Role role =findByRoleCompStr(compStr, roles);
+       private SelectItem prepareSelectItem(String compStr) {
+               String lblValue = MessageUtils.getLocalizedRoleLabel(compStr);
+               if (lblValue == null) {
+                       Error error= new Error("role not recognized:"+compStr);
+                       log.error(error);
+                       throw error;
+               }
                SelectItem si = new SelectItem();
-               si.setLabel(role.getRole());
-               si.setValue(role);
+               si.setLabel(lblValue);
+               si.setValue(compStr);
                return si;
        }
        
-       private Role findByRoleCompStr(String compStr,List<Role> roles) {
-               for (Role role : roles) {
-                       if (compStr.equalsIgnoreCase(role.getRole())) {
-                               return role;
-                       }
-               }
-               return null;
-       }
-
        public boolean isUpdatingProfile() {
                return updatingProfile;
        }

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/LocalizedRoleConverter.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/LocalizedRoleConverter.java
        2010-02-22 02:30:48 UTC (rev 1814)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/LocalizedRoleConverter.java
        2010-02-22 09:38:37 UTC (rev 1815)
@@ -7,12 +7,8 @@
 import cz.elvys.webServer.utils.faces.MessageUtils;
 
 public class LocalizedRoleConverter implements Converter {
-       private static final String ROLE_USER_LBL_KEY = "elvys.role.user";
-       private static final String ROLE_ADMIN_LBL_KEY = "elvys.role.admin";
-       private static final String ROLE_SUPERADMIN_LBL_KEY = 
"elvys.role.superadmin";
        
        
-       
        @Override
        public Object getAsObject(FacesContext ctx, UIComponent comp, String 
value) {
                // TODO Auto-generated method stub
@@ -25,24 +21,15 @@
        public String getAsString(FacesContext ctx, UIComponent comp, Object 
value) {
                String role = (String) value;
                if (role == null || role.trim().equals("")) {
-                       throw new RuntimeException("empty role to convert");
+                       RuntimeException re = new RuntimeException("empty role 
to convert");
+                       throw re;
                }
                
-               // choose correct type of value
-               String key = null;
-               if (role.equals("user")) {
-                       key = ROLE_USER_LBL_KEY;
-               } else if(role.equals("admin")) {
-                       key = ROLE_ADMIN_LBL_KEY;
-               } else if(role.equals("superadmin")) {
-                       key = ROLE_SUPERADMIN_LBL_KEY;
+               String lblvalue = MessageUtils.getLocalizedRoleLabel(role);
+               if(lblvalue ==null) {
+                       RuntimeException re = new RuntimeException("role not 
recognized");
+                       throw re;
                }
-               
-               if (key == null) {
-                       throw new RuntimeException("user role not recognized");
-               }
-               
-               String lblvalue = MessageUtils.getLabel(key);
                return lblvalue;
        }
        

Deleted: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/RoleConverter.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/RoleConverter.java
 2010-02-22 02:30:48 UTC (rev 1814)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/converters/RoleConverter.java
 2010-02-22 09:38:37 UTC (rev 1815)
@@ -1,60 +0,0 @@
-package cz.elvys.webServer.converters;
-
-import java.util.List;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.convert.Converter;
-
-import org.apache.log4j.Logger;
-import org.hibernate.HibernateException;
-import org.hibernate.Query;
-import org.hibernate.Session;
-import org.hibernate.Transaction;
-
-import cz.elvys.webServer.HIBgen.Role;
-import cz.elvys.webServer.db.InitSessionFactory;
-
-public class RoleConverter implements Converter {
-       private static Logger log= null;
-       static{
-               log = Logger.getLogger(RoleConverter.class);
-       }
-
-       public Object getAsObject(FacesContext context, UIComponent comp, 
String string) {
-               Session sess = 
InitSessionFactory.getInstance().getCurrentSession();
-               Transaction tx = sess.getTransaction();
-               try {
-                       tx.begin();
-               } catch(HibernateException e) {
-                       throw new Error("error occured when initializing 
hibernate session",e);
-               }
-               Role role= null;
-               try {
-                       Query query = sess.createQuery("from Role where " +
-                                       "role=:role");
-                       query.setString("role", string);
-                       List<Role> list = query.list();
-                       if (list == null || list.size()==0) {
-                               role= null;
-                       } else {
-                               role= list.get(0);
-                       }
-                       tx.commit();
-               } catch (Exception e) {
-                       tx.rollback();
-                       throw new Error("Unable to load right role.", e);
-               }
-               return role;
-       }
-
-       public String getAsString(FacesContext context, UIComponent comp, 
Object role) {
-               if (role== null || !(role instanceof Role)) {
-                       log.error("Calling RoleConverter improperly. Converts 
only Role.");
-               } else {
-                       return ((Role) role).getRole();
-               }
-               return null;
-       }
-
-}

Modified: 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/faces/MessageUtils.java
===================================================================
--- 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/faces/MessageUtils.java
 2010-02-22 02:30:48 UTC (rev 1814)
+++ 
trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/faces/MessageUtils.java
 2010-02-22 09:38:37 UTC (rev 1815)
@@ -22,13 +22,16 @@
        private static final String elvysFileTypeLabelPrefix = 
"elvys.file.type.";
        private static final String elvysPlanningTypeLabelPrefix = 
"elvys.planning.type.";
        
+       private static final String ROLE_USER_LBL_KEY = "elvys.role.user";
+       private static final String ROLE_ADMIN_LBL_KEY = "elvys.role.admin";
+       private static final String ROLE_SUPERADMIN_LBL_KEY = 
"elvys.role.superadmin";
        
        
 //     private List<SelectItem> localeItems;
 //
 //     
 //     
-//     // TODO kua na co to tady je????
+//     // TODO  na co to tady je????
 //     public List getSupportedLocaleItems() {
 //             if (localeItems == null) {
 //                     localeItems = new ArrayList<SelectItem>();
@@ -181,6 +184,33 @@
                return elvysPlanningTypeLabelPrefix;
        }
        
+       /**
+        * Localize role label
+        * @param roleString not-localized
+        * @return localized role label or null if not recognized or input is 
null
+        */
+       public static String getLocalizedRoleLabel(String roleString) {
+               if (roleString == null || roleString.equals("")) {
+                       return null;
+               }
+               
+               // choose correct type of value
+               String key = null;
+               if (roleString.equals("user")) {
+                       key = ROLE_USER_LBL_KEY;
+               } else if(roleString.equals("admin")) {
+                       key = ROLE_ADMIN_LBL_KEY;
+               } else if(roleString.equals("superadmin")) {
+                       key = ROLE_SUPERADMIN_LBL_KEY;
+               }
+               
+               if (key == null) {
+                       throw new RuntimeException("user role not recognized");
+               }
+               
+               String lblvalue = MessageUtils.getLabel(key);
+               return lblvalue;
+       }
        
        /**
         * Method for getting localized label from label*.properties

Modified: trunk/server/webServer2/WebContent/WEB-INF/web.xml
===================================================================
--- trunk/server/webServer2/WebContent/WEB-INF/web.xml  2010-02-22 02:30:48 UTC 
(rev 1814)
+++ trunk/server/webServer2/WebContent/WEB-INF/web.xml  2010-02-22 09:38:37 UTC 
(rev 1815)
@@ -15,9 +15,9 @@
   <param-name>facelets.REFRESH_PERIOD</param-name>
   <param-value>2</param-value>
  </context-param>
-       <context-param>
-       <param-name>facelets.SKIP_COMMENTS</param-name>
-       <param-value>true</param-value>
+ <context-param>
+  <param-name>facelets.SKIP_COMMENTS</param-name>
+  <param-value>true</param-value>
  </context-param>
  <context-param>
   <param-name>facelets.DEVELOPMENT</param-name>
@@ -48,8 +48,8 @@
   <filter-name>richfaces</filter-name>
   <filter-class>org.ajax4jsf.Filter</filter-class>
   <init-param>
-       <param-name>maxRequestSize</param-name>
-    <param-value>209715200</param-value>
+   <param-name>maxRequestSize</param-name>
+   <param-value>209715200</param-value>
   </init-param>
  </filter>
  <filter-mapping>
@@ -67,31 +67,31 @@
   <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
+ <servlet>
+  <servlet-name>File Download Servlet</servlet-name>
+  <servlet-class>cz.elvys.webServer.servlet.FileDownloadServlet</servlet-class>
+ </servlet>
  <servlet-mapping>
   <servlet-name>Faces Servlet</servlet-name>
   <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
- <servlet>
-       <servlet-name>File Download Servlet</servlet-name>
-       
<servlet-class>cz.elvys.webServer.servlet.FileDownloadServlet</servlet-class>
- </servlet>
  <servlet-mapping>
-       <servlet-name>File Download Servlet</servlet-name>
-       <url-pattern>/secured/file</url-pattern>
+  <servlet-name>File Download Servlet</servlet-name>
+  <url-pattern>/secured/file</url-pattern>
  </servlet-mapping>
+ <session-config>
+  <session-timeout>30</session-timeout>
+ </session-config>
  <welcome-file-list>
   <welcome-file>/index.jsf</welcome-file>
  </welcome-file-list>
- <session-config>  
-    <session-timeout>30</session-timeout>  
- </session-config>
  <error-page>
   <error-code>404</error-code>
-  <location>/reconnect.jsf</location>
+  <location>/reconnectMe.jsf</location>
  </error-page>
  <error-page>
   <error-code>403</error-code>
-  <location>/reconnect.jsf</location>
+  <location>/reconnectMe.jsf</location>
  </error-page>
  <login-config>
   <auth-method>BASIC</auth-method>

Added: trunk/server/webServer2/WebContent/reconnectMe.jsf
===================================================================
Added: trunk/server/webServer2/WebContent/reconnectMe.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/reconnectMe.xhtml                        
        (rev 0)
+++ trunk/server/webServer2/WebContent/reconnectMe.xhtml        2010-02-22 
09:38:37 UTC (rev 1815)
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml";>
+<head>
+  <meta http-equiv="Refresh" content="0; URL=/webServer2/reconnect.jsf"/> 
+</head>
+</html>
\ No newline at end of file

Modified: trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml
===================================================================
--- trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml       
2010-02-22 02:30:48 UTC (rev 1814)
+++ trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml       
2010-02-22 09:38:37 UTC (rev 1815)
@@ -83,9 +83,8 @@
                                        </h:panelGroup>         
                                        <h:panelGroup 
rendered="#{!userEditBean.updatingProfile}">      
                                                <h:selectOneListbox 
id="roleField" required="true"
-                                                       
value="#{userEditBean.selectedUser.role}"
+                                                       
value="#{userEditBean.selectedRole}"
                                                        
size="#{userEditBean.sizeOfRolesToSelect >=3? 3 : 
userEditBean.sizeOfRolesToSelect}">
-                                                       <f:converter 
converterId="roleConverter" />
                                                        <f:selectItems 
value="#{userEditBean.rolesToSelect}" />
                                                </h:selectOneListbox>
                                                <h:message for="roleField" 
styleClass="error" />


Other related posts:

  • » [elvystrac] r1815 - user role localization (part. 2) + better redirect after session timeout - elvys