wiped AsSimpleList Methods from EntityRelation
[mir.git] / source / mircoders / entity / EntityContent.java
index c5c28c3..46fa13d 100755 (executable)
@@ -56,9 +56,11 @@ public class EntityContent extends Entity
 
        public void setProduced(boolean yesno) throws StorageObjectException
        {
-               Connection con=null;Statement stmt=null;
                String value = (yesno) ? "1":"0";
-               String sql = "update content set is_produced='" + value + "' where id='" + getId()+"'";
+               if (value.equals( getValue("is_produced") )) return;
+
+    Connection con=null;Statement stmt=null;
+    String sql = "update content set is_produced='" + value + "' where id='" + getId()+"'";
                try {
                        con = theStorageObject.getPooledCon();
                        /** @todo should be preparedStatement: faster!! */
@@ -164,43 +166,63 @@ public class EntityContent extends Entity
           throw new TemplateModelException(ex.toString());
         }
       }
-      if (key.equals("to_media")) {
+      if (key.equals("to_media_images")) {
         try {
-          return getUploadedMediaForContent();
+          return getImagesForContent();
         }
         catch (Exception ex) {
-          theLog.printWarning("-- getUploadedMediaForContent: could not fetch data " + ex.toString());
+          theLog.printWarning("-- getImagesForContent: could not fetch data " + ex.toString());
           throw new TemplateModelException(ex.toString());
         }
       }
-      else if (key.equals("to_media_icon")) {
+      if (key.equals("to_media_audio")) {
         try {
-          return getUploadedMediaForContent();
+          return getAudioForContent();
         }
         catch (Exception ex) {
-          theLog.printWarning("-- getUploadedMediaForContent: could not fetch data " + ex.toString());
+          theLog.printWarning("-- getAudioForContent: could not fetch data " + ex.toString());
           throw new TemplateModelException(ex.toString());
         }
       }
-      else if (key.equals("to_media_list")) {
+      if (key.equals("to_media_video")) {
         try {
-          return getUploadedMediaForContent();
+          return getVideoForContent();
         }
         catch (Exception ex) {
-          theLog.printWarning("-- getUploadedMediaForContent: could not fetch data " + ex.toString());
+          theLog.printWarning("-- getVideoForContent: could not fetch data " + ex.toString());
+          throw new TemplateModelException(ex.toString());
+        }
+      }
+      if (key.equals("to_media_other")) {
+        try {
+          return getOtherMediaForContent();
+        }
+        catch (Exception ex) {
+          theLog.printWarning("-- getOtherMediaForContent: could not fetch data " + ex.toString());
+          throw new TemplateModelException(ex.toString());
+        }
+      }
+      else if (key.equals("to_media_icon")) {
+        try {
+          return getUploadedMediaForNewswire();
+        }
+        catch (Exception ex) {
+          theLog.printWarning("-- getUploadedMediaForNewswire: could not fetch data " + ex.toString());
           throw new TemplateModelException(ex.toString());
         }
       }
       else if (key.equals("to_topics")) {
         try {
-          HTMLTemplateProcessor.makeSimpleList(DatabaseContentToTopics.getInstance().getTopics(this));
+          DatabaseContentToTopics.getInstance().getTopics(this);
         }
         catch (Exception ex) {
           theLog.printWarning("-- getTopics: could not fetch data " + ex.toString());
           throw new TemplateModelException(ex.toString());
         }
       }
-      else return new SimpleScalar(getValue(key));
+      else {
+        return new SimpleScalar(getValue(key));
+      }
 
     }
     return null;
@@ -261,53 +283,45 @@ public class EntityContent extends Entity
         *
         * @return freemarker.template.SimpleList
         */
-       public SimpleList getComments() throws StorageObjectException {
+       private EntityList getComments() throws StorageObjectException {
                return ((DatabaseContent)theStorageObject).getComments(this);
        }
 
+  // @todo this needs to optimized. expensive SQL
   private SimpleHash getUploadedMediaForNewswire()
     throws StorageObjectException, TemplateModelException
   {
     // fetching/setting the images
     // return to_media_icons
-    String        tinyIcon = null, iconAlt = null, mediaHandlerName = null;
+    String        tinyIcon = null, iconAlt = null;
     MirMedia      mediaHandler = null;
-    EntityMedia   uploadedMedia;
+    EntityUploadedMedia uploadedMedia;
     Entity        mediaType;
-    Class         mediaHandlerClass;
     SimpleHash    returnHash = new SimpleHash();
 
-    EntityList upMediaEntityList = DatabaseContentToMedia.getInstance().getUploadedMedia(this);
+    EntityList upMediaEntityList =
+                    DatabaseContentToMedia.getInstance().getUploadedMedia(this);
     if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) {
 
       for (int n=0; n < upMediaEntityList.size();n++) {
-        uploadedMedia = (EntityMedia)upMediaEntityList.elementAt(n);
+        uploadedMedia = (EntityUploadedMedia)upMediaEntityList.elementAt(n);
         mediaType = uploadedMedia.getMediaType();
-
-        //must of had a non-existant to_media_type entry..
-        //let's save our ass.
-        if (mediaType != null) {
-            mediaHandlerName = mediaType.getValue("classname");
-            try {
-              mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
-              mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
-            }
-            catch (Exception ex) {
-              throw new TemplateModelException(ex.toString());
-            }
-
-            //the "best" media type to show
-            if (mediaHandler.isVideo()) {
-              tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo");
-              iconAlt = "Video";
-              break;
-            } else if (mediaHandler.isAudio()) {
-              tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio");
-              iconAlt = "Audio";
-            } else if (tinyIcon == null && !mediaHandler.isImage()) {
-              tinyIcon = mediaHandler.getTinyIcon();
-              iconAlt = mediaHandler.getIconAlt();
-            }
+        try {
+          mediaHandler = MediaHelper.getHandler( mediaType );
+        } catch (MirMediaException ex) {
+          throw new TemplateModelException(ex.toString());
+        }
+        //the "best" media type to show
+        if (mediaHandler.isVideo()) {
+          tinyIcon = MirConfig.getProp("Producer.Icon.TinyVideo");
+          iconAlt = "Video";
+          break;
+        } else if (mediaHandler.isAudio()) {
+          tinyIcon = MirConfig.getProp("Producer.Icon.TinyAudio");
+          iconAlt = "Audio";
+        } else if (tinyIcon == null && !mediaHandler.isImage()) {
+          tinyIcon = mediaHandler.getTinyIcon();
+          iconAlt = mediaHandler.getIconAlt();
         }
       }
       //it only has image(s)
@@ -315,137 +329,41 @@ public class EntityContent extends Entity
         tinyIcon = MirConfig.getProp("Producer.Icon.TinyImage");
         iconAlt = "Image";
       }
-
     // uploadedMedia Entity list is empty.
     // we only have text
     } else {
       tinyIcon = MirConfig.getProp("Producer.Icon.TinyText");
       iconAlt = "Text";
     }
-
     returnHash.put("tiny_icon", mirconf_imageRoot+"/"+tinyIcon);
     returnHash.put("icon_alt", iconAlt);
     return returnHash;
   }
 
-  private SimpleHash getUploadedMediaForList()
+  //######## @todo all of the following getBlahForContent should have
+  // and optimized version where LIMIT=1 sql for list view.
+  private EntityList getImagesForContent()
     throws StorageObjectException, TemplateModelException
   {
-    SimpleHash returnHash = new SimpleHash();
-    //media to content
-    EntityList currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(this);
-    if (currentMediaList!=null && currentMediaList.getCount()>=1) {
-      SimpleList          mediaListAudio = new SimpleList();
-      SimpleList          mediaListImages = new SimpleList();
-      SimpleList          mediaListVideo = new SimpleList();
-      SimpleList          mediaListOther = new SimpleList();
-      EntityMedia         upMedia;
-      Entity              mediaType;
-      SimpleHash          upMediaSimpleHash;
-      Class               mediaHandlerClass=null,mediaStorageClass;
-      MirMedia            mediaHandler=null;
-      String              mediaHandlerName=null,mediaStorageName;
-      Database            mediaStorage=null;
-
-      for (int n=0; n < currentMediaList.size();n++) {
-        upMedia = (EntityMedia)currentMediaList.elementAt(n);
-        upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
-        mediaType = upMedia.getMediaType();
-        //must be a non-existant to_media_type entry..
-        if (mediaType != null) {
-          mediaHandlerName = mediaType.getValue("classname");
-          mediaStorageName = mediaType.getValue("tablename");
-          try {
-            mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
-            mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
-            mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
-            Method m = mediaStorageClass.getMethod("getInstance", null);
-            mediaStorage = (Database)m.invoke(null, null);
-          }
-          catch (Exception ex) {
-            throw new TemplateModelException(ex.toString());
-          }
-
-          //we most likely need further info
-          upMedia = (EntityMedia)mediaStorage.selectById(upMedia.getId());
-          try {
-           upMediaSimpleHash.put("url", mediaHandler.getListView(upMedia, mediaType));
-          }
-          catch (Exception ex) {
-            throw new TemplateModelException(ex.toString());
-          }
-
-          // putting media in the apropriate list container
-          if (upMedia.getValue("is_published").equals("1")) {
-            if (mediaHandler.isImage()) {
-              mediaListImages.add(upMediaSimpleHash);
-            } else if (mediaHandler.isAudio()) {
-              mediaListAudio.add(upMediaSimpleHash);
-            } else if (mediaHandler.isVideo()) {
-              mediaListVideo.add(upMediaSimpleHash);
-            } else {
-              mediaListOther.add(upMediaSimpleHash);
-            }
-          } //end if is_published
-        } //end if media_type != null
-      } //end for
-      returnHash.put("to_media_audio", mediaListAudio);
-      returnHash.put("to_media_images", mediaListImages);
-      returnHash.put("to_media_video", mediaListVideo);
-      returnHash.put("to_media_other", mediaListOther);
-    } //end if currentMediaList != null
-    return returnHash;
- }
+    return DatabaseContentToMedia.getInstance().getImages(this);
+  }
 
-  private SimpleList getUploadedMediaForContent()
+  private EntityList getAudioForContent()
     throws StorageObjectException, TemplateModelException
   {
-    SimpleList returnList=null;
-    EntityList currentMediaList = DatabaseContentToMedia.getInstance().getUploadedMedia(this);
-    if (currentMediaList!=null && currentMediaList.getCount()>=1)
-    {
-      Entity              upMedia,mediaType;
-      SimpleHash          upMediaSimpleHash;
-      Class               mediaHandlerClass,mediaStorageClass;
-      String              mediaStorageName,mediaHandlerName=null;
-      MirMedia            mediaHandler=null;
-      Database            mediaStorage=null;
-
-      returnList = new SimpleList();
-
-      for (int n=0; n < currentMediaList.size();n++) {
-        upMedia = currentMediaList.elementAt(n);
-        upMediaSimpleHash = HTMLTemplateProcessor.makeSimpleHash(upMedia);
-        mediaType = ((EntityMedia)upMedia).getMediaType();
-        //must be a non-existant to_media_type entry..
-        if (mediaType != null) {
-          mediaHandlerName = mediaType.getValue("classname");
-          mediaStorageName = mediaType.getValue("tablename");
-          try {
-            mediaStorageClass = Class.forName("mircoders.storage.Database"+mediaStorageName);
-            mediaHandlerClass = Class.forName("mir.media.MediaHandler"+mediaHandlerName);
-            mediaHandler = (MirMedia)mediaHandlerClass.newInstance();
-            Method m = mediaStorageClass.getMethod("getInstance", null);
-            mediaStorage = (Database)m.invoke(null, null);
-          }
-          catch (Exception ex) {
-            throw new TemplateModelException(ex.toString());
-          }
-
-          //we most likely need further info
-          upMedia = mediaStorage.selectById(upMedia.getId());
-          try {
-            upMediaSimpleHash.put("url", mediaHandler.getURL(upMedia, mediaType));
-          }
-          catch (Exception ex) {
-            throw new TemplateModelException(ex.toString());
-          }
-          upMediaSimpleHash.put("type",mediaType.getValue("classname"));
-          returnList.add(upMediaSimpleHash);
-        } //end if media_type != null
-      } //end for
-    } //end if currentMediaList != null
-    return returnList;
+    return DatabaseContentToMedia.getInstance().getAudio(this) ;
+  }
+
+  private EntityList getVideoForContent()
+    throws StorageObjectException, TemplateModelException
+  {
+    return DatabaseContentToMedia.getInstance().getVideo(this) ;
+  }
+
+  private EntityList getOtherMediaForContent()
+    throws StorageObjectException, TemplateModelException
+  {
+    return DatabaseContentToMedia.getInstance().getOther(this);
   }
 
 }