more media.. media is now available in article
[mir.git] / source / mircoders / producer / ProducerContent.java
index bee57b8..11519f1 100755 (executable)
@@ -2,11 +2,13 @@ package mircoders.producer;
 
 import java.io.*;
 import java.lang.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import freemarker.template.*;
 
 import mir.misc.*;
+import mir.media.*;
 import mir.storage.*;
 import mir.module.*;
 import mir.entity.*;
@@ -67,6 +69,15 @@ public class ProducerContent extends Producer {
     HashMap             currentContentValues;
     SimpleHash          imageHash = new SimpleHash();
     EntityUsers         userEntity=null;
+    Entity              mediaType;
+    Entity              upMedia;
+    SimpleHash          upMediaSimpleHash;
+    Class               mediaHandlerClass;
+    Class               mediaStorageClass;
+    String              mediaStorageName;
+    String              mediaHandlerName=null;
+    MirMedia            mediaHandler=null;
+    Database            mediaStorage=null;
 
 
 
@@ -136,12 +147,37 @@ public class ProducerContent extends Producer {
         //create the freemarker-model
         SimpleHash mergeData = HTMLTemplateProcessor.makeSimpleHash(currentContentValues);
 
-        // get the images
-        EntityList currentMedia = DatabaseContentToMedia.getInstance().getImages(currentContent);
-        if (currentMedia!=null && currentMedia.getCount()>=1) {
-          SimpleList mediaList = HTMLTemplateProcessor.makeSimpleList(currentMedia);
+        // get the uploaded media
+        EntityList currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(currentContent);
+        if (currentMediaList!=null && currentMediaList.getCount()>=1) {
+          SimpleList mediaList = new SimpleList();
+          for (int n=0; n < currentMediaList.size();n++) {
+            upMedia = currentMediaList.elementAt(n);
+            upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
+            mediaType = ((EntityUploadedMedia)upMedia).getMediaType();
+            //must be a non-existant to_media_type entry..
+            if (mediaType != null) {
+              try {
+                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();
+                if(!mediaStorageName.equals(new String("UploadedMedia"))) {
+                  Method m = mediaStorageClass.getMethod("getInstance", null);
+                  mediaStorage = (Database)m.invoke(null, null);
+                  //we most likely need further info
+                  upMedia = mediaStorage.selectById(upMedia.getId());
+                }
+              } catch (Exception e) {
+                theLog.printError("ProducerStartpage:problem in reflection: "+mediaHandlerName);
+              } //end catch
+              upMediaSimpleHash.put("url", mediaHandler.getURL(upMedia, mediaType));
+              mediaList.add(upMediaSimpleHash);
+            } //end if media_type != null
+          } //end for
           mergeData.put("to_media", mediaList);
-        }
+        } //end if currentMediaList != null
 
         // get the comments for the article
         mergeData.put("comments", currentContent.getComments());