merged with 1.1
[mir.git] / source / mircoders / servlet / ServletModuleHidden.java
index f1d8002..6ae6d20 100755 (executable)
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with  any library licensed under the Apache Software License, 
- * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library 
- * (or with modified versions of the above that use the same license as the above), 
- * and distribute linked combinations including the two.  You must obey the 
- * GNU General Public License in all respects for all of the code used other than 
- * the above mentioned libraries.  If you modify this file, you may extend this 
- * exception to your version of the file, but you are not obligated to do so.  
+ * the code of this program with  any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two.  You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries.  If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
  * If you do not wish to do so, delete this exception statement from your version.
  */
 package mircoders.servlet;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import mir.entity.EntityList;
-import mir.log.LoggerWrapper;
-import mir.misc.HTMLTemplateProcessor;
-import mir.servlet.ServletModule;
-import mir.servlet.ServletModuleExc;
-import mir.servlet.ServletModuleFailure;
-import mir.storage.StorageObjectFailure;
-import mircoders.module.ModuleContent;
+import java.util.Iterator;\r
+import java.util.Locale;\r
+import java.util.Map;\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import mir.entity.adapter.EntityIteratorAdapter;\r
+import mir.log.LoggerWrapper;\r
+import mir.servlet.ServletModule;\r
+import mir.servlet.ServletModuleExc;\r
+import mir.servlet.ServletModuleFailure;\r
+import mir.storage.StorageObjectFailure;\r
+import mir.util.CachingRewindableIterator;\r
+import mir.util.HTTPRequestParser;\r
+import mir.util.JDBCStringRoutines;\r
+import mircoders.global.MirGlobal;\r
+import mircoders.module.ModuleContent;\r
 import mircoders.storage.DatabaseContent;
-import freemarker.template.SimpleHash;
 
 /*
  *  ServletModuleHidden - output of so called "censored" articles
@@ -52,15 +57,14 @@ import freemarker.template.SimpleHash;
 
 public class ServletModuleHidden extends ServletModule
 {
-
-// Singelton / Kontruktor
   private static ServletModuleHidden instance = new ServletModuleHidden();
   public static ServletModule getInstance() { return instance; }
 
   private ServletModuleHidden() {
     super();
+
     logger = new LoggerWrapper("ServletModule.Hidden");
-    templateListString = configuration.getString("ServletModule.Hidden.ListTemplate");
+
     try {
       mainModule = new ModuleContent(DatabaseContent.getInstance());
     }
@@ -73,47 +77,29 @@ public class ServletModuleHidden extends ServletModule
   public void list(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc
   {
 // determine parameter
-    SimpleHash mergeData = new SimpleHash();
-    String query_year = req.getParameter("year");
-    String query_month = req.getParameter("month");
-    String order = "webdb_create";
+    HTTPRequestParser requestParser = new HTTPRequestParser(req);
+    Map responseData = ServletHelper.makeGenerationData(req, res, new Locale[] { getLocale(req), getFallbackLocale(req)});
 
-// form sql statement
-    String whereClause = "is_published=false AND webdb_create LIKE '"+
-                         query_year+"-"+query_month+"%'";
+    String query_year = requestParser.getParameter("year");
+    String query_month = requestParser.getParameter("month");
 
-    logger.debug("ServletModuleHidden.list: whereclause: " + whereClause);
-
-// fetch and deliver
     try {
+      if ((query_year!=null && !query_year.equals("")) && (query_month!=null && !query_month.equals(""))) {
+        String whereClause = "is_published=false AND webdb_create LIKE "+
+            "'"+JDBCStringRoutines.escapeStringLiteral(query_year)+"-"+JDBCStringRoutines.escapeStringLiteral(query_month)+"%'";
 
-      if ((query_year!=null && !query_year.equals(""))
-          && (query_month!=null && !query_month.equals(""))) {
-        EntityList theList = mainModule.getByWhereClause(whereClause, order, -1);
-        if (theList!=null && theList.size()>0) {
-
-//make articleHash for comment
-          StringBuffer buf= new StringBuffer("id in (");boolean first=true;
-          for(int i=0;i<theList.size();i++) {
-            if (first==false) buf.append(",");
-            first=false;
-            buf.append(theList.elementAt(i).getValue("to_media"));
-          }
-          buf.append(")");
-          SimpleHash articleHash =
-              HTMLTemplateProcessor.makeSimpleHash(
-              mainModule.getByWhereClause(buf.toString(),-1));
-          mergeData.put("articleHash", articleHash);
+        Iterator articleList =
+            new CachingRewindableIterator(
+              new EntityIteratorAdapter( whereClause, "webdb_create", 100,
+                 MirGlobal.localizer().dataModel().adapterModel(), "content", -1, 0)
+        );
 
-// send the year and month for use in the list template
-          mergeData.put("year", query_year);
-          mergeData.put("month", query_month);
-// get comment
-          mergeData.put("contentlist",theList);
-        }
+        responseData.put("year", query_year);
+        responseData.put("month", query_month);
+        responseData.put("articles", articleList);
       }
-// raus damit
-      HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req), getFallbackLocale(req));
+
+      ServletHelper.generateResponse(res.getWriter(), responseData, listGenerator);
     }
     catch (Throwable e) {
       throw new ServletModuleFailure(e);