From 2caad98f38f2284072b738f7a0edfbd748eb2944 Mon Sep 17 00:00:00 2001 From: john Date: Wed, 17 Oct 2001 19:10:32 +0000 Subject: [PATCH] these two handlers take care of setting the correct icons, and storing the data in a RealMedia directory somewhere, while writing a liitle ram file which points to the data's eventual (streaming) location in the regular media directory --- source/mir/media/MediaHandlerRealAudio.java | 125 ++++++++++++++++++++++++++++ source/mir/media/MediaHandlerRealVideo.java | 125 ++++++++++++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100755 source/mir/media/MediaHandlerRealAudio.java create mode 100755 source/mir/media/MediaHandlerRealVideo.java diff --git a/source/mir/media/MediaHandlerRealAudio.java b/source/mir/media/MediaHandlerRealAudio.java new file mode 100755 index 00000000..b818b340 --- /dev/null +++ b/source/mir/media/MediaHandlerRealAudio.java @@ -0,0 +1,125 @@ +/* + * put your module comment here + */ + + +package mir.media; + +import java.util.*; + +import mir.entity.*; +import mir.misc.*; +import mir.storage.*; + + + +/** + * Handles real audio. like MediaHandlerAudio, except it manages the ram file, too. + * + * @see mir.media.MediaHandlerGeneric + * @see mir.media.MirMedia + * @author john + * @version 11.10.2001 + */ + + +public class MediaHandlerRealAudio extends 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 ) { + String ext = mediaTypeEnt.getValue("name"); + String dir = MirConfig.getProp("Producer.Media.Path"); + String rtspDir = MirConfig.getProp("Producer.RealMedia.Path"); + String mediaHost = MirConfig.getProp("Producer.Media.Host"); + String rtspMediaHost = MirConfig.getProp("Producer.RealMedia.Host"); + + String mediaFname = ent.getId()+"."+ext; + String RealMediaPointer = rtspMediaHost+mediaFname; + String RealMediaFile = ent.getId()+".ram"; + String date = ent.getValue("date"); + String datePath = StringUtil.webdbDate2path(date); + Integer size = new Integer(uploadedData.length); + //hack: make it a config option to use "dated" dirs + //we can't cause of stallman -mh + //if(FileUtil.write(dir+"/"+datePath+"/"+mediaFname, uploadedData)) { + if(FileUtil.write(rtspDir+"/"+mediaFname, uploadedData)) { + //were done with the data, dereference. + uploadedData=null; + + try { +//write an ram file +FileUtil.write(dir+"/"+RealMediaFile,RealMediaPointer.getBytes()); + + ent.setValueForProperty("is_produced", "1"); + ent.setValueForProperty("icon_is_produced", "1"); + //hack: make it a config option to use "dated" dirs + //we can't cause of stallman -mh + //ent.setValueForProperty("publish_path",datePath+"/"+mediaFname); + ent.setValueForProperty("publish_path", RealMediaFile); + ent.setValueForProperty("publish_server", mediaHost); + ent.setValueForProperty("size", size.toString()); + ent.update(); + } catch (StorageObjectException e) { + theLog.printError("StorageObjectException: "+e.toString()); + return false; + } + } else { + theLog.printError("could not write FILE!"); + return false; + } + + return true; + } + + + + + + public String getPublishHost() + { + return MirConfig.getProp("Producer.Media.Host"); + } + + + + public String getURL(Entity ent, Entity mediaTypeEnt) + { + int size = Integer.parseInt(ent.getValue("size"), 10)/1024; + String title = ent.getValue("title")+ + " - "+mediaTypeEnt.getValue("name")+" "+ + size+" KB"; + return StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+ + ent.getValue("publish_path"), title, imageRoot, getBigIcon()); + } + + + private static String tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio"); + private static String bigIcon = MirConfig.getProp("Producer.Icon.BigAudio"); + + public String getTinyIcon() + { + return tinyIcon; + } + + public String getBigIcon() + { + return bigIcon; + } + + public String getIconAlt() + { + return "Audio"; + } + + public boolean isAudio() + { + return true; + } + +} + + + diff --git a/source/mir/media/MediaHandlerRealVideo.java b/source/mir/media/MediaHandlerRealVideo.java new file mode 100755 index 00000000..bd9363e8 --- /dev/null +++ b/source/mir/media/MediaHandlerRealVideo.java @@ -0,0 +1,125 @@ +/* + * put your module comment here + */ + + +package mir.media; + +import java.util.*; + +import mir.entity.*; +import mir.misc.*; +import mir.storage.*; + + + +/** + * Handles real video. like MediaHandlerAudio, except it manages the ram file, too. + * + * @see mir.media.MediaHandlerGeneric + * @see mir.media.MirMedia + * @author john + * @version 11.10.2001 + */ + + +public class MediaHandlerRealVideo extends 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 ) { + String ext = mediaTypeEnt.getValue("name"); + String dir = MirConfig.getProp("Producer.Media.Path"); + String rtspDir = MirConfig.getProp("Producer.RealMedia.Path"); + String mediaHost = MirConfig.getProp("Producer.Media.Host"); + String rtspMediaHost = MirConfig.getProp("Producer.RealMedia.Host"); + + String mediaFname = ent.getId()+"."+ext; + String RealMediaPointer = rtspMediaHost+mediaFname; + String RealMediaFile = ent.getId()+".ram"; + String date = ent.getValue("date"); + String datePath = StringUtil.webdbDate2path(date); + Integer size = new Integer(uploadedData.length); + //hack: make it a config option to use "dated" dirs + //we can't cause of stallman -mh + //if(FileUtil.write(dir+"/"+datePath+"/"+mediaFname, uploadedData)) { + if(FileUtil.write(rtspDir+"/"+mediaFname, uploadedData)) { + //were done with the data, dereference. + uploadedData=null; + + try { +//write an rm file +FileUtil.write(dir+"/"+RealMediaFile,RealMediaPointer.getBytes()); + + ent.setValueForProperty("is_produced", "1"); + ent.setValueForProperty("icon_is_produced", "1"); + //hack: make it a config option to use "dated" dirs + //we can't cause of stallman -mh + //ent.setValueForProperty("publish_path",datePath+"/"+mediaFname); + ent.setValueForProperty("publish_path", RealMediaFile); + ent.setValueForProperty("publish_server", mediaHost); + ent.setValueForProperty("size", size.toString()); + ent.update(); + } catch (StorageObjectException e) { + theLog.printError("StorageObjectException: "+e.toString()); + return false; + } + } else { + theLog.printError("could not write FILE!"); + return false; + } + + return true; + } + + + + + + public String getPublishHost() + { + return MirConfig.getProp("Producer.Media.Host"); + } + + + + public String getURL(Entity ent, Entity mediaTypeEnt) + { + int size = Integer.parseInt(ent.getValue("size"), 10)/1024; + String title = ent.getValue("title")+ + " - "+mediaTypeEnt.getValue("name")+" "+ + size+" KB"; + return StringUtil.createURLLinks(ent.getValue("publish_server")+"/"+ + ent.getValue("publish_path"), title, imageRoot, getBigIcon()); + } + + + private static String tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo"); + private static String bigIcon = MirConfig.getProp("Producer.Icon.BigVideo"); + + public String getTinyIcon() + { + return tinyIcon; + } + + public String getBigIcon() + { + return bigIcon; + } + + public String getIconAlt() + { + return "Video"; + } + + public boolean isVideo() + { + return true; + } + +} + + + -- 2.11.0