3c1c6e4b5c81c913b982ae7e2866de943292ed45
[mir.git] / source / mircoders / servlet / ServletModuleComment.java
1 package mircoders.servlet;
2
3 import java.io.*;
4 import java.sql.*;
5 import java.util.*;
6 import java.net.*;
7 import javax.servlet.*;
8 import javax.servlet.http.*;
9
10 import freemarker.template.*;
11
12 import webdb.servlet.*;
13 import webdb.module.*;
14 import webdb.misc.*;
15 import webdb.entity.*;
16 import webdb.storage.*;
17
18 import mir.entity.*;
19 import mir.storage.*;
20 import mir.module.*;
21
22 /*
23  *  ServletModuleComment - controls navigation for Comments
24  *
25  *
26  * @author RK
27  */
28
29 public class ServletModuleComment extends ServletModule
30 {
31
32         private ModuleContent     moduleContent;
33
34         // Singelton / Kontruktor
35         private static ServletModuleComment instance = new ServletModuleComment();
36         public static ServletModule getInstance() { return instance; }
37
38         private ServletModuleComment() {
39                 theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("ServletModule.Comment.Logfile"));
40                 templateListString = Configuration.getProperty("ServletModule.Comment.ListTemplate");
41                 templateObjektString = Configuration.getProperty("ServletModule.Comment.ObjektTemplate");
42                 templateConfirmString = Configuration.getProperty("ServletModule.Comment.ConfirmTemplate");
43                 try {
44                         mainModule = new ModuleComment(DatabaseComment.getInstance());
45                         moduleContent = new ModuleContent(DatabaseContent.getInstance());
46                 }
47                 catch (StorageObjectException e) {
48                         theLog.printError("servletmodule: comment could not be initialized");
49                 }
50         }
51
52
53         public void list(HttpServletRequest req, HttpServletResponse res)
54                 throws ServletModuleException
55         {
56                         // Parameter auswerten
57                         SimpleHash mergeData = new SimpleHash();
58                         String query_text = req.getParameter("query_text");
59                         mergeData.put("query_text",query_text);
60                         if (query_text!=null) mergeData.put("query_text_encoded",URLEncoder.encode(query_text));
61                         String query_field = req.getParameter("query_field");
62                         mergeData.put("query_field",query_field);
63                         String query_is_published = req.getParameter("query_is_published");
64                         mergeData.put("query_is_published",query_is_published);
65
66                         String offset = req.getParameter("offset");
67                         if (offset==null || offset.equals("")) offset="0";
68                         mergeData.put("offset",offset);
69
70                         // patching order
71                         String order = req.getParameter("order");
72                         if(order!=null) {
73                                 mergeData.put("order", order);
74                                 mergeData.put("order_encoded", URLEncoder.encode(order));
75                                 if (order.equals("webdb_create")) order="webdb_create desc";
76                         }
77
78                         // sql basteln
79                         String whereClause=""; boolean isFirst=true;
80                         if (query_text!=null && !query_text.equalsIgnoreCase("")) {
81                                 whereClause += "lower("+query_field+") like lower('%"+query_text+"%')"; isFirst=false;}
82                         if (query_is_published != null && !query_is_published.equals("")) {
83                                 if (isFirst==false) whereClause+=" and ";
84                                 whereClause += "is_published='"+query_is_published+"'";
85                                 isFirst=false;
86                         }
87
88                         theLog.printDebugInfo("sql-whereclause: " + whereClause + " order: " + order + " offset: " + offset);
89
90                         // fetch und ausliefern
91                         try {
92
93                                 if (query_text!=null || query_is_published!=null ) {
94                                         EntityList theList = mainModule.getByWhereClause(whereClause, order, (new Integer(offset)).intValue());
95                                         if (theList!=null) {
96
97                                                 //make articleHash for comment
98                                                 StringBuffer buf= new StringBuffer("id in (");boolean first=true;
99                                                 for(int i=0;i<theList.size();i++) {
100                                                         if (first==false) buf.append(",");
101                                                         first=false;
102                                                         buf.append(theList.elementAt(i).getValue("to_media"));
103                                                 }
104                                                 buf.append(")");
105                                                 SimpleHash articleHash = HTMLTemplateProcessor.makeSimpleHash(moduleContent.getByWhereClause(buf.toString(),-1));
106                                                 mergeData.put("articleHash", articleHash);
107
108                                                 // get comment
109                                                 mergeData.put("contentlist",HTMLTemplateProcessor.makeSimpleList(theList));
110                                                 mergeData.put("count", (new Integer(theList.getCount())).toString());
111                                                 mergeData.put("from", (new Integer(theList.getFrom())).toString());
112                                                 mergeData.put("to", (new Integer(theList.getTo())).toString());
113                                                 if (theList.hasNextBatch())
114                                                         mergeData.put("next", (new Integer(theList.getNextBatch())).toString());
115                                                 if (theList.hasPrevBatch())
116                                                         mergeData.put("prev", (new Integer(theList.getPrevBatch())).toString());
117                                         }
118                                 }
119                                 // raus damit
120                                 HTMLTemplateProcessor.process(getLanguage(req)+"/"+templateListString, mergeData, res.getWriter());
121                         }
122                         catch (ModuleException e) {throw new ServletModuleException(e.toString());}
123                         catch (IOException e) {throw new ServletModuleException(e.toString());}
124                         catch (Exception e) {throw new ServletModuleException(e.toString());}
125         }
126 }