7ade219aba553ef44f5ffac55f64423d7567e380
[mir.git] / source / OpenMir.java
1 import java.io.*;
2 import java.util.*;
3 import java.net.*;
4 import java.lang.reflect.*;
5 import javax.servlet.*;
6 import javax.servlet.http.*;
7 import java.sql.*;
8
9 import freemarker.template.*;
10
11 import mir.misc.*;
12 import mir.xml.XmlConfigurator;
13 import mir.servlet.*;
14
15 import mircoders.servlet.*;
16 import mircoders.module.*;
17 import mircoders.entity.*;
18 import mircoders.storage.*;
19
20 /**
21  *  OpenMir.java - main servlet for open posting and comment feature to articles
22  *
23  *  @author RK 1999-2001
24  *
25  */
26
27
28 public class OpenMir extends AbstractServlet {
29   
30   private static boolean                confed=false;
31   private static String lang;
32   public HttpSession session;
33
34   public void doGet(HttpServletRequest req, HttpServletResponse res)
35     throws ServletException, IOException {
36     doPost(req,res);
37   }
38
39   public void init() throws ServletException {
40     try {
41       XmlConfigurator xmlXonfigurator = XmlConfigurator.getInstance();
42       xmlXonfigurator.addRequiredTag("/mir/class:mir.storage.DatabaseConfig/property:username");
43       xmlXonfigurator.addRequiredTag("/mir/class:mir.storage.DatabaseConfig/property:password");
44       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:password");
45       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:username");
46       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:host");
47       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:adaptor");
48       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:limit");
49       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:poolMax");
50       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:poolMin");
51       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:poolResetTime");
52       xmlXonfigurator.addComesFirstTag("/mir/class:mir.storage.DatabaseConfig/property:poolLog");
53       xmlXonfigurator.configure(new File(getInitParameter("xml-config")));
54       System.err.println("INIT");
55       /*try {
56         MirXmlParser xmlParser = new MirXmlParser();
57         xmlParser.parse("/home/heckmann/server.xml");*/
58     } catch (Exception e) {
59       e.printStackTrace();
60       throw new UnavailableException ("Error loading Config file: "+e.toString(), 0);
61     } 
62     System.err.println("DONE INIT");
63   }
64
65   public void doPost(HttpServletRequest req, HttpServletResponse res)
66     throws ServletException, IOException {
67
68     long            startTime = (new java.util.Date()).getTime();
69     long            sessionConnectTime=0;
70
71     
72     if (!confed){
73       confed = getConfig(req);
74     }
75     
76     session = req.getSession();
77
78     if(session.getAttribute("Language")==null){
79       setLanguage(session,getAcceptLanguage(req));
80     }
81
82     res.setContentType("text/html");
83     try {
84       ServletModuleDispatch.dispatch(ServletModuleOpenIndy.getInstance(),req,res);
85     }
86     catch (ServletModuleException e){
87       e.printStackTrace();
88       handleError(res,res.getWriter(), "OpenIndy :: ServletException in Module ServletModule -- " + e.toString());
89     }
90     // timing...
91     sessionConnectTime = new java.util.Date().getTime() - startTime;
92     theLog.printInfo("EXECTIME (ServletModuleOpenIndy): " + sessionConnectTime + " ms");
93   }
94
95   private void handleError(HttpServletResponse res,PrintWriter out, String errorString) {
96
97     try {
98       theLog.printError(errorString);
99       SimpleHash modelRoot = new SimpleHash();
100       modelRoot.put("errorstring", new SimpleScalar(errorString));
101       modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
102       HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.ErrorTemplate"),modelRoot,out);
103       out.close();
104     }
105     catch (Exception e) {
106       System.err.println("Fehler in ErrorTemplate");
107     }
108
109   }
110
111   public String getServletInfo(){ return "OpenIndy 1.0 rev01"; }
112
113 }
114