Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java @ 175:16e6e661e6bf
Added code to delete collections.
artifacts/trunk@1401 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 04 Mar 2011 17:11:40 +0000 |
parents | 25d472a67a9f |
children | a0eff2227588 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java Fri Mar 04 16:43:03 2011 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java Fri Mar 04 17:11:40 2011 +0000 @@ -146,6 +146,15 @@ public static final String SQL_COLLECTIONS_CREATION_TIME = SQL.get("collection.creation.time"); + public static final String SQL_COLLECTIONS_ID_BY_GID = + SQL.get("collection.creation.time"); + + public static final String SQL_DELETE_COLLECTION_ITEMS = + SQL.get("delete.collection.items"); + + public static final String SQL_DELETE_COLLECTION = + SQL.get("delete.collection"); + /** The singleton.*/ protected static Backend instance; @@ -1044,9 +1053,46 @@ } - public boolean deleteCollection(String collectionId) { - // TODO: Implement me! - return false; + public boolean deleteCollection(final String collectionId) { + if (!StringUtils.checkUUID(collectionId)) { + logger.debug("Invalid collection id: '" + collectionId + "'"); + return false; + } + SQLExecutor exec = new SQLExecutor() { + public boolean doIt() throws SQLException { + // fetch collection id + prepareStatement(SQL_COLLECTIONS_ID_BY_GID); + stmnt.setString(1, collectionId); + result = stmnt.executeQuery(); + if (!result.next()) { + logger.debug("No such collection: " + collectionId); + return false; + } + int id = result.getInt(1); + reset(); + + // outdate artifacts that are only in this collection + prepareStatement(SQL_OUTDATE_ARTIFACTS_COLLECTION); + stmnt.setInt(1, id); + stmnt.setInt(2, id); + stmnt.execute(); + reset(); + + // delete the collection items + prepareStatement(SQL_DELETE_COLLECTION_ITEMS); + stmnt.setInt(1, id); + stmnt.execute(); + reset(); + + // delete the collection + prepareStatement(SQL_DELETE_COLLECTION); + stmnt.setInt(1, id); + stmnt.execute(); + conn.commit(); + return true; + } + }; + return exec.runWrite(); } public Document getCollectionAttribute(