X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fstorage%2FDatabaseContentToTopics.java;fp=source%2Fmircoders%2Fstorage%2FDatabaseContentToTopics.java;h=2186c5effa03e06893efc31999a8eded18144918;hb=6d0d5a5bda666857dc0c9f2da125de57c63a2425;hp=4a696e41a5276dd906347e5c80bd4a95f919825b;hpb=53f90aac81d2c47624f5a1a6d61a796355d2345f;p=mir.git diff --git a/source/mircoders/storage/DatabaseContentToTopics.java b/source/mircoders/storage/DatabaseContentToTopics.java index 4a696e41..2186c5ef 100755 --- a/source/mircoders/storage/DatabaseContentToTopics.java +++ b/source/mircoders/storage/DatabaseContentToTopics.java @@ -30,21 +30,21 @@ package mircoders.storage; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; - -import mir.entity.EntityList; -import mir.log.LoggerWrapper; -import mir.storage.Database; -import mir.storage.StorageObject; -import mir.storage.StorageObjectFailure; -import mircoders.entity.EntityContent; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Vector; + +import mir.entity.EntityList; +import mir.log.LoggerWrapper; +import mir.storage.Database; +import mir.storage.StorageObject; +import mir.storage.StorageObjectFailure; +import mircoders.entity.EntityContent; import mircoders.entity.EntityTopics; /** @@ -70,24 +70,24 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ logger = new LoggerWrapper("Database.ContentToTopics"); hasTimestamp = false; - theTable="content_x_topic"; + mainTable="content_x_topic"; theEntityClass = mir.entity.GenericEntity.class; } /** * This class return an EntityList of Topics - * @param EntityContent content - * @returns EntityList */ 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(mainTable+" 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()); @@ -97,24 +97,24 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ } /** - * Returns a ArrayList of Integer-Objects from a content-id. - * @returns ArrayList + * Returns a List of String-Objects from a content-id. */ public List getTopicsOfContent(String contentId) throws StorageObjectFailure { ArrayList returnList = new ArrayList(); if (contentId != null) { - String sql = "select topic_id from " + theTable + " where content_id=" + contentId; + String sql = "select topic_id from " + mainTable + " where content_id=" + contentId; Connection con=null;Statement stmt=null; try { - con = getPooledCon(); + con = obtainConnection(); + // should be a preparedStatement because is faster stmt = con.createStatement(); ResultSet rs = executeSql(stmt,sql); if(rs!=null){ while(rs.next()){ - returnList.add(new Integer(rs.getInt("topic_id"))); + returnList.add(Integer.toString(rs.getInt("topic_id"))); } } } @@ -161,9 +161,9 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ List currentTopics = getTopicsOfContent(anArticleId); logger.debug("New topics = " + newTopics.toString()); logger.debug("Current topics = " + currentTopics.toString()); - List topicsToDelete = new Vector(currentTopics); + List topicsToDelete = new ArrayList(currentTopics); topicsToDelete.removeAll(newTopics); - List topicsToAdd = new Vector(newTopics); + List topicsToAdd = new ArrayList(newTopics); topicsToAdd.removeAll(currentTopics); logger.debug("to delete = " + topicsToDelete.toString()); logger.debug("to add = " + topicsToAdd.toString()); @@ -171,16 +171,16 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ if (!topicsToDelete.isEmpty()) { String sql = - "delete from " + theTable + " " + + "delete from " + mainTable + " " + "where content_id=" + anArticleId + " and topic_id in (" + getIdListExpression(topicsToDelete) + ")"; Connection connection=null; Statement statement=null; try { - connection = getPooledCon(); + connection = obtainConnection(); statement = connection.createStatement(); - int rs = executeUpdate(statement, sql); + executeUpdate(statement, sql); } catch (Exception e) { logger.error("-- deleting topics failed"); @@ -198,15 +198,15 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ while (i.hasNext()) { Integer topicId = (Integer) i.next(); String sql = - "insert into " + theTable + " (content_id, topic_id) "+ + "insert into " + mainTable + " (content_id, topic_id) "+ "values (" + anArticleId + "," + topicId + ")"; Connection connection=null; Statement statement=null; try { - connection = getPooledCon(); + connection = obtainConnection(); // should be a preparedStatement because is faster statement = connection.createStatement(); - int rs = executeUpdate(statement, sql); + executeUpdate(statement, sql); } catch (Exception e) { logger.error("-- adding topics failed"); @@ -228,14 +228,14 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ return; } //delete all row with content_id=contentId - String sql = "delete from "+ theTable +" where content_id=" + contentId; + String sql = "delete from "+ mainTable +" where content_id=" + contentId; Connection con=null;Statement stmt=null; try { - con = getPooledCon(); + con = obtainConnection(); // should be a preparedStatement because is faster stmt = con.createStatement(); - ResultSet rs = executeSql(stmt,sql); + executeSql(stmt,sql); } catch (Exception e) { //theLog.printDebugInfo("-- delete topics failed "); } finally { @@ -250,14 +250,14 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ return; } //delete all row with content_id=contentId - String sql = "delete from "+ theTable +" where topic_id=" + topicId; + String sql = "delete from "+ mainTable +" where topic_id=" + topicId; Connection con=null;Statement stmt=null; try { - con = getPooledCon(); + con = obtainConnection(); // should be a preparedStatement because is faster stmt = con.createStatement(); - ResultSet rs = executeSql(stmt,sql); + executeSql(stmt,sql); } catch (Exception e) { logger.error("-- delete topics failed "); @@ -267,38 +267,27 @@ public class DatabaseContentToTopics extends Database implements StorageObject{ } } - +/** + * 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(mainTable+" 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; }