first attempt at a rewrite of the media producer + some bugfixes here and there
[mir.git] / source / mircoders / entity / adapter / ContentAdapterDefinition.java
index 1d8a848..1d94398 100755 (executable)
@@ -1,10 +1,14 @@
 package mircoders.entity.adapter;
 
+import java.util.*;
 import mir.storage.*;
 import mir.entity.*;
 import mir.entity.adapter.*;
+import mir.media.*;
+import mir.util.*;
 import mircoders.storage.*;
 import mircoders.global.*;
+import mircoders.entity.*;
 import mircoders.localizer.*;
 
 public class ContentAdapterDefinition extends EntityAdapterDefinition {
@@ -22,20 +26,23 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition {
   public ContentAdapterDefinition() {
     super();
 
-    addDateField("date", "date");
+    addDBDateField("creationdate", "webdb_lastchange");
+    addDBDateField("changedate", "webdb_create");
+    addMirDateField("date", "date");
     addCalculatedField("to_topics", new ContentToTopicsField());
     addCalculatedField("to_comments", new ContentToCommentsField());
     try {
       addCalculatedField("to_media_images", new ContentToMediaField(
           DatabaseImages.getInstance(), ImagesAdapterDefinition.getInstance()));
+      addCalculatedField("to_uploaded_media", new ContentToMediaField(
+          DatabaseUploadedMedia.getInstance(), UploadedMediaAdapterDefinition.getInstance()));
       addCalculatedField("to_media_audio", new ContentToMediaField(
           DatabaseAudio.getInstance(), AudioAdapterDefinition.getInstance()));
       addCalculatedField("to_media_video", new ContentToMediaField(
           DatabaseVideo.getInstance(), VideoAdapterDefinition.getInstance()));
       addCalculatedField("to_media_other", new ContentToMediaField(
           DatabaseOther.getInstance(), OtherAdapterDefinition.getInstance()));
-      addCalculatedField("to_media_icon", new ContentToMediaField(
-          DatabaseUploadedMedia.getInstance(), UploadedMediaAdapterDefinition.getInstance()));
+      addCalculatedField("to_media_icon", new ContentToIconField());
     }
     catch (Throwable t) {
       System.out.println(t.getMessage());
@@ -116,88 +123,61 @@ public class ContentAdapterDefinition extends EntityAdapterDefinition {
     }
   }
 
+  private class ContentToIconField implements CalculatedField {
+    public Object getValue(EntityAdapter anEntityAdapter) {
+      EntityAdapter media;
+      Entity mediaType;
+      RewindableIterator iterator;
+      Map result;
+      MirMedia mediaHandler;
+      String tinyIcon;
+      String iconAlt;
 
-}
-
+      try {
+        iterator = (RewindableIterator) (anEntityAdapter.get("to_uploaded_media"));
+        iterator.rewind();
+
+        tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyText");
+        iconAlt = "Text";
+
+        if (iterator.hasNext()) {
+          media = (EntityAdapter) iterator.next();
+
+          mediaType = ((EntityUploadedMedia) (media.getEntity())).getMediaType();
+          mediaHandler = MediaHelper.getHandler( mediaType );
+
+          if (mediaHandler.isVideo()) {
+            tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyVideo");
+            iconAlt = "Video";
+          }
+          else if (mediaHandler.isAudio()) {
+            tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyAudio");
+            iconAlt = "Audio";
+          }
+          else if (mediaHandler.isImage()) {
+            tinyIcon = MirGlobal.getConfigProperty("Producer.Icon.TinyImage");
+            iconAlt = "Image";
+          }
+          else {
+            tinyIcon = mediaHandler.getTinyIcon();
+            iconAlt = mediaHandler.getIconAlt();
+          }
 
-//  String mirconf_extLinkName  = MirConfig.getProp("Producer.ExtLinkName");
-//  String mirconf_intLinkName  = MirConfig.getProp("Producer.IntLinkName");
-//  String mirconf_mailLinkName = MirConfig.getProp("Producer.MailLinkName");
-//  String mirconf_imageRoot    = MirConfig.getProp("Producer.ImageRoot");
-
-
-//      if (field.equals("date_formatted"))
-//      {
-//               if (hasValueForField("date"))
-//             returnField = StringUtil.webdbDate2readableDate(getValue("date"));
-//             }
-//      else if (field.equals("description_parsed"))
-//        returnField = getDescriptionParsed();
-//      else if (field.equals("description_sentence"))
-//        returnField = getDescriptionSentence();
-//      else if (field.equals("content_data_parsed"))
-//        returnField = getContentDataParsed();
-
-/*
-      else if (key.equals("to_media_icon")) {
-        try {
-          _entCache.put(key, getUploadedMediaForNewswire());
-          return (TemplateModel)_entCache.get(key);
-        }
-        catch (Exception ex) {
-          theLog.printWarning("-- getUploadedMediaForNewswire: could not fetch data " + ex.toString());
-          throw new TemplateModelException(ex.toString());
         }
       }
-*/
-
-/*
-  private boolean hasMedia() throws StorageObjectException
-  {
-    if (_hasMedia == null) {
-      _hasMedia =
-        new Boolean(DatabaseContentToMedia.getInstance().hasMedia(this));
-    }
-    return _hasMedia.booleanValue();
-  }
-
-  //######## @todo all of the following getBlahForContent should have
-  // and optimized version where LIMIT=1 sql for list view.
-  private EntityList getImagesForContent()
-    throws StorageObjectException, TemplateModelException
-  {
-    if (hasMedia())
-      return DatabaseContentToMedia.getInstance().getImages(this);
-    else
-      return null;
-  }
+      catch (Throwable t) {
+        System.out.println("ContentToIconField: exception: " +t.getMessage());
+        t.printStackTrace(System.out);
+        throw new RuntimeException(t.getMessage());
+      }
 
-  private EntityList getAudioForContent()
-    throws StorageObjectException, TemplateModelException
-  {
-    if (hasMedia())
-      return DatabaseContentToMedia.getInstance().getAudio(this) ;
-    else
-      return null;
-  }
+      result = new HashMap();
+      result.put("tiny_icon", tinyIcon);
+      result.put("icon_alt", iconAlt);
 
-  private EntityList getVideoForContent()
-    throws StorageObjectException, TemplateModelException
-  {
-    if (hasMedia())
-      return DatabaseContentToMedia.getInstance().getVideo(this) ;
-    else
-      return null;
+      return result;
+    }
   }
+}
 
-  private EntityList getOtherMediaForContent()
-    throws StorageObjectException, TemplateModelException
-  {
-    if (hasMedia())
-      return DatabaseContentToMedia.getInstance().getOther(this);
-    else
-      return null;
-  }
 
-}
-*/
\ No newline at end of file