media stuff
[mir.git] / source / mircoders / entity / EntityUploadedMedia.java
index 4c34f26..a092489 100755 (executable)
@@ -1,15 +1,18 @@
 package mircoders.entity;
 
-import java.lang.*;
-import java.io.*;
-import java.util.*;
-import java.sql.*;
+import freemarker.template.SimpleList;
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import mir.entity.Entity;
+import mir.media.MediaHelper;
+import mir.media.MirMedia;
+import mir.storage.StorageObject;
+import mir.storage.StorageObjectException;
+import mircoders.storage.DatabaseUploadedMedia;
 
-import mir.entity.*;
-import mir.misc.*;
-import mir.storage.*;
+import java.util.HashMap;
 
-import mircoders.storage.*;
 /**
  * Diese Klasse enthält die Daten eines MetaObjekts
  *
@@ -18,32 +21,152 @@ import mircoders.storage.*;
  */
 
 
-public class EntityUploadedMedia extends AbstractEntity implements Entity
-{
-  private static int instances;
+public class EntityUploadedMedia extends Entity {
 
-  public EntityUploadedMedia(){
+
+  public EntityUploadedMedia() {
     super();
-    instances++;
   }
 
-  public EntityUploadedMedia(StorageObject theStorage)
-  {
+  public EntityUploadedMedia(StorageObject theStorage) {
     this();
     setStorage(theStorage);
   }
 
-  public void setValues(HashMap theStringValues)
-       {
-               if (theStringValues != null) {
-                       if (!theStringValues.containsKey("is_published"))
-                        theStringValues.put("is_published","0");
-               }
-               super.setValues(theStringValues);
-       }
+  public void setValues(HashMap theStringValues) {
+    if (theStringValues != null) {
+      if (!theStringValues.containsKey("is_published"))
+        theStringValues.put("is_published", "0");
+    }
+    super.setValues(theStringValues);
+  }
+
+
+  /**
+   * fetches the MediaType entry assiciated w/ this media
+   *
+   * @return mir.entity.Entity
+   */
+  public Entity getMediaType() throws StorageObjectException {
+    Entity ent = null;
+    try {
+      ent = DatabaseUploadedMedia.getInstance().getMediaType(this);
+    }
+    catch (StorageObjectException e) {
+      throwStorageObjectException(e, "get MediaType failed -- ");
+    }
+    return ent;
+  }
+
+  public String getValue(String key) {
+    String returnValue = null;
 
-  public void finalize() {
-    instances--;
-    super.finalize();
+    if (key != null) {
+      if (key.equals("big_icon"))
+        returnValue = getBigIcon();
+      else if (key.equals("descr"))
+        returnValue = getDescr();
+      else if (key.equals("mediatype"))
+        returnValue = getMediaTypeString();
+      else if (key.equals("mimetype"))
+        returnValue = getMimeType();
+      else
+        returnValue = super.getValue(key);
+    }
+    return returnValue;
   }
+
+  public TemplateModel get(java.lang.String key) throws TemplateModelException {
+    if (key.equals("url"))
+      return getUrl();
+    return new SimpleScalar(getValue(key));
+  }
+
+  // @todo  all these methods should be merged into 1
+  // and the MediaHandler should be cached somehow.
+  private String getMediaTypeString() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      mediaHandler = MediaHelper.getHandler(mediaType);
+      String t;
+      if (mediaHandler.isAudio())
+        return "audio";
+      else if (mediaHandler.isImage())
+        return "image";
+      else if (mediaHandler.isVideo())
+        return "video";
+      else
+        return "other";
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getMediaTypeString: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+
+  private String getBigIcon() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      mediaHandler = MediaHelper.getHandler(mediaType);
+      return mediaHandler.getBigIcon();
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getBigIcon: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+
+  private SimpleList getUrl() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      mediaHandler = MediaHelper.getHandler(mediaType);
+      return mediaHandler.getURL(this, mediaType);
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getUrl: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+
+  private String getDescr() {
+    MirMedia mediaHandler = null;
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      mediaHandler = MediaHelper.getHandler(mediaType);
+      return mediaHandler.getDescr();
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getDescr: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+  private String getMimeType() {
+    Entity mediaType = null;
+
+    try {
+      mediaType = getMediaType();
+      return mediaType.getValue("mime_type");
+    }
+    catch (Exception ex) {
+      theLog.printWarning("-- getBigIcon: could not fetch data "
+                          + this.getClass().toString() + " " + ex.toString());
+    }
+    return null;
+  }
+
 }