diff artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java @ 343:542caebea773

Add functionality to get 'oldest' artifact of a collection.' artifacts/trunk@3037 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 19 Oct 2011 15:55:33 +0000
parents b46c5b13ac94
children be883e843539
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Mon Oct 17 15:42:43 2011 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Wed Oct 19 15:55:33 2011 +0000
@@ -115,6 +115,7 @@
     public String SQL_COLLECTIONS_SELECT_GID;
     public String SQL_COLLECTIONS_CREATION_TIME;
     public String SQL_COLLECTIONS_ID_BY_GID;
+    public String SQL_COLLECTIONS_OLDEST_ARTIFACT;
     public String SQL_DELETE_COLLECTION_ITEMS;
     public String SQL_DELETE_COLLECTION;
     public String SQL_COLLECTION_CHECK_ARTIFACT;
@@ -332,7 +333,8 @@
         SQL_COLLECTIONS_SELECT_ALL = sql.get("collections.select.all");
         SQL_COLLECTIONS_SELECT_GID = sql.get("collections.select.by.gid");
         SQL_COLLECTIONS_CREATION_TIME = sql.get("collection.creation.time");
-        SQL_COLLECTIONS_ID_BY_GID = sql.get("collections.id.by.gid");
+        SQL_COLLECTIONS_OLDEST_ARTIFACT = sql.get("collections.artifacts.oldest");
+        SQL_COLLECTIONS_ID_BY_GID = sql.get("collections.by.gid");
         SQL_DELETE_COLLECTION_ITEMS = sql.get("delete.collection.items");
         SQL_DELETE_COLLECTION = sql.get("delete.collection");
         SQL_COLLECTION_CHECK_ARTIFACT = sql.get("collection.check.artifact");
@@ -1258,6 +1260,32 @@
     }
 
 
+    public String getMasterArtifact(final String collectionId) {
+        if (!isValidIdentifier(collectionId)) {
+            logger.debug("Invalid collection id: '" + collectionId + "'");
+            return null;
+        }
+        final List<String> uuid = new ArrayList<String>();
+        SQLExecutor.Instance exec = sqlExecutor.new Instance() {
+            public boolean doIt() throws SQLException {
+                // Fetch masters (oldest artifact) id.
+                prepareStatement(SQL_COLLECTIONS_OLDEST_ARTIFACT);
+                stmnt.setString(1, collectionId);
+                logger.debug("getMaster.execute");
+                result = stmnt.executeQuery();
+                if (!result.next()) {
+                    logger.debug("No such collection: " + collectionId);
+                    return false;
+                }
+                logger.debug("getMasterArtifact result.getString " + result.getString(1));
+                uuid.add(result.getString(1));
+                reset();
+                return true;
+            }
+        };
+        return exec.runRead() ? uuid.get(0) : null;
+    }
+
     public boolean deleteCollection(final String collectionId) {
         if (!isValidIdentifier(collectionId)) {
             logger.debug("Invalid collection id: '" + collectionId + "'");

http://dive4elements.wald.intevation.org