support for the new MediaSearchTerm.
authorjohn <john>
Fri, 18 Apr 2003 14:01:41 +0000 (14:01 +0000)
committerjohn <john>
Fri, 18 Apr 2003 14:01:41 +0000 (14:01 +0000)
also hardcoded a 15-article limit for newsletters so we don't open ourselves up to
a dos when we start storing pdfs in memory(real soon now!)

source/mircoders/servlet/ServletModuleOpenIndy.java

index 890c57c..9520b87 100755 (executable)
@@ -94,6 +94,7 @@ import mir.util.HTTPRequestParser;
 import mir.util.StringRoutines;\r
 import mircoders.entity.EntityComment;\r
 import mircoders.entity.EntityContent;\r
+import mircoders.global.CacheKey;\r
 import mircoders.global.MirGlobal;\r
 import mircoders.media.*;\r
 import mircoders.media.UnsupportedMediaFormatExc;\r
@@ -105,6 +106,7 @@ import mircoders.search.AudioSearchTerm;
 import mircoders.search.ContentSearchTerm;\r
 import mircoders.search.ImagesSearchTerm;\r
 import mircoders.search.KeywordSearchTerm;\r
+import mircoders.search.MediaSearchTerm;\r
 import mircoders.search.TextSearchTerm;\r
 import mircoders.search.TopicSearchTerm;\r
 import mircoders.search.UnIndexedSearchTerm;\r
@@ -125,7 +127,7 @@ import mircoders.storage.DatabaseTopics;
  *    open-postings to the newswire\r
  *\r
  * @author mir-coders group\r
- * @version $Id: ServletModuleOpenIndy.java,v 1.74 2003/04/16 03:26:46 zapata Exp $\r
+ * @version $Id: ServletModuleOpenIndy.java,v 1.75 2003/04/18 14:01:41 john Exp $\r
  *\r
  */\r
 \r
@@ -820,7 +822,8 @@ public class ServletModuleOpenIndy extends ServletModule
       ImagesSearchTerm imagesTerm = new ImagesSearchTerm();\r
       AudioSearchTerm audioTerm = new AudioSearchTerm();\r
       VideoSearchTerm videoTerm = new VideoSearchTerm();\r
-\r
+      MediaSearchTerm mediaTerm = new MediaSearchTerm();\r
+      \r
       //make the query available to subsequent iterations\r
 \r
       Iterator j = Arrays.asList(search_variables).iterator();\r
@@ -897,6 +900,11 @@ public class ServletModuleOpenIndy extends ServletModule
             queryString = queryString + " +" + videoFragment;\r
           }\r
 \r
+          String mediaFragment = mediaTerm.makeTerm(req);\r
+          if (mediaFragment != null){\r
+            queryString = queryString + " +" + mediaFragment;\r
+          }\r
+\r
           if (queryString == null || queryString == ""){\r
             queryString = "";\r
           }\r
@@ -1077,6 +1085,7 @@ public class ServletModuleOpenIndy extends ServletModule
   public void getpdf(HttpServletRequest req, HttpServletResponse res)\r
       throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {\r
     String ID_REQUEST_PARAM = "id";\r
+    int maxArticlesInNewsleter = 15; // it is nice not to be dos'ed\r
     try {\r
         String idParam = req.getParameter(ID_REQUEST_PARAM);\r
         if (idParam != null) {\r
@@ -1088,9 +1097,16 @@ public class ServletModuleOpenIndy extends ServletModule
 \r
           REMatch[] idMatches=re.getAllMatches(idParam);\r
 \r
+         String cacheSelector="";\r
+\r
+         for (int i = 0; i < idMatches.length; i++){\r
+           cacheSelector=   cacheSelector + "," + idMatches[i].toString();\r
+         }\r
+\r
+         \r
           if (idMatches.length > 1){\r
             pdfMaker.addLine();\r
-            for (int i = 0; i < idMatches.length; i++){\r
+            for (int i = 0; i < idMatches.length  && i < maxArticlesInNewsleter; i++){\r
               REMatch aMatch = idMatches[i];\r
               String id=aMatch.toString();\r
               EntityContent contentEnt = (EntityContent)contentModule.getById(id);\r
@@ -1129,83 +1145,6 @@ public class ServletModuleOpenIndy extends ServletModule
   }\r
 \r
 \r
-  /*\r
-   * Method for dynamically generating a pdf from a fo file\r
-   * (deprecated until fop gets its act together regarding floats)\r
-   */\r
-\r
-  /*\r
-  public void getpdf(HttpServletRequest req, HttpServletResponse res)\r
-      throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure {\r
-    String ID_REQUEST_PARAM = "id";\r
-    String language = req.getParameter("language");\r
-    String generateFO=configuration.getString("GenerateFO");\r
-    String generatePDF=configuration.getString("GeneratePDF");\r
-\r
-\r
-    //don't do anything if we are not making FO files, or if we are\r
-    //pregenerating PDF's\r
-    if (generateFO.equals("yes") && generatePDF.equals("no")){\r
-      //fop complains unless you do the logging this way\r
-      org.apache.log.Logger log = null;\r
-      Hierarchy hierarchy = Hierarchy.getDefaultHierarchy();\r
-      log = hierarchy.getLoggerFor("fop");\r
-      log.setPriority(Priority.WARN);\r
-\r
-      String producerStorageRoot=configuration.getString("Producer.StorageRoot");\r
-      String producerDocRoot=configuration.getString("Producer.DocRoot");\r
-      //      String templateDir=MirConfig.getPropWithHome("HTMLTemplateProcessor.Dir");\r
-      String xslSheet=configuration.getString("Producer.HTML2FOStyleSheet");\r
-      try {\r
-        String idParam = req.getParameter(ID_REQUEST_PARAM);\r
-        if (idParam != null) {\r
-          EntityContent contentEnt =\r
-            (EntityContent)contentModule.getById(idParam);\r
-          String publishPath = StringUtil.webdbDate2path(contentEnt.getValue("date"));\r
-          String foFile;\r
-\r
-          if (language == null){\r
-            foFile = producerStorageRoot + producerDocRoot + "/"\r
-              + publishPath  + idParam + ".fo";\r
-          }\r
-          else{\r
-            foFile = producerStorageRoot + producerDocRoot + "/"\r
-              + language + publishPath  + idParam + ".fo";\r
-          }\r
-          logger.debug("USING FILES" + foFile + " and " + xslSheet);\r
-          XSLTInputHandler input = new XSLTInputHandler(new File(foFile),\r
-                                                        new File(xslSheet));\r
-\r
-          ByteArrayOutputStream out = new ByteArrayOutputStream();\r
-          res.setContentType("application/pdf");\r
-\r
-          Driver driver = new Driver();\r
-          driver.setLogger(log);\r
-          driver.setRenderer(Driver.RENDER_PDF);\r
-          driver.setOutputStream(out);\r
-          driver.render(input.getParser(), input.getInputSource());\r
-\r
-          byte[] content = out.toByteArray();\r
-          res.setContentLength(content.length);\r
-          res.getOutputStream().write(content);\r
-          res.getOutputStream().flush();\r
-        }\r
-        else {\r
-          throw new ServletModuleExc("Missing id.");\r
-        }\r
-      }\r
-      catch (Throwable t) {\r
-        logger.error(t.toString());\r
-\r
-        throw new ServletModuleFailure(t);\r
-      }\r
-    }\r
-    else {\r
-      throw new ServletModuleExc("Can't generate a PDF because the config tells me not to.");\r
-    }\r
-  }\r
-  */\r
-\r
   public String generateOnetimePassword() {\r
     Random r = new Random();\r
     int random = r.nextInt();\r