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" />