jlint debugging...
[mir.git] / source / mircoders / producer / ProducerTopics.java
index 75356d4..7fb06c0 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.*;
@@ -19,11 +21,23 @@ import mircoders.storage.*;
 
 public class ProducerTopics extends ProducerList {
 
-       public String where;
-
-       public void setAdditional(String key, TemplateModel value) {
-               additional.put(key,value);
-       }
+  public String where;
+  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 setAdditional(String key, TemplateModel value) {
+    additional.put(key,value);
+  }
 
   public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync, String id)
     throws StorageObjectException, ModuleException {
@@ -31,11 +45,11 @@ public class ProducerTopics extends ProducerList {
     handle(htmlout,user,force,sync);
   }
 
-       public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
-               throws StorageObjectException, ModuleException {
+  public void handle(PrintWriter htmlout, EntityUsers user, boolean force, boolean sync)
+    throws StorageObjectException, ModuleException {
 
-               orderBy="date desc, webdb_create desc";
-               listTemplate = MirConfig.getProp("Producer.TopicList.Template");
+    orderBy="date desc, webdb_create desc";
+    listTemplate = MirConfig.getProp("Producer.TopicList.Template");
 
     EntityList topicsEntityList;
     if(where==null){
@@ -43,12 +57,12 @@ public class ProducerTopics extends ProducerList {
     } else {
       topicsEntityList = topicsModule.getByWhereClause(where,"title", -1);
     }
-               SimpleList topicsList = HTMLTemplateProcessor.makeSimpleList(topicsEntityList);
+    SimpleList topicsList = HTMLTemplateProcessor.makeSimpleList(topicsEntityList);
 
-               for(int i=0; i < topicsEntityList.size(); i++){
+    for(int i=0; i < topicsEntityList.size(); i++){
 
-                       EntityTopics currentTopic = (EntityTopics)topicsEntityList.elementAt(i);
-                       EntityList contentEntityList = DatabaseContentToTopics.getInstance().getContent(currentTopic);
+      EntityTopics currentTopic = (EntityTopics)topicsEntityList.elementAt(i);
+      EntityList contentEntityList = DatabaseContentToTopics.getInstance().getContent(currentTopic);
       String whereClauseSpecial=null;
 
       if (contentEntityList!=null || force==true) {
@@ -82,21 +96,65 @@ public class ProducerTopics extends ProducerList {
 
         // get the startarticle
         EntityList entityList = contentModule.getContent(whereClauseSpecial,"date desc, webdb_create desc",0,1);
-        SimpleList specialList = HTMLTemplateProcessor.makeSimpleList(entityList);
         String currentMediaId = null;
         SimpleHash imageHash = new SimpleHash();
         EntityContent currentContent;
-        if(entityList != null){
-          for (int k=0; k < entityList.size();k++) {
-            currentContent = (EntityContent)entityList.elementAt(k);
-            currentMediaId = currentContent.getValue("to_media");
-            if (currentMediaId!=null && !currentMediaId.equals("")) {
-              imageHash.put(currentMediaId, HTMLTemplateProcessor.makeSimpleHash(imageModule.getById(currentMediaId)));
-            }
+        if(entityList != null && entityList.size()==1){
+          currentContent = (EntityContent)entityList.elementAt(0);
+          try {
+              SimpleHash specialHash = HTMLTemplateProcessor.makeSimpleHash(currentContent);
+
+              currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent);
+              if (currentMediaList!=null && currentMediaList.getCount()>=1) {
+                SimpleList mediaListAudio = new SimpleList();
+                SimpleList mediaListImages = new SimpleList();
+                SimpleList mediaListVideo = new SimpleList();
+                SimpleList mediaListOther = new SimpleList();
+                for (int n=0; n < currentMediaList.size();n++) {
+                  upMedia = currentMediaList.elementAt(n);
+                  upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
+                  mediaType = ((EntityMedia)upMedia).getMediaType();
+                  //must be a non-existant to_media_type entry..
+                  if (mediaType != null) {
+                    mediaHandlerName = mediaType.getValue("classname");
+                    mediaStorageName = mediaType.getValue("tablename");
+                    mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
+                    mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
+                    mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
+                    Method m = mediaStorageClass.getMethod("getInstance", null);
+                    mediaStorage = (Database)m.invoke(null, null);
+                    //we most likely need further info
+                    upMedia = mediaStorage.selectById(upMedia.getId());
+                    upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType));
+                    if (upMedia.getValue("is_published").equals("1")) {
+                      if (mediaHandler.isImage()) {
+                        mediaListImages.add(upMediaSimpleHash);
+                      } else if (mediaHandler.isAudio()) {
+                        mediaListAudio.add(upMediaSimpleHash);
+                      } else if (mediaHandler.isVideo()) {
+                        mediaListVideo.add(upMediaSimpleHash);
+                      } else {
+                        mediaListOther.add(upMediaSimpleHash);
+                      }
+                    } //end if is_published
+                  } //end if media_type != null
+                } //end for
+                specialHash.put("to_media_audio", mediaListAudio);
+                specialHash.put("to_media_images", mediaListImages);
+                specialHash.put("to_media_video", mediaListVideo);
+                specialHash.put("to_media_other", mediaListOther);
+              } //end if currentMediaList != null
+                                                       //convert to html
+                                                       if ( ((SimpleScalar)specialHash.get("is_html")).getAsString().equals("0") ) {
+                                                               SimpleScalar temp = (SimpleScalar)specialHash.get("description");
+                                                               specialHash.put("description",StringUtil.createHTML(temp.getAsString()));
+                                                       }
+              setAdditional("special",specialHash);
+          } catch (Exception e) {
+            theLog.printError("ProducerTopics: problem with start special: "+currentContent.getId()+" "+e.toString());
+            logHTML(htmlout,"ProducerTopics: problem with start special: "+currentContent.getId()+" "+e.toString());
           }
-          setAdditional("specialimage",imageHash);
         }
-        setAdditional("special",specialList);
 
         //set the list of topics
         setAdditional("topicslist",topicsList);
@@ -104,13 +162,13 @@ public class ProducerTopics extends ProducerList {
         handleIt(htmlout,user,force);
       }
     }
-       }
-
-       public static void main(String argv[]){
-               try {
-                       new ProducerOpenPosting().handle(new PrintWriter(System.out), null,false, false);
-               } catch(Exception e) {
-                       System.err.println(e.toString());
-               }
-       }
-}
\ No newline at end of file
+  }
+
+  public static void main(String argv[]){
+    try {
+      new ProducerOpenPosting().handle(new PrintWriter(System.out), null,false, false);
+    } catch(Exception e) {
+      System.err.println(e.toString());
+    }
+  }
+}