1 package mircoders.storage;
8 import freemarker.template.*;
14 import mircoders.entity.*;
17 * <b>this class implements the access to the content-table</b>
22 public class DatabaseContent extends Database implements StorageObject {
24 private static DatabaseContent instance;
25 private static EntityRelation relationComments;
26 private static EntityRelation relationFeature;
28 // Contructors / Singleton
30 // the following *has* to be sychronized cause this static method
31 // could get preemted and we could end up with 2 instances of DatabaseFoo.
32 // see the "Singletons with needles and thread" article at JavaWorld -mh
33 public synchronized static DatabaseContent getInstance()
34 throws StorageObjectException {
36 if (instance == null ) {
37 instance = new DatabaseContent();
38 instance.myselfDatabase = instance;
43 private DatabaseContent()
44 throws StorageObjectException {
47 this.theTable="content";
48 this.theCoreTable="media";
50 relationComments = new EntityRelation("id", "to_media", DatabaseComment.getInstance(), EntityRelation.TO_MANY);
51 relationFeature = new EntityRelation("id", "to_feature", DatabaseFeature.getInstance(), EntityRelation.TO_ONE);
52 try { this.theEntityClass = Class.forName("mircoders.entity.EntityContent"); }
53 catch (Exception e) { throw new StorageObjectException(e.toString()); }
59 * sets the database flag is_produced to unproduced
62 public void setUnproduced(String where) throws StorageObjectException
64 Connection con=null;Statement stmt=null;
65 String sql = "update content set is_produced='0' where " + where;
66 theLog.printDebugInfo("set unproduced: "+where);
69 // should be a preparedStatement because is faster
70 stmt = con.createStatement();
71 executeUpdate(stmt,sql);
72 theLog.printDebugInfo("set unproduced: "+where);
74 catch (Exception e) {_throwStorageObjectException(e, "-- set unproduced failed");}
75 finally { freeConnection(con,stmt);}
79 * returns the comments that belong to the article (via entityrelation)
80 * where db-flag is_published is true
82 public EntityList getComments(EntityContent entC) throws StorageObjectException {
83 return relationComments.getMany(entC,"webdb_create","is_published='1'");
87 * returns the features that belong to the article (via entityrelation)
89 public EntityList getFeature(EntityContent entC) throws StorageObjectException {
90 return relationFeature.getMany(entC);
93 public boolean delete(String id) throws StorageObjectException
95 DatabaseComment.getInstance().deleteByContentId(id);