Initial revision
[mir.git] / source / mircoders / producer / ProducerContent.java
diff --git a/source/mircoders/producer/ProducerContent.java b/source/mircoders/producer/ProducerContent.java
new file mode 100755 (executable)
index 0000000..c2a927c
--- /dev/null
@@ -0,0 +1,157 @@
+package mircoders.producer;\r
+\r
+import java.io.*;\r
+import java.lang.*;\r
+import java.util.*;\r
+\r
+import freemarker.template.*;\r
+\r
+import com.icl.saxon.trax.Transformer;\r
+\r
+import webdb.misc.*;\r
+import webdb.storage.*;\r
+import webdb.module.*;\r
+import webdb.entity.*;\r
+\r
+import mir.module.*;\r
+import mir.entity.*;\r
+import mir.storage.*;\r
+\r
+\r
+public class ProducerContent extends Producer {\r
+\r
+       public static void main(String argv[]){\r
+               Configuration.initConfig("config");\r
+               System.out.println(Configuration.getProperty("Producer.DocRoot"));\r
+               try {\r
+                       new ProducerContent().handle(new PrintWriter(System.out), null, false,false);\r
+               } catch(Exception e) { System.err.println(e.toString()); }\r
+       }\r
+\r
+       public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)\r
+               throws StorageObjectException, ModuleException {\r
+               handle(htmlout,user,force,sync,null);\r
+       }\r
+\r
+\r
+       public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)\r
+               throws StorageObjectException, ModuleException\r
+       {\r
+\r
+               String contentTemplate = Configuration.getProperty("Producer.Content.Template");\r
+               int contentBatchsize = Integer.parseInt(Configuration.getProperty("Producer.Content.Batchsize"));\r
+               String extLinkName = Configuration.getProperty("Producer.ExtLinkName");\r
+               String intLinkName = Configuration.getProperty("Producer.IntLinkName");\r
+               String mailLinkName = Configuration.getProperty("Producer.MailLinkName");\r
+               String imageRoot = Configuration.getProperty("Producer.ImageRoot");\r
+\r
+               long                sessionConnectTime = 0;\r
+               long                startTime = (new java.util.Date()).getTime();\r
+               String              whereClause = " ";\r
+               String              orderBy = " ";\r
+               String              htmlFileName = null;\r
+               String              currentMediaId;\r
+               EntityContent       currentContent;\r
+               EntityList          batchEntityList;\r
+               HashMap             currentContentValues;\r
+               SimpleHash          imageHash = new SimpleHash();\r
+               EntityGruppen       userEntity=null;\r
+\r
+               // production of the content-pages\r
+               orderBy="date desc, webdb_lastchange desc";\r
+               if(force==true){\r
+                       whereClause="is_published='1'";\r
+\r
+                       // if true: produces a single content item\r
+                       if(id !=null){\r
+                               whereClause += " AND id="+id;\r
+                       }\r
+                       batchEntityList = contentModule.getContent(whereClause, orderBy, 0, contentBatchsize, userEntity);\r
+               } else {\r
+                       whereClause="is_produced='0' AND is_published='1'";\r
+\r
+                       //if true produces a single contentitem\r
+                       if(id !=null){\r
+                               whereClause += " AND id="+id;\r
+                       }\r
+                       batchEntityList = contentModule.getContent(whereClause, orderBy, 0, contentBatchsize, userEntity);\r
+               }\r
+\r
+               while (batchEntityList != null) {\r
+                       for(int i=0;i<batchEntityList.size();i++) {\r
+                               currentContent = (EntityContent)batchEntityList.elementAt(i);\r
+                               currentContentValues = currentContent.getValues();\r
+                               //currentContentValues.put("content_data",currentContent.getContentData());\r
+\r
+\r
+                               String date = (String)currentContentValues.get("date");\r
+                               String year = date.substring(0,4);\r
+                               String month = date.substring(4,6);\r
+\r
+                               htmlFileName =  producerDocRoot\r
+                                       + "/" + year + "/" + month + "/" +  currentContentValues.get("id") + ".shtml";\r
+\r
+                               currentContentValues.put("content_data",StringUtil.deleteForbiddenTags((String)currentContentValues.get("content_data")));\r
+                               currentContentValues.put("description",StringUtil.deleteForbiddenTags((String)currentContentValues.get("description")));\r
+\r
+        if (currentContentValues.get("is_html").equals("0")) {\r
+          String temp = (String)currentContentValues.get("content_data");\r
+          theLog.printDebugInfo("länge:"+temp.length());\r
+          if(temp!=null && temp.length()>0){\r
+            temp = StringUtil.createHTML(temp,imageRoot,mailLinkName,extLinkName,intLinkName);\r
+            temp = StringUtil.decodeHTMLinTags(temp);\r
+            currentContentValues.put("content_data",temp);\r
+          }\r
+          temp = (String)currentContentValues.get("description");\r
+          if(temp!=null && temp.length()>0){\r
+            temp = StringUtil.createHTML(temp,imageRoot,mailLinkName,extLinkName,intLinkName);\r
+            temp = StringUtil.decodeHTMLinTags(temp);\r
+            currentContentValues.put("description",temp);\r
+          }\r
+                               } else {\r
+          String temp = (String)currentContentValues.get("content_data");\r
+          if(temp!=null && temp.length()>0){\r
+            temp = StringUtil.decodeHTMLinTags(temp);\r
+            currentContentValues.put("content_data",temp);\r
+          }\r
+          temp = (String)currentContentValues.get("description");\r
+          if(temp!=null && temp.length()>0){\r
+            temp = StringUtil.decodeHTMLinTags(temp);\r
+            currentContentValues.put("description",temp);\r
+          }\r
+        }\r
+\r
+                               SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(currentContentValues);\r
+\r
+                               // get the images\r
+                               currentMediaId = currentContent.getValue("to_media");\r
+                               if (currentMediaId!=null && !currentMediaId.equals("")) {\r
+                                       imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));\r
+                               }\r
+                               mergeData.put("images", imageHash);\r
+\r
+                               // get the comments for the article\r
+                               mergeData.put("comments", currentContent.getComments());\r
+\r
+                               // get the topics of this article\r
+                               mergeData.put("topics",HTMLTemplateProcessor.makeSimpleList(DatabaseContentToTopics.getInstance().getTopics(currentContent)));\r
+\r
+                               boolean retVal = produce(contentTemplate, htmlFileName, mergeData, htmlout);\r
+                               sessionConnectTime = new java.util.Date().getTime() - startTime;\r
+                               if (retVal == true && !"1".equals(currentContent.getValue("is_produced")))\r
+                                               currentContent.setProduced(true);\r
+                       }\r
+                       if (batchEntityList.hasNextBatch()){\r
+                               batchEntityList = contentModule.getContent(whereClause, orderBy, batchEntityList.getNextBatch(),contentBatchsize, userEntity);\r
+                               //theLog.printDebugInfo("producing next batch");\r
+                       } else {\r
+                               batchEntityList=null;\r
+                       }\r
+               }\r
+               // Finish\r
+               sessionConnectTime = new java.util.Date().getTime() - startTime;\r
+               logHTML(htmlout, "Producer.Content finished: " + sessionConnectTime + " ms.");\r
+\r
+       }\r
+\r
+}
\ No newline at end of file