first cut of merge of STABLE-pre1_0 into HEAD. I won't even guarantee that it
[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 mir.storage.*;
11 import mir.entity.*;
12 import mir.misc.*;
13
14 import mircoders.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
47     relationComments = new EntityRelation("id", "to_media", DatabaseComment.getInstance(), EntityRelation.TO_MANY);
48     relationFeature = new EntityRelation("id", "to_feature", DatabaseFeature.getInstance(), EntityRelation.TO_ONE);
49     try { this.theEntityClass = Class.forName("mircoders.entity.EntityContent"); }
50     catch (Exception e) { throw new StorageObjectException(e.toString()); }
51   }
52
53   // methods
54
55   /**
56    * sets the database flag is_produced to unproduced
57    */
58
59   public void setUnproduced(String where) throws StorageObjectException
60   {
61     Connection con=null;Statement stmt=null;
62     String sql = "update content set is_produced='0' where " + where;
63     try {
64       con = getPooledCon();
65       // should be a preparedStatement because is faster
66       stmt = con.createStatement();
67       executeUpdate(stmt,sql);
68     }
69     catch (Exception e) {_throwStorageObjectException(e, "-- set unproduced failed");}
70     finally { freeConnection(con,stmt);}
71   }
72
73   /**
74    * returns the comments that belong to the article (via entityrelation)
75    * where db-flag is_published is true
76    */
77   public EntityList getComments(EntityContent entC) throws StorageObjectException {
78     return relationComments.getMany(entC,"webdb_create","is_published='1'");
79   }
80
81   /**
82    * returns the features that belong to the article (via entityrelation)
83    */
84   public EntityList getFeature(EntityContent entC) throws StorageObjectException {
85     return relationFeature.getMany(entC);
86   }
87
88   public boolean delete(String id) throws StorageObjectException
89   {
90     DatabaseComment.getInstance().deleteByContentId(id);
91     super.delete(id);
92     return true;
93   }
94
95 }