added cache in EntityContent for comments, media, etc.. this cache must
[mir.git] / source / mircoders / storage / DatabaseContentToMedia.java
index 5a42010..1569bb4 100755 (executable)
@@ -63,6 +63,74 @@ public class DatabaseContentToMedia extends Database implements StorageObject{
     return returnList;
   }
 
+  public boolean hasMedia(EntityContent content)
+    throws StorageObjectException {
+    String wc = "content_id="+content.getId();
+    if( content != null) {
+      try {
+        if(selectByWhereClause(wc,-1).size() == 0)
+          return false;
+        else
+          return true;
+      } catch (Exception e) {
+        theLog.printError("-- hasMedia failed " + e.toString());
+        throw new StorageObjectException("-- hasMedia failed " + e.toString());
+      }
+    } else {
+      theLog.printError("-- hasMedia failed: content is NULL");
+      throw new StorageObjectException("-- hasMedia failed: content is NULL");
+    }
+  }
+      
+
+
+
+  /**
+   * get all the audio belonging to a content entity
+   *
+   */
+  public EntityList getAudio(EntityContent content)
+    throws StorageObjectException {
+    EntityList returnList=null;
+    if (content != null) {
+      // get all to_topic from media_x_topic
+      String id = content.getId();
+      //this is not supported by mysql
+      String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")";
+
+      try {
+        returnList = DatabaseAudio.getInstance().selectByWhereClause(subselect,-1);
+      } catch (Exception e) {
+        theLog.printDebugInfo("-- get audio failed " + e.toString());
+        throw new StorageObjectException("-- get audio failed " + e.toString());
+      }
+    }
+    return returnList;
+  }
+
+  /**
+   * get all the video belonging to a content entity
+   *
+   */
+  public EntityList getVideo(EntityContent content)
+    throws StorageObjectException {
+    EntityList returnList=null;
+    if (content != null) {
+      // get all to_topic from media_x_topic
+      String id = content.getId();
+      //this is not supported by mysql
+      String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")";
+
+      try {
+        returnList = DatabaseVideo.getInstance().selectByWhereClause(subselect,-1);
+      } catch (Exception e) {
+        theLog.printDebugInfo("-- get video failed " + e.toString());
+        throw new StorageObjectException("-- get video failed " + e.toString());
+      }
+    }
+    return returnList;
+  }
+
   /**
    * get all the images belonging to a content entity
    *
@@ -88,7 +156,37 @@ public class DatabaseContentToMedia extends Database implements StorageObject{
 
 
   /**
-   * get all the uploaded Media belonging to a content entity
+   * get all the uploaded/other Media belonging to a content entity
+   *
+   */
+  public EntityList getOther(EntityContent content)
+    throws StorageObjectException
+  {
+    /** @todo this should only fetch published media / rk */
+
+    EntityList returnList=null;
+    if (content != null) {
+      // get all to_topic from media_x_topic
+      String id = content.getId();
+      //this is not supported by mysql
+      String subselect = "id in (select media_id from " + theTable +
+                                " where content_id=" + id+")";
+
+      try {
+        returnList = DatabaseOther.getInstance().selectByWhereClause(subselect,
+                                                                    "id");
+      } catch (Exception e) {
+        e.printStackTrace();
+        theLog.printDebugInfo("-- get Other failed " + e.toString());
+        throw new StorageObjectException("-- get Other failed "
+                                        + e.toString());
+      }
+    }
+    return returnList;
+  }
+
+  /**
+   * get all the uploaded/other Media belonging to a content entity
    *
    */
   public EntityList getUploadedMedia(EntityContent content)
@@ -101,14 +199,17 @@ public class DatabaseContentToMedia extends Database implements StorageObject{
       // get all to_topic from media_x_topic
       String id = content.getId();
       //this is not supported by mysql
-      String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")";
+      String subselect = "id in (select media_id from " + theTable +
+                                " where content_id=" + id+")";
 
       try {
-        returnList = DatabaseMedia.getInstance().selectByWhereClause(subselect,"id");
+        returnList = DatabaseUploadedMedia.getInstance().selectByWhereClause(subselect,
+                                                                    "id");
       } catch (Exception e) {
         e.printStackTrace();
         theLog.printDebugInfo("-- get uploadedMedia failed " + e.toString());
-        throw new StorageObjectException("-- get uploadedMedia failed " + e.toString());
+        throw new StorageObjectException("-- get uploadedMedia failed "
+                                        + e.toString());
       }
     }
     return returnList;