Initial revision
[mir.git] / source / mircoders / storage / DatabaseContent.java
diff --git a/source/mircoders/storage/DatabaseContent.java b/source/mircoders/storage/DatabaseContent.java
new file mode 100755 (executable)
index 0000000..7725d97
--- /dev/null
@@ -0,0 +1,107 @@
+package mircoders.storage;
+
+import java.lang.*;
+import java.sql.*;
+import java.io.*;
+import java.util.*;
+
+import freemarker.template.*;
+
+import webdb.storage.*;
+import webdb.entity.*;
+import webdb.misc.*;
+
+import mir.entity.*;
+
+/**
+ * <b>this class implements the access to the content-table</b>
+ *
+ *
+ */
+
+public class DatabaseContent extends Database implements StorageObject {
+
+       private static DatabaseContent      instance;
+       private static EntityRelation       relationComments;
+       private static EntityRelation       relationFeature;
+
+       // Contructors / Singleton
+
+       public static DatabaseContent getInstance()
+               throws StorageObjectException {
+
+               if (instance == null ) {
+                       instance = new DatabaseContent();
+                       instance.myselfDatabase = instance;
+               }
+               return instance;
+       }
+
+       private DatabaseContent()
+               throws StorageObjectException {
+
+               super();
+               this.theTable="content";
+               this.theCoreTable="media";
+               relationComments = new EntityRelation("id", "to_media", DatabaseComment.getInstance(), EntityRelation.TO_MANY);
+               relationFeature = new EntityRelation("id", "to_feature", DatabaseFeature.getInstance(), EntityRelation.TO_ONE);
+               try {   this.theEntityClass = Class.forName("mir.entity.EntityContent"); }
+               catch (Exception e) { throw new StorageObjectException(e.toString());   }
+       }
+
+       // methods
+
+       /**
+        * sets the database flag is_produced to unproduced
+        */
+
+       public void setUnproduced(String where)
+       {
+               Connection con=null;Statement stmt=null;
+               String sql = "update content set is_produced=0 where " + where;
+               try {
+                       con = getPooledCon();
+                       // should be a preparedStatement because is faster
+                       stmt = con.createStatement();
+                       executeSql(stmt,sql);
+               }
+               catch (Exception e) {theLog.printDebugInfo("-- set unproduced failed");}
+               finally { freeConnection(con,stmt);}
+       }
+
+       /**
+        * returns the comments that belong to the article (via entityrelation)
+        */
+       public SimpleList getComments(EntityContent entC) {
+               SimpleList comments=null;
+               try {
+                       comments = relationComments.getManyAsSimpleList(entC,"webdb_create");
+               }
+               catch (StorageObjectException e) {
+                       theLog.printError("DatabaseComments :: failed to get comments");
+               }
+               return comments;
+       }
+
+       /**
+        * returns the features that belong to the article (via entityrelation)
+        */
+       public SimpleList getFeature(EntityContent entC) {
+               SimpleList feature=null;
+               try {
+                       feature = relationFeature.getManyAsSimpleList(entC);
+               }
+               catch (StorageObjectException e) {
+                       theLog.printError("DatabaseComments :: failed to get features");
+               }
+               return feature;
+       }
+
+       public boolean delete(String id)
+               throws StorageObjectException {
+               DatabaseComment.getInstance().deleteByContentId(id);
+               super.delete(id);
+               return true;
+       }
+
+}