From 151474f2314530e261ee74ca5cb33aac18bd434c Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Wed, 28 Oct 2009 21:29:08 +0000 Subject: [PATCH] CSPACE-552: Details about individual ID generator instances, or lists of same, now include a sample, or representative ID, suitable for display in UI. --- .../services/id/IDGeneratorInstance.java | 9 ++++++ .../services/id/IDResource.java | 32 +++++++++++++++++++ .../services/id/IDServiceJdbcImpl.java | 6 ++-- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/IDGeneratorInstance.java b/services/id/service/src/main/java/org/collectionspace/services/id/IDGeneratorInstance.java index 2664e463d..d90b5d71c 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/IDGeneratorInstance.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/IDGeneratorInstance.java @@ -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; + } + } diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/IDResource.java b/services/id/service/src/main/java/org/collectionspace/services/id/IDResource.java index 8fe8d9a67..86b27c4ba 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/IDResource.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/IDResource.java @@ -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); diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/IDServiceJdbcImpl.java b/services/id/service/src/main/java/org/collectionspace/services/id/IDServiceJdbcImpl.java index 024d0d4ea..d63e2d552 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/IDServiceJdbcImpl.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/IDServiceJdbcImpl.java @@ -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); } -- 2.47.3