ProducerList is now converted to the new way to handle media.
authormh <mh>
Sat, 6 Oct 2001 16:32:25 +0000 (16:32 +0000)
committermh <mh>
Sat, 6 Oct 2001 16:32:25 +0000 (16:32 +0000)
For those annoyed by the DB changes, I may revert to making images inherit from
media again... we'll see.

source/mir/media/MediaHandlerGeneric.java
source/mir/media/MediaHandlerImages.java
source/mir/media/MirMedia.java
source/mircoders/producer/ProducerList.java
source/mircoders/servlet/ServletModuleOpenIndy.java
templates-dist/producer/openposting.template

index 41379cd..253d871 100755 (executable)
@@ -24,6 +24,7 @@ import mir.storage.*;
 public class MediaHandlerGeneric implements MirMedia
 {
 
+    private String imageHost = MirConfig.getProp("Producer.Image.Host");
     private static String imageRoot = MirConfig.getProp("Producer.ImageRoot");
     private Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+"log/media.log");
     public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt ) {
@@ -38,6 +39,9 @@ public class MediaHandlerGeneric implements MirMedia
         //we can't cause of stallman -mh
         //if(FileUtil.write(dir+"/"+datePath+"/"+mediaFname, uploadedData)) {
         if(FileUtil.write(dir+"/"+mediaFname, uploadedData)) {
+            //were done with the data, dereference.
+            uploadedData=null;
+            
             try {
                 ent.setValueForProperty("is_produced", "1");
                 ent.setValueForProperty("icon_is_produced", "1");
@@ -121,6 +125,15 @@ public class MediaHandlerGeneric implements MirMedia
         ent.getValue("publish_path"), title, imageRoot, getBigIcon());
     }
 
+    public String getListView(Entity ent, Entity mediaTypeEnt)
+    {
+      //String title = ent.getValue("title")+
+      //  " - "+mediaTypeEnt.getValue("name")+" "+
+      //  ent.getValue("size")+" Bytes";
+      return StringUtil.createIMGLinks(imageHost+
+        getBigIcon(), null, null, null);
+    }
+
     public boolean isVideo()
     {
         return false;
index 52293d8..aa62a26 100755 (executable)
@@ -65,6 +65,9 @@ public class MediaHandlerImages
             theLog.printDebugInfo("invocation target illegal: "+e.toString()); 
             return false;
         }
+        //deref. -mh
+        uploadData=null;
+
         return true;
        }
 
@@ -94,6 +97,14 @@ public class MediaHandlerImages
         ent.getValue("img_width"));
     }
 
+    public String getListView(Entity ent, Entity mediaTypeEnt)
+    {
+      //String title = ent.getValue("title");
+      return StringUtil.createIMGLinks( MirConfig.getProp("Producer.ProductionHost")+
+        ent.getValue("icon_path"), null, ent.getValue("icon_height"),
+        ent.getValue("icon_width"));
+    }
+
     public String getStoragePath()
     {
         return MirConfig.getProp("Producer.Image.Path");
index f6c59b7..34beee9 100755 (executable)
@@ -27,15 +27,16 @@ public interface  MirMedia{
        public abstract byte[] get (Entity ent, Entity mediaTypeEnt);
        public abstract byte[] getIcon (Entity ent);
        public abstract String getURL (Entity ent, Entity mediaTypeEnt);
-       public String getStoragePath ();
-       public String getIconStoragePath ();
-       public String getPublishHost ();
-       public String getBigIcon ();
-       public String getTinyIcon ();
-       public String getIconAlt ();
-       public boolean isVideo ();
-       public boolean isAudio ();
-       public boolean isImage ();
+       public abstract String getListView (Entity ent, Entity mediaTypeEnt);
+       public abstract String getStoragePath ();
+       public abstract String getIconStoragePath ();
+       public abstract String getPublishHost ();
+       public abstract String getBigIcon ();
+       public abstract String getTinyIcon ();
+       public abstract String getIconAlt ();
+       public abstract boolean isVideo ();
+       public abstract boolean isAudio ();
+       public abstract boolean isImage ();
 
 }
 
index c7043ca..bb44d4f 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.*;
@@ -25,6 +27,17 @@ abstract public class ProducerList extends Producer {
   public String orderBy;
   public String fileDesc;
   protected HashMap additional = new HashMap();
+  Entity              mediaType;
+  Entity              upMedia;
+  SimpleHash          upMediaSimpleHash;
+  Class               mediaHandlerClass;
+  Class               mediaStorageClass;
+  String              mediaStorageName;
+  String              mediaHandlerName=null;
+  MirMedia            mediaHandler=null;
+  Database            mediaStorage=null;
+
+
 
   public void handle(PrintWriter htmlout, EntityUsers user, boolean sync, boolean force)
     throws StorageObjectException, ModuleException {
@@ -89,16 +102,58 @@ abstract public class ProducerList extends Producer {
           for (int k=0; k < list.size();k++) {
             currentContent = (EntityContent)list.elementAt(k);
             //images to content
-            EntityList currentMedia = DatabaseContentToMedia.getInstance().getImages(currentContent);
-            if (currentMedia!=null && currentMedia.getCount()>=1) {
-              SimpleList mediaList = HTMLTemplateProcessor.makeSimpleList(currentMedia);
+            EntityList 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();
+              //SimpleHash allMediaSimpleHash = new SimpleHash();
+              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("ProducerList: problem in reflection: "+mediaHandlerName);
+                  } //end catch
+                  upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType));
+                  if (upMedia.getValue("is_published") == "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
               try{
                 SimpleList contentList = (SimpleList)mergeData.get("contentlist");
                 SimpleHash contentHash = (SimpleHash)contentList.get(k);
-                contentHash.put("to_media", mediaList);
+                contentHash.put("to_media_audio", mediaListAudio);
+                contentHash.put("to_media_images", mediaListImages);
+                contentHash.put("to_media_video", mediaListVideo);
+                contentHash.put("to_media_other", mediaListOther);
               } catch (Exception e){}
+            } //end if currentMediaList != null
 
-            }
             //content to html
             if(currentContent.getValue("is_html").equals("0")){
               String temp = (String)currentContent.getValue("description");
index ccec385..d1a8980 100755 (executable)
@@ -1,6 +1,7 @@
 package mircoders.servlet;
 
 import java.io.*;
+import java.lang.*;
 import java.sql.*;
 import java.util.*;
 import java.net.*;
@@ -288,13 +289,17 @@ public class ServletModuleOpenIndy extends ServletModule
                 Class mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
                 MirMedia mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
                 mediaHandler.set(mpReq.getMedia(), mediaEnt,mediaTypesList.elementAt(0));
-                theLog.printError("about to run ProduceMedia"+mediaId);
+
+                //were done with mpReq at this point, dereference it. as it contains
+                //mucho mem. -mh 01.10.2001
+                mpReq=null;
+
               if(mediaId!=null){
                 new ProducerMedia().handle(null, null, false, false, mediaId);
               }
           } catch (Exception e) {
                 theLog.printError("setting uploaded_media failed: "+e.toString());
-          }
+          } //end try-catch
               
 
           try{
@@ -307,9 +312,12 @@ public class ServletModuleOpenIndy extends ServletModule
         } else {
           theLog.printDebugInfo("Wrong file uploaded!: " + fileName);
           throw new ServletModuleException("ModuleException: One or more files of unrecognized types");
-        }
+        } // end if-else mediaTypesList.size() > 0
           
-      }
+      } //end for Iterator...
+
+      //dereference mp. -mh
+      mp=null;
 
       // producing openpostinglist
       new ProducerOpenPosting().handle(null,null,false,false);
@@ -329,6 +337,7 @@ public class ServletModuleOpenIndy extends ServletModule
     catch (ModuleException e) { throw new ServletModuleException("ModuleException"+e.toString());}
 
     deliver(req, res, mergeData, postingFormDoneTemplate);
+    //System.gc();
   }
 
 }
index e2ea17f..a359255 100755 (executable)
                         <h3>${i.title}</h3>
                         <h4><i>${i.creator}, ${i.webdb_create_formatted}</i></h4>
                         <p>                     
-                         <if i.to_media && i.to_media[0]["is_published"]=="1"> 
-                          <img src="${i.to_media[0]["icon_path"]}" width="${i.to_media[0]["icon_width"]}" height="${i.to_media[0]["icon_height"]}" alt="" align="left" vspace="8" hspace="8"> 
-                          </if> 
+                                 <if i.to_media_audio && i.to_media_audio[0]["is_published"]=="1"> 
+                  ${i.to_media_audio[0]["url"]}
+                </if> 
+                                 <if i.to_media_video && i.to_media_video[0]["is_published"]=="1"> 
+                  ${i.to_media_video[0]["url"]}
+                </if> 
+                                 <if i.to_media_other && i.to_media_other[0]["is_published"]=="1"> 
+                  ${i.to_media_other[0]["url"]}
+                </if> 
+                <p>
+                                 <if i.to_media_images && i.to_media_images[0]["is_published"]=="1"> 
+                  ${i.to_media_images[0]["url"]}
+                </if> 
                          ${i.description}</p>
                         <p align="right">[<a href="${config.docroot}${i.publish_path}${i.id}.shtml">read</a>]</p>
                       </td>