merge of localization branch into HEAD. mh and zap
[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.servlet.*;
13
14 import mircoders.servlet.*;
15 import mircoders.module.*;
16 import mircoders.entity.*;
17 import mircoders.storage.*;
18
19 /**
20  *  OpenMir.java - main servlet for open posting and comment feature to articles
21  *
22  *  @author RK 1999-2001
23  *
24  */
25
26
27 public class OpenMir extends AbstractServlet {
28
29   //private static boolean                confed=false;
30   private static String lang;
31   public HttpSession session;
32
33   public void doGet(HttpServletRequest req, HttpServletResponse res)
34     throws ServletException, IOException {
35     doPost(req,res);
36   }
37
38   public void doPost(HttpServletRequest req, HttpServletResponse res)
39     throws ServletException, IOException {
40
41     long            startTime = (new java.util.Date()).getTime();
42     long            sessionConnectTime=0;
43
44     // get the configration - this could conflict if 2 mirs are in the
45     // VM maybe? to be checked. -mh
46     if(getServletContext().getAttribute("mir.confed") == null) {
47       getConfig(req);
48     }
49     session = req.getSession();
50
51     if(session.getAttribute("Language")==null){
52       if (req.getParameter("language")!=null) {
53         setLanguage(session, req.getParameter("language"));
54       }
55       else {
56         setLanguage(session, getAcceptLanguage(req));
57       }
58     }
59
60     if (req.getParameter("language")!=null)
61       setLocale(session, new Locale(req.getParameter("language"), "") );
62
63     res.setContentType("text/html; charset="
64                       +MirConfig.getProp("Mir.DefaultEncoding"));
65     try {
66       ServletModuleDispatch.dispatch(ServletModuleOpenIndy.getInstance(),req,res);
67     }
68     catch (ServletModuleUserException e) {
69       handleUserError(req,res,res.getWriter(), e.getMsg());
70     }
71     catch (ServletModuleException e){
72       e.printStackTrace();
73       handleError(req,res,res.getWriter(), "OpenIndy :: ServletException in Module ServletModule -- " + e.toString());
74     }
75     // timing...
76     sessionConnectTime = new java.util.Date().getTime() - startTime;
77     theLog.printInfo("EXECTIME (ServletModuleOpenIndy): " + sessionConnectTime + " ms");
78   }
79
80   private void handleUserError(HttpServletRequest req, HttpServletResponse res,
81                                PrintWriter out, String errorString) {
82     try {
83       theLog.printError(errorString);
84       SimpleHash modelRoot = new SimpleHash();
85       modelRoot.put("errorstring", new SimpleScalar(errorString));
86       modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
87       HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.UserErrorTemplate"),
88                                     modelRoot, out, req.getLocale() );
89       out.close();
90     }
91     catch (Exception e) {
92       System.err.println("Fehler in UserErrorTemplate");
93     }
94
95   }
96
97   private void handleError(HttpServletRequest req, HttpServletResponse res,PrintWriter out, String errorString) {
98
99     try {
100       theLog.printError(errorString);
101       SimpleHash modelRoot = new SimpleHash();
102       modelRoot.put("errorstring", new SimpleScalar(errorString));
103       modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(
104                                                new GregorianCalendar())));
105       HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.ErrorTemplate"),
106                                     modelRoot,out, req.getLocale());
107       out.close();
108     }
109     catch (Exception e) {
110       System.err.println("Fehler in ErrorTemplate");
111     }
112
113   }
114
115   public String getServletInfo(){
116     return "OpenMir "+MirConfig.getProp("Mir.Version");
117   }
118
119 }
120