--- /dev/null
+/*
+ * 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 <john@manifestor.org>
+ * @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;
+ }
+
+}
+
+
+
--- /dev/null
+/*
+ * 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 <john@manifestor.org>
+ * @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;
+ }
+
+}
+
+
+