Converted media Interface to use streams (Java IO) instead of byte buffers of
[mir.git] / source / mircoders / media / MediaHandlerGeneric.java
index 4953b85..f0402e7 100755 (executable)
@@ -68,29 +68,24 @@ public class MediaHandlerGeneric implements MirMedia
     protected static String imageRoot = MirConfig.getProp("Producer.ImageRoot");
     protected static Logfile theLog = Logfile.getInstance(MirConfig.getProp("Home")+
                                                   "log/media.log");
-    public boolean set (byte[] uploadedData, Entity ent, Entity mediaTypeEnt )
+    public void set (InputStream in, Entity ent, Entity mediaTypeEnt )
         throws MirMediaException {
 
         String ext = mediaTypeEnt.getValue("name");
         String mediaFname = ent.getId()+"."+ext;
         String date = ent.getValue("date");
         String datePath = StringUtil.webdbDate2path(date);
-        Integer size = new Integer(uploadedData.length);
         try {
-            FileUtil.write(getStoragePath()+"/"+datePath+"/"+mediaFname,
-                            uploadedData);
-            //were done with the data, dereference.
-            uploadedData=null;
-            
+            long size = FileUtil.write(getStoragePath()+"/"+datePath+"/"+
+                                      mediaFname, in);
             ent.setValueForProperty("publish_path",datePath+"/"+mediaFname);
-            ent.setValueForProperty("size", size.toString());
+            ent.setValueForProperty("size", new Long(size).toString());
             ent.update();
         } catch (Exception e) {
             theLog.printError(e.toString()); 
             throw new MirMediaException(e.toString());
         }
 
-        return true;
     }
 
     public void produce (Entity ent, Entity mediaTypeEnt )
@@ -108,30 +103,24 @@ public class MediaHandlerGeneric implements MirMedia
     }
       
 
-    //a method that will probably never get used..
-    private byte[] getFile (String fileName)
-        throws MirMediaException {
-
-        long size = FileUtil.getSize(fileName);
-        if (size < 0) return null;
-
-        byte[] container = new byte[(int)size];
-            
-        try {
-            FileUtil.read(fileName, container);
-        } catch (Exception e) {
-            theLog.printError(e.toString()); 
-            throw new MirMediaException(e.toString());
-        }
-
-        return container;
-    }
-
-    public byte[] get (Entity ent, Entity mediaTypeEnt) {
-        return null;
+    public InputStream getMedia (Entity ent, Entity mediaTypeEnt)
+      throws MirMediaException {
+      String publishPath = mediaTypeEnt.getValue("publish_path");
+      String fname = getStoragePath()+publishPath;
+      File f = new File(fname);
+      if(! f.exists())
+        throw new MirMediaException("error in MirMedia.getMedia(): "+fname+
+                                    "does not exist!");
+      FileInputStream in;
+      try {
+        in = new FileInputStream(f);
+      } catch (IOException e) {
+        throw new MirMediaException("getMedia(): "+e.toString());
+      }
+      return in;
     }
 
-    public byte[] getIcon (Entity ent) {
+    public InputStream getIcon (Entity ent) {
         return null;
     }
 
@@ -150,17 +139,17 @@ public class MediaHandlerGeneric implements MirMedia
         return MirConfig.getProp("Producer.Media.Host");
     }
 
-    public String getTinyIcon()
+    public String getTinyIconName()
     {
         return MirConfig.getProp("Producer.Icon.TinyText");
     }
 
-    public String getBigIcon()
+    public String getBigIconName()
     {
         return MirConfig.getProp("Producer.Icon.BigText");
     }
 
-    public String getIconAlt()
+    public String getIconAltName()
     {
         return "Generic media"; 
     }