At last the EntityBatchingProducerNode is working. This will replace the old
[mir.git] / source / mircoders / producer / ProducerTopics.java
index 7b8ac84..f26ab69 100755 (executable)
@@ -2,12 +2,14 @@ package mircoders.producer;
 
 import java.io.*;
 import java.lang.*;
+import java.lang.reflect.*;
 import java.util.*;
 import java.sql.*;
 
 import freemarker.template.*;
 
 import mir.misc.*;
+import mir.media.*;
 import mir.storage.*;
 import mir.module.*;
 import mir.entity.*;
@@ -20,10 +22,18 @@ import mircoders.storage.*;
 public class ProducerTopics extends ProducerList {
 
   public String where;
-
-  public void setAdditional(String key, TemplateModel value) {
-    additional.put(key,value);
-  }
+  String              currentMediaId;
+  EntityList          upMediaEntityList;
+  EntityList          imageEntityList;
+  EntityList          currentMediaList;
+  Entity              mediaType;
+  EntityMedia         uploadedMedia;
+  Class               mediaHandlerClass=null;
+  MirMedia            mediaHandler=null;
+  String              mediaHandlerName=null;
+  Database            mediaStorage=null;
+  String              tinyIcon;
+  String              iconAlt;
 
   public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)
     throws StorageObjectException, ModuleException {
@@ -32,22 +42,28 @@ public class ProducerTopics extends ProducerList {
   }
 
   public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
-    throws StorageObjectException, ModuleException {
+    throws StorageObjectException, ModuleException
+  {
+    long startTime = System.currentTimeMillis();
+    int pageCount =0;
+    logHTML(htmlout, "Producer.Topics: started");
 
-    orderBy="date desc, webdb_create desc";
+    /** @todo should be done in static */
     listTemplate = MirConfig.getProp("Producer.TopicList.Template");
 
+    orderBy="date desc, webdb_create desc";
     EntityList topicsEntityList;
     if(where==null){
       topicsEntityList = topicsModule.getByWhereClause("","title", -1);
     } else {
       topicsEntityList = topicsModule.getByWhereClause(where,"title", -1);
     }
-    SimpleList topicsList = HTMLTemplateProcessor.makeSimpleList(topicsEntityList);
 
     for(int i=0; i < topicsEntityList.size(); i++){
 
       EntityTopics currentTopic = (EntityTopics)topicsEntityList.elementAt(i);
+
+      try {
       EntityList contentEntityList = DatabaseContentToTopics.getInstance().getContent(currentTopic);
       String whereClauseSpecial=null;
 
@@ -65,7 +81,7 @@ public class ProducerTopics extends ProducerList {
             whereClause += currentContent.getId();
             whereClauseSpecial += currentContent.getId();
 
-            setAdditional("topic",HTMLTemplateProcessor.makeSimpleHash(currentTopic));
+            setAdditional("topic",currentTopic);
 
             first = false;
           }
@@ -87,22 +103,28 @@ public class ProducerTopics extends ProducerList {
         EntityContent currentContent;
         if(entityList != null && entityList.size()==1){
           currentContent = (EntityContent)entityList.elementAt(0);
-          SimpleHash specialHash = HTMLTemplateProcessor.makeSimpleHash(currentContent);
-          // get the images
-          EntityList currentMedia = DatabaseContentToMedia.getInstance().getImages(currentContent);
-          if (currentMedia!=null && currentMedia.getCount()>=1) {
-            SimpleList mediaList = HTMLTemplateProcessor.makeSimpleList(currentMedia);
-            specialHash.put("to_media",mediaList);
+          try {
+              setAdditional("special",currentContent);
+          } catch (Exception e) {
+            theLog.printError("ProducerTopics: problem with start special media: "+currentContent.getId()+" "+e.toString()+" <font color=\"red\">skipping</font>");
+            logHTML(htmlout,"ProducerTopics: problem with start special media: "+currentContent.getId()+" "+e.toString());
           }
-          setAdditional("special",specialHash);
         }
-        
+
         //set the list of topics
-        setAdditional("topicslist",topicsList);
+        setAdditional("topicslist",topicsEntityList);
 
         handleIt(htmlout,user,force);
+        pageCount++;
+      }
+      } catch (Exception e) {
+        theLog.printError("ProducerTopics: problem with start special media: "
+        +e.toString()+" <font color=\"red\">skipping</font>");
+        logHTML(htmlout,"ProducerTopics: problem with topic id: "
+        +currentTopic.getId()+ "<font color=\"red\">skipping</font>");
       }
     }
+    logHTMLFinish(htmlout, "Topics", pageCount, startTime, System.currentTimeMillis());
   }
 
   public static void main(String argv[]){