# HG changeset patch # User Ingo Weinzierl # Date 1300981285 0 # Node ID 87a7773030b51e1e5f247f4eaf04225ae6890a4d # Parent 2d90d5cfe8f9bfa3c170ec4792baee6f981fb436 The Backend got a method that retrieves an ArtifactCollection based on its GID. artifacts/trunk@1556 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 2d90d5cfe8f9 -r 87a7773030b5 ChangeLog --- a/ChangeLog Thu Mar 24 15:29:41 2011 +0000 +++ b/ChangeLog Thu Mar 24 15:41:25 2011 +0000 @@ -1,3 +1,8 @@ +2011-03-24 Ingo Weinzierl + + * artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java: + Added a method that retrieves an ArtifactCollection based on its GID. + 2011-03-24 Sascha L. Teichmann * artifact-database/src/main/resources/sql/org-postgresql-driver.properties: diff -r 2d90d5cfe8f9 -r 87a7773030b5 artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java --- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java Thu Mar 24 15:29:41 2011 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java Thu Mar 24 15:41:25 2011 +0000 @@ -143,6 +143,9 @@ public static final String SQL_COLLECTIONS_SELECT_ALL = SQL.get("collections.select.all"); + public static final String SQL_COLLECTIONS_SELECT_GID = + SQL.get("collections.select.by.gid"); + public static final String SQL_COLLECTIONS_CREATION_TIME = SQL.get("collection.creation.time"); @@ -1037,6 +1040,62 @@ return exec.runWrite() ? collection[0]: null; } + public ArtifactCollection getCollection( + final String collectionId, + final ArtifactCollectionFactory collectionFactory, + final UserFactory userFactory, + final Object context + ) { + if (!isValidIdentifier(collectionId)) { + logger.debug("collection id is not valid: " + collectionId); + return null; + } + + final ArtifactCollection[] ac = new ArtifactCollection[1]; + + SQLExecutor exec = new SQLExecutor() { + public boolean doIt() throws SQLException { + + prepareStatement(SQL_COLLECTIONS_SELECT_GID); + stmnt.setString(1, collectionId); + + result = stmnt.executeQuery(); + if (!result.next()) { + logger.debug("No such collection"); + return false; + } + + String collectionName = result.getString(2); + String ownerId = result.getString(3); + Date creationTime = + new Date(result.getTimestamp(4).getTime()); + Date lastAccess = + new Date(result.getTimestamp(5).getTime()); + Document attr = + XMLUtils.fromByteArray(result.getBytes(6)); + + ArtifactCollection collection = + collectionFactory.createCollection( + collectionId, + collectionName, + creationTime, + attr, + context); + + if (ownerId != null) { + collection.setUser(new LazyBackendUser( + ownerId, userFactory, Backend.this, context)); + } + + ac[0] = collection; + + return true; + } + }; + + return exec.runRead() ? ac[0] : null; + } + public ArtifactCollection [] listCollections( final String ownerIdentifier, final Document data,