53e75c62a29a5a98223b7460a05200d7f80f360e
[mir.git] / source / mir / servlet / AbstractServlet.java
1 package mir.servlet;
2
3 import javax.servlet.http.HttpServlet;
4 import javax.servlet.http.HttpServletRequest;
5 import javax.servlet.http.HttpSession;
6 import java.io.File;
7 import java.util.Locale;
8 import java.util.HashMap;
9
10 import mir.misc.HTMLTemplateProcessor;
11 import mir.misc.StringUtil;
12 import mir.misc.MirConfig;
13 import mir.misc.Logfile;
14
15 /**
16  * Title:        Mir
17  * Description:  Abstract servlet-class
18  * Copyright:    Copyright (c) 2001
19  * Company:      Indymedia
20  * @author       idfx
21  * @version 1.0
22  */
23
24 public abstract class AbstractServlet extends HttpServlet {
25   protected static String lang;
26   protected static Logfile theLog;
27
28   /**
29    * the configration
30    */
31   protected boolean getConfig(HttpServletRequest req) {
32
33     String RealPath = super.getServletContext().getRealPath("/");
34     String Uri = req.getRequestURI();
35     String Name = super.getServletName();
36     String RootUri = StringUtil.replace(Uri, "/servlet/" + Name, "");
37
38     // init config
39     MirConfig.initConfig(RealPath, RootUri, Name, getInitParameter("Config"));
40
41     theLog = Logfile.getInstance(this.getClass().getName());
42     theLog.printInfo(Name + " started.");
43     theLog.printInfo("Path is: " + MirConfig.getProp("Home"));
44     theLog.printInfo("Root URI is: " + MirConfig.getProp("RootUri"));
45     theLog.printInfo("Lang is: " + MirConfig.getProp("StandardLanguage"));
46     return true;
47   }
48
49   /**
50    * Bind the language to the session
51    */
52   protected void setLanguage(HttpSession session, String language){
53     session.setAttribute("Language",language);
54   }
55
56   /**
57    * Get the session-bound language
58    */
59   protected String getLanguage(HttpServletRequest req, HttpSession session){
60     String lang = (String)session.getAttribute("Language");
61     if(lang==null || lang.equals("")){
62       return getAcceptLanguage(req);
63     } else {
64       return lang;
65     }
66   }
67
68   /**
69    * Checks the Accept-Language of the client browser.
70    * If this language is available it returns its country-code,
71    * else it returns the standard-language
72    */
73   protected String getAcceptLanguage(HttpServletRequest req){
74     Locale loc = req.getLocale();
75     lang = loc.getLanguage();
76     File f = new File(HTMLTemplateProcessor.templateDir+"/"+lang);
77     //is there an existing template-path?
78     if(!f.isDirectory()){
79       //no there isn't. we use standard-language
80       lang = MirConfig.getProp("StandardLanguage");
81       theLog.printDebugInfo("language not existing");
82     }
83     theLog.printDebugInfo("Language: " + lang);
84     return lang;
85   }
86 }