bufix media
[mir.git] / source / mircoders / storage / DatabaseContentToTopics.java
index 7475e90..eca6c29 100755 (executable)
@@ -82,12 +82,14 @@ public class DatabaseContentToTopics extends Database implements StorageObject{
   public EntityList getTopics(EntityContent content) {
     EntityList returnList=null;
     if (content != null) {
-      // get all to_topic from content_x_topic
-      String id = content.getId();
-      String subselect = "id in (select topic_id from " + theTable + " where content_id=" + id+")";
 
+      String id = content.getId();
       try {
-        returnList = DatabaseTopics.getInstance().selectByWhereClause(subselect,-1);
+        Vector extraTables = new Vector();
+        extraTables.add(theTable+" cxt");
+        returnList = DatabaseTopics.getInstance()
+                      .selectByWhereClauseWithExtraTables("t",extraTables, 
+                                              "t.id=cxt.topic_id and  cxt.content_id="+id );        
       }
       catch (Exception e) {
         logger.error("-- get topics failed " + e.toString());
@@ -169,7 +171,7 @@ public class DatabaseContentToTopics extends Database implements StorageObject{
     logger.debug("to add = " + topicsToAdd.toString());
 
 
-    if (!topicsToDelete.isEmpty()) {
+    if (!topicsToDelete.isEmpty()) {      
       String sql =
           "delete from " + theTable + " " +
           "where content_id=" + anArticleId +
@@ -266,39 +268,28 @@ public class DatabaseContentToTopics extends Database implements StorageObject{
       freeConnection(con,stmt);
     }
   }
-
-
+  
+/**
+ * Returns list of Content for a specific topic
+ * @param topic
+ * @return EntityList
+ * @throws StorageObjectFailure
+ */
   public EntityList getContent(EntityTopics topic)
     throws StorageObjectFailure {
     EntityList returnList=null;
     if (topic != null) {
       String id = topic.getId();
-      String select = "select content_id from " + theTable + " where topic_id=" + id;
-
-      // execute select statement
-      Connection con=null;Statement stmt=null;
       try {
-        con = getPooledCon();
-        // should be a preparedStatement because is faster
-        stmt = con.createStatement();
-        ResultSet rs = executeSql(stmt,select);
-        if (rs!=null) {
-          String topicSelect= "id IN (";
-          boolean first=true;
-          while (rs.next()) {
-            if (first==false) topicSelect+=",";
-            topicSelect += rs.getString(1);
-            first=false;
-          }
-          topicSelect+=")";
-          if (first==false)
-            returnList = DatabaseContent.getInstance().selectByWhereClause(topicSelect,-1);
-        }
+        Vector extraTables = new Vector();
+        extraTables.add(theTable+" cxt");
+        returnList = DatabaseContent.getInstance()
+                      .selectByWhereClauseWithExtraTables("c",extraTables, 
+                          "c.id=cxt.content_id and cxt.topic_id="+id );    
       }
       catch (Exception e) {
-        logger.error("-- get contetn failed");
+        logger.error("-- get content failed");
       }
-      finally { freeConnection(con,stmt);}
     }
     return returnList;
   }