1 23 24 package org.infoglue.cms.applications.common.actions; 25 26 import java.util.HashMap ; 27 import java.util.Locale ; 28 import java.util.Map ; 29 import java.util.StringTokenizer ; 30 31 import javax.servlet.ServletConfig ; 32 import javax.servlet.ServletException ; 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import javax.servlet.http.HttpSession ; 36 37 import org.apache.velocity.Template; 38 import org.apache.velocity.context.Context; 39 import org.infoglue.cms.applications.common.Session; 40 import org.infoglue.cms.applications.common.VisualFormatter; 41 import org.infoglue.cms.exception.ConfigurationError; 42 import org.infoglue.cms.util.StringManager; 43 import org.infoglue.cms.util.StringManagerFactory; 44 45 import webwork.view.velocity.WebWorkVelocityServlet; 46 47 import com.opensymphony.module.propertyset.PropertySet; 48 import com.opensymphony.module.propertyset.PropertySetManager; 49 50 60 public class VelocityServlet extends WebWorkVelocityServlet 61 { 62 private static final long serialVersionUID = 408929363112264207L; 63 64 private static final String PACKAGE_NAMES_INIT_PARAM = "packageNames"; 65 66 private String packageNames[]; 67 68 75 public void init(ServletConfig configuration) throws ServletException 76 { 77 super.init(configuration); 78 initializePackageNames(configuration.getInitParameter(PACKAGE_NAMES_INIT_PARAM)); 79 } 80 81 84 private void initializePackageNames(String commaSeparatedPackageNames) 85 { 86 if (commaSeparatedPackageNames == null) 87 { 88 throw new ConfigurationError("web.xml not properly configured, did not contain the " + PACKAGE_NAMES_INIT_PARAM + " init param for the VelocityServlet."); 89 } 90 91 final StringTokenizer st = new StringTokenizer (commaSeparatedPackageNames, ","); 92 this.packageNames = new String [st.countTokens()]; 93 for (int i = 0; st.hasMoreTokens(); ++i) 94 { 95 this.packageNames[i] = st.nextToken(); 96 } 97 } 98 99 102 private StringManager getStringManagerChain(Locale locale) 103 { 104 return StringManagerFactory.getPresentationStringManager(this.packageNames, locale); 105 } 106 107 protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context context) throws Exception 108 { 109 final HttpSession httpSession = request.getSession(); 110 final Session session = new Session (httpSession); 111 112 113 if(session.getLocale() == null || session.getLocale().getLanguage() == null || session.getLocale().getLanguage().equalsIgnoreCase("")) 115 { 116 session.setLocale(java.util.Locale.ENGLISH); 117 } 118 120 if(session.getLocale() == null || session.getLocale().getLanguage() == null || session.getLocale().getLanguage().equalsIgnoreCase("")) 121 context.put("ui", getStringManagerChain(java.util.Locale.ENGLISH)); 122 else 123 context.put("ui", getStringManagerChain(session.getLocale())); 124 125 context.put("formatter", new VisualFormatter()); 126 127 request.setCharacterEncoding("UTF-8"); 128 response.setContentType("text/html; charset=UTF-8"); 129 130 return super.handleRequest(request, response, context); 131 } 132 133 private String getPreferredLanguageCode(HttpServletRequest request) 134 { 135 Map args = new HashMap (); 136 args.put("globalKey", "infoglue"); 137 PropertySet ps = PropertySetManager.getInstance("jdbc", args); 138 return ps.getString("principal_" + request.getRemoteUser() + "_languageCode"); 139 } 140 141 private String getPreferredToolId(HttpServletRequest request) 142 { 143 Map args = new HashMap (); 144 args.put("globalKey", "infoglue"); 145 PropertySet ps = PropertySetManager.getInstance("jdbc", args); 146 147 return ps.getString("principal_" + request.getRemoteUser() + "_defaultToolId"); 148 } 149 150 } | Popular Tags |