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