misc. maintenance
[mir.git] / source / mircoders / entity / EntityContent.java
index b824a71..7935b53 100755 (executable)
@@ -50,7 +50,7 @@ import mircoders.storage.*;
  * this class implements mapping of one line of the database table content
  * to a java object
  *
- * @version $Id: EntityContent.java,v 1.12 2002/11/27 08:20:14 mh Exp $
+ * @version $Id: EntityContent.java,v 1.13 2002/12/02 12:33:23 zapata Exp $
  * @author mir-coders group
  *
  */
@@ -70,129 +70,112 @@ public class EntityContent extends Entity
   HashMap _entCache = new HashMap();
   Boolean _hasMedia = null;
 
-       // constructors
+  // constructors
 
-       public EntityContent()
-       {
-               super();
+  public EntityContent()
+  {
+    super();
     //content_data is now filed-type "text"
-               //streamedInput = new ArrayList();
-               //streamedInput.add("content_data");
-       }
+    //streamedInput = new ArrayList();
+    //streamedInput.add("content_data");
+  }
 
-       public EntityContent(StorageObject theStorage) {
-               this();
-               setStorage(theStorage);
-       }
+  public EntityContent(StorageObject theStorage) {
+    this();
+    setStorage(theStorage);
+  }
 
-       //
-       // methods
+  //
+  // methods
 
- /**
-       * set is_produced flag for the article
-       */
 /**
+   * set is_produced flag for the article
+   */
 
-       public void setProduced(boolean yesno) throws StorageObjectException
-       {
-               String value = (yesno) ? "1":"0";
-               if (value.equals( getValue("is_produced") )) return;
+  public void setProduced(boolean yesno) throws StorageObjectException
+  {
+    String value = (yesno) ? "1":"0";
+    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!! */
-                       stmt = con.createStatement();
-                       theStorageObject.executeUpdate(stmt,sql);
-               } catch (StorageObjectException e) {
-            throwStorageObjectException(e, "\n -- set produced failed");
-               } catch (SQLException e) {
-            throwStorageObjectException(e, "\n -- set produced failed");
-               } finally {
-                       theStorageObject.freeConnection(con,stmt);
-               }
-       }
-
-
- /**
-       * make openposting to newswire
-       */
-
-       public void newswire() throws StorageObjectException
-       {
-               String sql = "update content set to_article_type='1', is_produced='0' where id='" + getId()+"'";
-               try {
-                               theStorageObject.executeUpdate(sql);
-               } catch (StorageObjectException e) {
-            throwStorageObjectException(e, "\n -- newswire failed");
-               } catch (SQLException e) {
-            throwStorageObjectException(e, "\n -- newswire failed");
-               }
-       }
-
-
- /**
-       * dettach from media
-       */
-       public void dettach(String cid,String mid) throws StorageObjectException
-       {
-               if (mid!=null){
-                       try{
-                               DatabaseContentToMedia.getInstance().delete(cid,mid);
-                       } catch (Exception e){
-                throwStorageObjectException(e, "\n -- failed to get instance");
-                       }
-                       //set Content to unproduced
-                       setProduced(false);
-               }
-       }
-
- /**
-       * attach to media
-       */
-
-       public void attach(String mid) throws StorageObjectException
-       {
-               if (mid!=null) {
-                       //write media-id mid and content-id in table content_x_media
-                       try{
-                               DatabaseContentToMedia.getInstance().addMedia(getId(),mid);
-                       } catch(StorageObjectException e){
-                               throwStorageObjectException(e, "attach: could not get the instance");
-                       }
-                       //set Content to unproduced
-                       setProduced(false);
-               }       else {
-                       theLog.printError("EntityContent: attach without mid");
-               }
-       }
-
-       /**
-        * overridden method getValue to include formatted date into every
-        * entityContent
-        */
-
-       public String getValue(String field)
+    try {
+      con = theStorageObject.getPooledCon();
+      /** @todo should be preparedStatement: faster!! */
+      stmt = con.createStatement();
+      theStorageObject.executeUpdate(stmt,sql);
+    }
+    catch (StorageObjectException e) {
+      throwStorageObjectException(e, "\n -- set produced failed");
+    }
+    catch (SQLException e) {
+      throwStorageObjectException(e, "\n -- set produced failed");
+    }
+    finally {
+      theStorageObject.freeConnection(con,stmt);
+    }
+  }
+
+
+  /**
+   * make openposting to newswire
+   */
+
+  public void newswire() throws StorageObjectException
+  {
+    String sql = "update content set to_article_type='1', is_produced='0' where id='" + getId()+"'";
+    try {
+      theStorageObject.executeUpdate(sql);
+    } catch (StorageObjectException e) {
+      throwStorageObjectException(e, "\n -- newswire failed");
+    } catch (SQLException e) {
+      throwStorageObjectException(e, "\n -- newswire failed");
+    }
+  }
+
+
+  /**
+   * dettach from media
+   */
+  public void dettach(String cid,String mid) throws StorageObjectException
   {
-    String returnField = null;
-    if (field!=null)
-    {
-      if (field.equals("date_formatted") || field.equals("webdb_create_short") )
-      {
-                 if (hasValueForField("date"))
-       returnField = StringUtil.webdbDate2readableDate(getValue("webdb_create"));
-               }
-      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
-        return super.getValue(field);
+    if (mid!=null){
+      try{
+        DatabaseContentToMedia.getInstance().delete(cid,mid);
+      }
+      catch (Exception e){
+        throwStorageObjectException(e, "\n -- failed to get instance");
+      }
+
+      //set Content to unproduced
+      setProduced(false);
     }
-    return returnField;
-       }
+  }
+
+  /**
+   * attach to media
+   */
+
+  public void attach(String mid) throws StorageObjectException
+  {
+    if (mid!=null) {
+      //write media-id mid and content-id in table content_x_media
+      try{
+        DatabaseContentToMedia.getInstance().addMedia(getId(),mid);
+      } catch(StorageObjectException e){
+        throwStorageObjectException(e, "attach: could not get the instance");
+      }
+      //set Content to unproduced
+      setProduced(false);
+    }  else {
+      theLog.printError("EntityContent: attach without mid");
+    }
+  }
+
+  /**
+   * overridden method getValue to include formatted date into every
+   * entityContent
+   */
 
   public TemplateModel get(java.lang.String key) throws TemplateModelException
   {
@@ -204,8 +187,10 @@ public class EntityContent extends Entity
         try {
           _entCache.put(key, getComments());
           return (TemplateModel)_entCache.get(key);
-        } catch (Exception ex) {
+        }
+        catch (Exception ex) {
           theLog.printWarning("-- getComments: could not fetch data " + ex.toString());
+
           throw new TemplateModelException(ex.toString());
         }
       }
@@ -249,19 +234,9 @@ public class EntityContent extends Entity
           throw new TemplateModelException(ex.toString());
         }
       }
-      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());
-        }
-      }
       else if (key.equals("to_topics")) {
         try {
-          _entCache.put(key, 
+          _entCache.put(key,
                         DatabaseContentToTopics.getInstance().getTopics(this));
           return (TemplateModel)_entCache.get(key);
         }
@@ -278,133 +253,37 @@ public class EntityContent extends Entity
     return null;
   }
 
-
-
-
-       /**
-        * overridden method setValues to patch creator_main_url
-        */
-       public void setValues(HashMap theStringValues) {
-               if (theStringValues != null) {
-                       if (theStringValues.containsKey("creator_main_url")){
-                               if (((String)theStringValues.get("creator_main_url")).equalsIgnoreCase("http://")){
-                                       theStringValues.remove("creator_main_url");
-        } else if (!((String)theStringValues.get("creator_main_url")).startsWith("http://")){
+  /**
+   * overridden method setValues to patch creator_main_url
+   */
+  public void setValues(HashMap theStringValues) {
+    if (theStringValues != null) {
+      if (theStringValues.containsKey("creator_main_url")){
+        if (((String)theStringValues.get("creator_main_url")).equalsIgnoreCase("http://")){
+          theStringValues.remove("creator_main_url");
+        }
+        else if (!((String)theStringValues.get("creator_main_url")).startsWith("http://")){
           theStringValues.put("creator_main_url","http://"+((String)theStringValues.get("creator_main_url")));
         }
       }
-               }
-               super.setValues(theStringValues);
-       }
-
-
-  private String getContentDataParsed() {
-    String returnField = getValue("content_data");
-    if ((returnField!=null) && (returnField.length()>0) ) {
-      returnField=StringUtil.deleteForbiddenTags(returnField);
-      //create http-links and email-links
-      if (getValue("is_html").equals("0")) {
-        returnField = StringUtil.createHTML(returnField,mirconf_imageRoot,
-                                            mirconf_mailLinkName,mirconf_extLinkName,
-                                            mirconf_intLinkName);
-      }
     }
-    return returnField;
+    super.setValues(theStringValues);
   }
 
-  private String getDescriptionSentence() {
-    String returnField = getValue("description");
-    if (returnField != null && returnField.length()>0) {
-       returnField = StringUtil.removeHTMLTags(returnField);
-       int endOfFirstSentence=StringUtil.findEndOfSentence(returnField,0);
-       if (endOfFirstSentence > 0){
-        returnField = returnField.substring(0,endOfFirstSentence);
-       }
-    }
-    return returnField;
-  }
-
-  private String getDescriptionParsed() {
-    String returnField = getValue("description");
-    if (returnField != null && returnField.length()>0) {
-      returnField = StringUtil.deleteForbiddenTags(returnField);
-      if (getValue("is_html").equals("0")) {
-        returnField = StringUtil.createHTML(returnField,mirconf_imageRoot,
-                                            mirconf_mailLinkName,mirconf_extLinkName,
-                                            mirconf_intLinkName);
-      }
-    }
-    return returnField;
-  }
-
-       /**
-        * fetches all the comments belonging to an article
-        *
-        * @return freemarker.template.SimpleList
-        */
-       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;
-    MirMedia      mediaHandler = null;
-    EntityUploadedMedia uploadedMedia;
-    Entity        mediaType;
-    SimpleHash    returnHash = new SimpleHash();
-
-    EntityList upMediaEntityList =
-                    DatabaseContentToMedia.getInstance().getUploadedMedia(this);
-    if (upMediaEntityList!=null && upMediaEntityList.getCount()>=1) {
-
-      for (int n=0; n < upMediaEntityList.size();n++) {
-        uploadedMedia = (EntityUploadedMedia)upMediaEntityList.elementAt(n);
-        mediaType = uploadedMedia.getMediaType();
-        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.getTinyIconName();
-          iconAlt = mediaHandler.getIconAltName();
-        }
-
-      }
-      //it only has image(s)
-      if (tinyIcon == null) {
-        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;
+  /**
+   * fetches all the comments belonging to an article
+   *
+   * @return freemarker.template.SimpleList
+   */
+  private EntityList getComments() throws StorageObjectException {
+    return ((DatabaseContent)theStorageObject).getComments(this);
   }
 
   private boolean hasMedia() throws StorageObjectException
   {
     if (_hasMedia == null) {
       _hasMedia =
-        new Boolean(DatabaseContentToMedia.getInstance().hasMedia(this));
+          new Boolean(DatabaseContentToMedia.getInstance().hasMedia(this));
     }
     return _hasMedia.booleanValue();
   }
@@ -412,7 +291,7 @@ public class EntityContent extends Entity
   //######## @todo all of the following getBlahForContent should have
   // and optimized version where LIMIT=1 sql for list view.
   private EntityList getImagesForContent()
-    throws StorageObjectException, TemplateModelException
+      throws StorageObjectException, TemplateModelException
   {
     if (hasMedia())
       return DatabaseContentToMedia.getInstance().getImages(this);
@@ -421,7 +300,7 @@ public class EntityContent extends Entity
   }
 
   private EntityList getAudioForContent()
-    throws StorageObjectException, TemplateModelException
+      throws StorageObjectException, TemplateModelException
   {
     if (hasMedia())
       return DatabaseContentToMedia.getInstance().getAudio(this) ;
@@ -430,7 +309,7 @@ public class EntityContent extends Entity
   }
 
   private EntityList getVideoForContent()
-    throws StorageObjectException, TemplateModelException
+      throws StorageObjectException, TemplateModelException
   {
     if (hasMedia())
       return DatabaseContentToMedia.getInstance().getVideo(this) ;
@@ -439,7 +318,7 @@ public class EntityContent extends Entity
   }
 
   private EntityList getOtherMediaForContent()
-    throws StorageObjectException, TemplateModelException
+      throws StorageObjectException, TemplateModelException
   {
     if (hasMedia())
       return DatabaseContentToMedia.getInstance().getOther(this);