Author: echatellier Date: 2010-09-28 17:56:00 +0200 (Tue, 28 Sep 2010) New Revision: 364 Url: http://nuiton.org/repositories/revision/wikitty/364 Log: Fix storing of delete wikitty id Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java =================================================================== --- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-09-28 15:55:41 UTC (rev 363) +++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2010-09-28 15:56:00 UTC (rev 364) @@ -89,7 +89,9 @@ static final public String QUERY_SELECT_NOTDELETED = "jdbc.queries.select.notdeleted"; /** basic selection with where clause query property name */ static final public String QUERY_SELECT_WHERE = "jdbc.queries.select.where"; - /** not dleeted data selection with where clause query property name */ + /** basic selection with where clause query property name */ + static final public String QUERY_SELECT_TWO_WHERE = "jdbc.queries.select.two.where"; + /** not deleted data selection with where clause query property name */ static final public String QUERY_SELECT_WHERE_NOTDELETED = "jdbc.queries.select.where.notdeleted"; /** wikitty_admin table creation query property name */ Modified: trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java =================================================================== --- trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-09-28 15:55:41 UTC (rev 363) +++ trunk/wikitty-jdbc-impl/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2010-09-28 15:56:00 UTC (rev 364) @@ -36,6 +36,7 @@ import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_INSERT_WIKITTY_DATA; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_NOTDELETED; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE; +import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_TWO_WHERE; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_SELECT_WHERE_NOTDELETED; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.QUERY_UPDATE_WIKITTY_ADMIN; import static org.nuiton.wikitty.jdbc.WikittyJDBCUtil.TABLE_WIKITTY_ADMIN; @@ -165,8 +166,8 @@ try { UpdateResponse result = new UpdateResponse(); for (Wikitty wikitty : wikitties) { - String query = String.format(conf.getProperty(QUERY_SELECT_WHERE), - COL_VERSION, TABLE_WIKITTY_ADMIN, COL_ID); + String query = String.format(conf.getProperty(QUERY_SELECT_TWO_WHERE), + COL_VERSION, COL_DELETION_DATE, TABLE_WIKITTY_ADMIN, COL_ID); PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, wikitty.getId()); ResultSet versionResultSet = statement.executeQuery(); @@ -174,10 +175,12 @@ String extensionList = ""; boolean wikittyAlreadyExists = versionResultSet.next(); String actualVersion = null; + Date deletionDate = null; String requestedVersion = wikitty.getVersion(); if (wikittyAlreadyExists) { actualVersion = versionResultSet.getString(COL_VERSION); + deletionDate = versionResultSet.getDate(COL_DELETION_DATE); } // compute new version, but not change wikitty @@ -192,7 +195,7 @@ } else { //version in place is not null if (requestedVersion == null) { //no version requested newVersion = WikittyUtil.incrementMajorRevision(actualVersion); - } else if (WikittyUtil.versionEquals(actualVersion, requestedVersion)) { //same version + } else if (WikittyUtil.versionEquals(actualVersion, requestedVersion) && deletionDate == null) { //same version // wikitty is not modified, do nothing continue; } else if (WikittyUtil.versionGreaterThan(requestedVersion, actualVersion)) { //requested version is newer @@ -203,7 +206,7 @@ } } } else { - if (WikittyUtil.versionEquals(actualVersion, requestedVersion)) { + if (WikittyUtil.versionEquals(actualVersion, requestedVersion) && deletionDate == null) { // wikitty is not modified, do nothing continue; } else if (WikittyUtil.versionGreaterThan(actualVersion, requestedVersion)) { @@ -214,15 +217,16 @@ } } - if (!wikittyAlreadyExists) { - // insert wikitty object - String q = conf.getProperty(QUERY_INSERT_WIKITTY_ADMIN); - doQuery(connection, q, wikitty.getId(), newVersion, ""); + if (wikittyAlreadyExists) { + doQuery(connection, conf.getProperty(QUERY_DELETE_WIKITTY_DATA), wikitty.getId()); } + else { + doQuery(connection, conf.getProperty(QUERY_INSERT_WIKITTY_ADMIN), wikitty.getId(), newVersion, ""); + } + + result.addVersionUpdate(wikitty.getId(), newVersion); - doQuery(connection, conf.getProperty(QUERY_DELETE_WIKITTY_DATA), wikitty.getId()); - for (WikittyExtension ext : wikitty.getExtensions()) { extensionList += "," + ext.getId(); for (String fieldName : ext.getFieldNames()) { @@ -270,7 +274,7 @@ // delete first ',' extensionList = extensionList.substring(1); } - + // update extensions in wikitty object String q = conf.getProperty(QUERY_UPDATE_WIKITTY_ADMIN); doQuery(connection, q, newVersion, extensionList, null, wikitty.getId()); Modified: trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties =================================================================== --- trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2010-09-28 15:55:41 UTC (rev 363) +++ trunk/wikitty-jdbc-impl/src/main/resources/wikitty-jdbc-query.properties 2010-09-28 15:56:00 UTC (rev 364) @@ -44,6 +44,8 @@ jdbc.queries.select.notdeleted=SELECT %s FROM %s WHERE deletionDate IS NULL; #basic selection query with where clause jdbc.queries.select.where=SELECT %s FROM %s WHERE %s = ?; +#basic 2 selections query with where clause +jdbc.queries.select.two.where=SELECT %s, %s FROM %s WHERE %s = ?; #not deleted data selection query with where clause jdbc.queries.select.where.notdeleted=SELECT %s FROM %s WHERE %s = ? AND deletionDate IS NULL;