Initial revision
[mir.git] / source / mircoders / storage / DatabaseContent.java
1 package mircoders.storage;
2
3 import java.lang.*;
4 import java.sql.*;
5 import java.io.*;
6 import java.util.*;
7
8 import freemarker.template.*;
9
10 import webdb.storage.*;
11 import webdb.entity.*;
12 import webdb.misc.*;
13
14 import mir.entity.*;
15
16 /**
17  * <b>this class implements the access to the content-table</b>
18  *
19  *
20  */
21
22 public class DatabaseContent extends Database implements StorageObject {
23
24         private static DatabaseContent      instance;
25         private static EntityRelation       relationComments;
26         private static EntityRelation       relationFeature;
27
28         // Contructors / Singleton
29
30         public static DatabaseContent getInstance()
31                 throws StorageObjectException {
32
33                 if (instance == null ) {
34                         instance = new DatabaseContent();
35                         instance.myselfDatabase = instance;
36                 }
37                 return instance;
38         }
39
40         private DatabaseContent()
41                 throws StorageObjectException {
42
43                 super();
44                 this.theTable="content";
45                 this.theCoreTable="media";
46                 relationComments = new EntityRelation("id", "to_media", DatabaseComment.getInstance(), EntityRelation.TO_MANY);
47                 relationFeature = new EntityRelation("id", "to_feature", DatabaseFeature.getInstance(), EntityRelation.TO_ONE);
48                 try {   this.theEntityClass = Class.forName("mir.entity.EntityContent"); }
49                 catch (Exception e) { throw new StorageObjectException(e.toString());   }
50         }
51
52         // methods
53
54         /**
55          * sets the database flag is_produced to unproduced
56          */
57
58         public void setUnproduced(String where)
59         {
60                 Connection con=null;Statement stmt=null;
61                 String sql = "update content set is_produced=0 where " + where;
62                 try {
63                         con = getPooledCon();
64                         // should be a preparedStatement because is faster
65                         stmt = con.createStatement();
66                         executeSql(stmt,sql);
67                 }
68                 catch (Exception e) {theLog.printDebugInfo("-- set unproduced failed");}
69                 finally { freeConnection(con,stmt);}
70         }
71
72         /**
73          * returns the comments that belong to the article (via entityrelation)
74          */
75         public SimpleList getComments(EntityContent entC) {
76                 SimpleList comments=null;
77                 try {
78                         comments = relationComments.getManyAsSimpleList(entC,"webdb_create");
79                 }
80                 catch (StorageObjectException e) {
81                         theLog.printError("DatabaseComments :: failed to get comments");
82                 }
83                 return comments;
84         }
85
86         /**
87          * returns the features that belong to the article (via entityrelation)
88          */
89         public SimpleList getFeature(EntityContent entC) {
90                 SimpleList feature=null;
91                 try {
92                         feature = relationFeature.getManyAsSimpleList(entC);
93                 }
94                 catch (StorageObjectException e) {
95                         theLog.printError("DatabaseComments :: failed to get features");
96                 }
97                 return feature;
98         }
99
100         public boolean delete(String id)
101                 throws StorageObjectException {
102                 DatabaseComment.getInstance().deleteByContentId(id);
103                 super.delete(id);
104                 return true;
105         }
106
107 }