private String displayName;
private String description;
private String generatorState;
+ private String lastGeneratedID;
public String getDisplayName() {
return displayName;
this.generatorState = generatorState;
}
+ public String getLastGeneratedID() {
+ return lastGeneratedID;
+ }
+
+ public void setLastGeneratedID(String lastGeneratedID) {
+ this.lastGeneratedID = lastGeneratedID;
+ }
+
}
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);
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();
instance.setDisplayName(rs.getString(2));
instance.setDescription(rs.getString(3));
instance.setGeneratorState(rs.getString(4));
+ instance.setLastGeneratedID(rs.getString(5));
rs.close();
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();
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);
}