From 9c0026da5187dbb5872d16506cc9780c1f9db85b Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Sun, 2 Feb 2014 19:21:42 +0100 Subject: [PATCH] Restrict targets in remove method. Add removeMany method and test. Update devinsy-utils library. --- .classpath | 2 +- ...s.zip => devinsy-utils-0.2.12-sources.zip} | Bin 53263 -> 56617 bytes ...ils-0.2.6.jar => devinsy-utils-0.2.12.jar} | Bin 85370 -> 91236 bytes src/fr/devinsy/sikevadb/FileSikevaDB.java | 6 + src/fr/devinsy/sikevadb/SQLSikevaDB.java | 107 +++++++++++------- src/fr/devinsy/sikevadb/SikevaDB.java | 2 + test/fr/devinsy/sikevadb/SQLSikevaDBTest.java | 35 ++++++ 7 files changed, 111 insertions(+), 41 deletions(-) rename lib/{devinsy-utils-0.2.6-sources.zip => devinsy-utils-0.2.12-sources.zip} (69%) rename lib/{devinsy-utils-0.2.6.jar => devinsy-utils-0.2.12.jar} (65%) diff --git a/.classpath b/.classpath index c5c9f50..3400f50 100644 --- a/.classpath +++ b/.classpath @@ -21,8 +21,8 @@ - + diff --git a/lib/devinsy-utils-0.2.6-sources.zip b/lib/devinsy-utils-0.2.12-sources.zip similarity index 69% rename from lib/devinsy-utils-0.2.6-sources.zip rename to lib/devinsy-utils-0.2.12-sources.zip index 639aa1b7606ee414676814e74f325a2b9d086f86..3cbd960998c2e166d8f17f590714ffc51145a974 100644 GIT binary patch delta 14463 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 k%w#DIU|6CIx30fR5d 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 V>$M07(y%{f*p~xZb(l*>_&+ZZt6Km7 delta 21095 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 diff --git a/src/fr/devinsy/sikevadb/FileSikevaDB.java b/src/fr/devinsy/sikevadb/FileSikevaDB.java index 6da6ff1..d8ae90f 100644 --- a/src/fr/devinsy/sikevadb/FileSikevaDB.java +++ b/src/fr/devinsy/sikevadb/FileSikevaDB.java @@ -337,6 +337,12 @@ public class FileSikevaDB implements SikevaDB { } + @Override + public void removeMany(final String key, final String... subkeys) throws Exception { + // TODO Auto-generated method stub + + } + @Override public void renameKey(final String oldKey, final String newKey) throws Exception { // TODO Auto-generated method stub diff --git a/src/fr/devinsy/sikevadb/SQLSikevaDB.java b/src/fr/devinsy/sikevadb/SQLSikevaDB.java index af84cae..97d3933 100644 --- a/src/fr/devinsy/sikevadb/SQLSikevaDB.java +++ b/src/fr/devinsy/sikevadb/SQLSikevaDB.java @@ -1987,31 +1987,25 @@ public class SQLSikevaDB implements SikevaDB { @Override public void remove(final String key) throws SQLException { // - Element element = getElement(key); - - if (element == null) { - throw new NullPointerException("Undefined element [key=" + key + "]"); - } else { + Connection connection = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { // - element.archive(); + connection = getConnection(); + connection.setAutoCommit(true); + statement = connection.prepareStatement("DELETE FROM sikevadb_elements WHERE TOPKEY=? AND SUBKEY IS NULL AND ARCHIVE_DATE IS NULL"); - // - Connection connection = null; - PreparedStatement statement = null; - ResultSet resultSet = null; - try { - // - connection = getConnection(); - connection.setAutoCommit(true); - statement = connection.prepareStatement("DELETE FROM sikevadb_elements WHERE TOPKEY=? AND SUBKEY IS NULL"); + statement.setString(1, key); - statement.setString(1, element.getKey()); + int rowCount = statement.executeUpdate(); - statement.executeUpdate(); - - } finally { - close(connection, statement, resultSet); + if (rowCount == 0) { + logger.warn("Remove action without existing target [key=" + key + "]"); } + + } finally { + close(connection, statement, resultSet); } } @@ -2021,31 +2015,25 @@ public class SQLSikevaDB implements SikevaDB { @Override public void remove(final String key, final String subkey) throws SQLException { // - Element element = getElement(key, subkey); - - if (element == null) { - throw new NullPointerException("Undefined element [key=" + key + "][subkey=" + subkey + "]"); - } else { + Connection connection = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { // - element.archive(); + connection = getConnection(); + statement = connection.prepareStatement("DELETE FROM sikevadb_elements WHERE TOPKEY=? AND SUBKEY=? AND ARCHIVE_DATE IS NULL"); - // - Connection connection = null; - PreparedStatement statement = null; - ResultSet resultSet = null; - try { - // - connection = getConnection(); - statement = connection.prepareStatement("DELETE FROM sikevadb_elements WHERE TOPKEY=? AND SUBKEY=?"); + statement.setString(1, key); + statement.setString(2, subkey); - statement.setString(1, element.getKey()); - statement.setString(2, element.getSubkey()); + int rowCount = statement.executeUpdate(); - statement.executeUpdate(); - - } finally { - close(connection, statement, resultSet); + if (rowCount == 0) { + logger.warn("Remove action without existing target [key=" + key + "][subkey=" + subkey + "]"); } + + } finally { + close(connection, statement, resultSet); } } @@ -2083,6 +2071,45 @@ public class SQLSikevaDB implements SikevaDB { } } + /** + * {@inheritDoc} + */ + @Override + public void removeMany(final String key, final String... subkeys) throws SQLException { + // + if ((subkeys != null) && (subkeys.length > 0)) { + // + Connection connection = null; + PreparedStatement statement = null; + ResultSet resultSet = null; + try { + // + connection = getConnection(); + + // + String questionMarks = new StringList(subkeys.length).append('?').repeatLast(subkeys.length - 1).toStringWithCommas(); + statement = connection.prepareStatement("DELETE FROM sikevadb_elements WHERE TOPKEY=? AND SUBKEY IN (" + questionMarks + + ") AND ARCHIVE_DATE IS NULL"); + // + statement.setString(1, key); + + // + for (int index = 0; index < subkeys.length; index++) { + statement.setString(2 + index, subkeys[index]); + } + + // + int rowCount = statement.executeUpdate(); + if (rowCount == 0) { + logger.warn("Remove action without existing target [key=" + key + "][subkeys=" + new StringList(subkeys).toStringWithCommas() + "]"); + } + + } finally { + close(connection, statement, resultSet); + } + } + } + /** * {@inheritDoc} */ diff --git a/src/fr/devinsy/sikevadb/SikevaDB.java b/src/fr/devinsy/sikevadb/SikevaDB.java index c99a971..4a8ccf8 100644 --- a/src/fr/devinsy/sikevadb/SikevaDB.java +++ b/src/fr/devinsy/sikevadb/SikevaDB.java @@ -126,6 +126,8 @@ public interface SikevaDB { public void removeAll(final String key) throws Exception; + public void removeMany(final String key, final String... subkeys) throws Exception; + public void renameKey(final String oldKey, final String newKey) throws Exception; public void replaceInValue(final String key, final String... tokens) throws Exception; diff --git a/test/fr/devinsy/sikevadb/SQLSikevaDBTest.java b/test/fr/devinsy/sikevadb/SQLSikevaDBTest.java index 3e89ada..ff2922d 100644 --- a/test/fr/devinsy/sikevadb/SQLSikevaDBTest.java +++ b/test/fr/devinsy/sikevadb/SQLSikevaDBTest.java @@ -529,6 +529,41 @@ public class SQLSikevaDBTest { logger.debug("===== test done."); } + /** + * @throws Exception + * + */ + @Test + public void testRemoveMany01() throws Exception { + // + logger.debug("===== test starting..."); + + database.clearDatabase(); + + database.put("alpha01", "alpha", "Allo"); + database.put("alpha01", "bravo", "Bonjour"); + database.put("alpha01", "charlie", "Courage"); + database.put("alpha01", "delta", "Droiture"); + database.put("alpha01", "echo", "Europe"); + database.put("alpha01", "fox", "Force"); + + database.put("alpha02", "alpha", "Allo"); + database.put("alpha02", "bravo", "Bonjour"); + database.put("alpha02", "charlie", "Courage"); + database.put("alpha02", "delta", "Droiture"); + database.put("alpha02", "echo", "Europe"); + database.put("alpha02", "fox", "Force"); + + Assert.assertEquals(12, database.countOfElements()); + + database.removeMany("alpha01", "bravo", "delta", "fox"); + + Assert.assertEquals(9, database.countOfElements()); + + // + logger.debug("===== test done."); + } + /** * @throws Exception *