a new servletfilter, which controls the caching-values in the http-header.\ra new...
[mir.git] / source / mir / core / ui / servlet / TemplateServlet.java
index 2c70b2c..78e4008 100755 (executable)
@@ -33,9 +33,11 @@ package mir.core.ui.servlet;
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -50,6 +52,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 import mir.config.MirPropertiesConfiguration;
+import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
 import mir.servlet.ServletModuleExc;
 import mir.util.GeneratorDateTimeFunctions;
 import mir.util.GeneratorExpressionFunctions;
@@ -60,22 +63,30 @@ import mir.util.GeneratorRegularExpressionFunctions;
 import mir.util.GeneratorStringFunctions;
 import mir.util.ResourceBundleGeneratorFunction;
 import mir.util.StringRoutines;
+import mircoders.global.MirGlobal;
 import mircoders.servlet.ServletHelper;
+import multex.Failure;
 
 import org.apache.struts.util.MessageResources;
 
 /**
  * TemplateServlet
  * @author idefix
- * @version $Id: TemplateServlet.java,v 1.2 2003/09/07 16:55:00 idfx Exp $
+ * @version $Id: TemplateServlet.java,v 1.3 2003/09/18 21:42:17 idfx Exp $
  */
 public class TemplateServlet extends HttpServlet {
-
+       private MirPropertiesConfiguration _configuration;
+       
        /**
         * 
         */
        public TemplateServlet() {
                super();
+               try {
+                       _configuration = MirPropertiesConfiguration.instance();
+               } catch (PropertiesConfigExc e) {
+                       throw new Failure("could not load config", e);
+               }
        }
        
        
@@ -104,6 +115,8 @@ public class TemplateServlet extends HttpServlet {
        protected void process(HttpServletRequest request, HttpServletResponse response) 
                throws IOException, ServletException {
                try {
+                       setLoginLanguages(this.getServletContext());
+                       
                        Map requestData = new HashMap();
                        Enumeration keys = request.getAttributeNames();
                        while(keys.hasMoreElements()){
@@ -194,7 +207,7 @@ public class TemplateServlet extends HttpServlet {
                        templateData.put("administeroperations", administerOperations);
                        
                        String templateName = generateTemplateString(request);
-                       
+                       System.out.println(templateName);
                        Locale[] locales = new Locale[2];
                        locales[0] = request.getLocale();
                        locales[1] = request.getLocale();
@@ -239,6 +252,50 @@ public class TemplateServlet extends HttpServlet {
                        ServletHelper.generateOpenPostingResponse(printWriter, map, templateString);    
                }               
        }
+       
+       private void setLoginLanguages(ServletContext context) throws ServletException {
+               List loginLanguages = 
+                       (List) context.getAttribute(ServletConstants.LOGIN_LANGUAGES);  
+               try {
+                       if (loginLanguages == null) {
+                               MessageResources messageResources =
+                                       MessageResources.getMessageResources("bundles.adminlocal");
+                               MessageResources messageResources2 =
+                                       MessageResources.getMessageResources("bundles.admin");
+
+                               List languages =
+                                       StringRoutines.splitString(
+                                               MirGlobal.config().getString("Mir.Login.Languages", "en"), ";");
+
+                               loginLanguages = new ArrayList();
+                               Iterator i = languages.iterator();
+                               while (i.hasNext()) {
+                                       String code = (String) i.next();
+                                       Locale locale = new Locale(code, "");
+                                       String name = messageResources.getMessage(locale, "languagename");
+
+                                       if (name == null) {
+                                               name = messageResources2.getMessage(locale, "languagename");
+                                       }
+
+                                       if (name == null) {
+                                               name = code;
+                                       }
+
+                                       Map record = new HashMap();
+                                       record.put("name", name);
+                                       record.put("code", code);
+                                       loginLanguages.add(record);
+                               }
+                               context.setAttribute(ServletConstants.LOGIN_LANGUAGES, 
+                                       loginLanguages);
+                               context.setAttribute(ServletConstants.DEFAULT_LANGUAGE, 
+                                       _configuration.getString("Mir.Login.DefaultLanguage"));
+                       }
+               } catch (Throwable t) {
+                       throw new ServletException(t.getMessage());
+               }
+       }
 
        /**
         * @see javax.servlet.Servlet#destroy()