From cf27d209625dfc1886c4509c5a8d8cfed7194404 Mon Sep 17 00:00:00 2001 From: mh Date: Sat, 6 Oct 2001 16:32:25 +0000 Subject: [PATCH] ProducerList is now converted to the new way to handle media. 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 | 13 +++++ source/mir/media/MediaHandlerImages.java | 11 ++++ source/mir/media/MirMedia.java | 19 ++++--- source/mircoders/producer/ProducerList.java | 65 ++++++++++++++++++++-- .../mircoders/servlet/ServletModuleOpenIndy.java | 17 ++++-- templates-dist/producer/openposting.template | 16 +++++- 6 files changed, 120 insertions(+), 21 deletions(-) diff --git a/source/mir/media/MediaHandlerGeneric.java b/source/mir/media/MediaHandlerGeneric.java index 41379cd2..253d871e 100755 --- a/source/mir/media/MediaHandlerGeneric.java +++ b/source/mir/media/MediaHandlerGeneric.java @@ -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; diff --git a/source/mir/media/MediaHandlerImages.java b/source/mir/media/MediaHandlerImages.java index 52293d8f..aa62a267 100755 --- a/source/mir/media/MediaHandlerImages.java +++ b/source/mir/media/MediaHandlerImages.java @@ -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"); diff --git a/source/mir/media/MirMedia.java b/source/mir/media/MirMedia.java index f6c59b7e..34beee91 100755 --- a/source/mir/media/MirMedia.java +++ b/source/mir/media/MirMedia.java @@ -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 (); } diff --git a/source/mircoders/producer/ProducerList.java b/source/mircoders/producer/ProducerList.java index c7043ca4..bb44d4f0 100755 --- a/source/mircoders/producer/ProducerList.java +++ b/source/mircoders/producer/ProducerList.java @@ -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"); diff --git a/source/mircoders/servlet/ServletModuleOpenIndy.java b/source/mircoders/servlet/ServletModuleOpenIndy.java index ccec385b..d1a8980d 100755 --- a/source/mircoders/servlet/ServletModuleOpenIndy.java +++ b/source/mircoders/servlet/ServletModuleOpenIndy.java @@ -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(); } } diff --git a/templates-dist/producer/openposting.template b/templates-dist/producer/openposting.template index e2ea17f0..a3592551 100755 --- a/templates-dist/producer/openposting.template +++ b/templates-dist/producer/openposting.template @@ -58,9 +58,19 @@

${i.title}

${i.creator}, ${i.webdb_create_formatted}

- - - + + ${i.to_media_audio[0]["url"]} + + + ${i.to_media_video[0]["url"]} + + + ${i.to_media_other[0]["url"]} + +

+ + ${i.to_media_images[0]["url"]} + ${i.description}

[read]

-- 2.11.0