]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-552: Details about individual ID generator instances, or lists of same, now...
authorAron Roberts <aron@socrates.berkeley.edu>
Wed, 28 Oct 2009 21:29:08 +0000 (21:29 +0000)
committerAron Roberts <aron@socrates.berkeley.edu>
Wed, 28 Oct 2009 21:29:08 +0000 (21:29 +0000)
services/id/service/src/main/java/org/collectionspace/services/id/IDGeneratorInstance.java
services/id/service/src/main/java/org/collectionspace/services/id/IDResource.java
services/id/service/src/main/java/org/collectionspace/services/id/IDServiceJdbcImpl.java

index 2664e463d709759c781c7b521d9e5a41ef18e676..d90b5d71ca4342bf75e78af0e17932115d80721b 100644 (file)
@@ -34,6 +34,7 @@ public class IDGeneratorInstance {
     private String displayName;
     private String description;
     private String generatorState;
+    private String lastGeneratedID;
 
     public String getDisplayName() {
         return displayName;
@@ -59,4 +60,12 @@ public class IDGeneratorInstance {
         this.generatorState = generatorState;
     }
 
+    public String getLastGeneratedID() {
+        return lastGeneratedID;
+    }
+
+    public void setLastGeneratedID(String lastGeneratedID) {
+        this.lastGeneratedID = lastGeneratedID;
+    }
+
 }
index 8fe8d9a67c4f11ac3ffc3bbc45d4c8092c8d872f..86b27c4ba5a0afe3ed2c4e9c326a3509901a73b9 100644 (file)
@@ -567,6 +567,38 @@ public class IDResource {
         Element description = instanceElement.addElement("description");
         description.addText(generatorInstance.getDescription());
 
+        // Append a representative, or sample, ID - of a type that
+        // can be generated by this ID generator instance - for display.
+        Element displayid = instanceElement.addElement("displayid");
+        // Return the last generated ID as a representative ID.
+        // If no ID has ever been generated by this ID generator instance,
+        // return the current ID instead.
+        //
+        // @TODO This is a short-term kludge.  We may wish to instead
+        // generate a static, sample ID, at system initialization
+        // or launch time; or generate or load this value once, at the
+        // time that an ID generator instance is created.
+        String lastgenerated = generatorInstance.getLastGeneratedID();
+        if (lastgenerated != null & ! lastgenerated.trim().isEmpty()) {
+            displayid.addText(lastgenerated);
+        } else {
+            SettableIDGenerator gen;
+            try {
+                gen = IDGeneratorSerializer.deserialize(generatorInstance
+                    .getGeneratorState());
+                String current = gen.getCurrentID();
+                if (current != null & ! current.trim().isEmpty()) {
+                    displayid.addText(current);
+                }
+            } catch (Exception e) {
+                // Do nothing here.
+                
+                // @TODO
+                // Could potentially return an error message, akin to:
+                // displayid.addText("No ID available for display");
+            }
+        }
+
         // Append components information.
         Element generator =
             instanceElement.addElement(ID_GENERATOR_COMPONENTS_NAME);
index 024d0d4ea69ca5ebe70a2b53d99644c2699b3682..d63e2d552252f2f0d314a6bd46729824d1bda238 100644 (file)
@@ -586,7 +586,7 @@ public class IDServiceJdbcImpl implements IDService {
 
             ResultSet rs = stmt.executeQuery(
                          "SELECT csid, displayname, description, " +
-              "id_generator_state FROM id_generators " +
+              "id_generator_state, last_generated_id FROM id_generators " +
                          "WHERE csid='" + csid + "'");
                          
                        boolean moreRows = rs.next();
@@ -601,6 +601,7 @@ public class IDServiceJdbcImpl implements IDService {
             instance.setDisplayName(rs.getString(2));
             instance.setDescription(rs.getString(3));
             instance.setGeneratorState(rs.getString(4));
+            instance.setLastGeneratedID(rs.getString(5));
                        
                        rs.close();
                
@@ -653,7 +654,7 @@ public class IDServiceJdbcImpl implements IDService {
 
                        ResultSet rs = stmt.executeQuery(
                          "SELECT csid, displayname, description, " +
-              "id_generator_state FROM id_generators " +
+              "id_generator_state, last_generated_id FROM id_generators " +
               "ORDER BY displayname ASC"); // , priority ASC");
 
                        boolean moreRows = rs.next();
@@ -667,6 +668,7 @@ public class IDServiceJdbcImpl implements IDService {
                 instance.setDisplayName(rs.getString(2));
                 instance.setDescription(rs.getString(3));
                 instance.setGeneratorState(rs.getString(4));
+                instance.setLastGeneratedID(rs.getString(5));
                 generators.put(rs.getString(1), instance);
             }