From f933105d0f04861c577ade5c47327790ed96dfdc Mon Sep 17 00:00:00 2001 From: Aron Roberts Date: Wed, 7 Oct 2009 00:11:44 +0000 Subject: [PATCH] CSPACE-503: Changes made to the ID Service in the short-lived Hello Venus branch are merged back to the main trunk. Includes changes made in four commits: r762, r763, r765 and r768, --- .../id/AlphabeticIDGeneratorPart.java | 1 - .../services/id/BaseIDGenerator.java | 2 +- .../services/id/IDResource.java | 2 +- .../services/id/IDServiceJdbcImpl.java | 2 +- .../services/id/SettableIDGenerator.java | 6 +- .../services/id/YearIDGeneratorPart.java | 6 +- .../resources/db/mysql/load_id_generators.sql | 349 ++++++++++++++++++ .../test/AlphabeticIDGeneratorPartTest.java | 5 +- .../services/id/test/BaseIDGeneratorTest.java | 10 +- .../id/test/IDGeneratorSerializerTest.java | 25 +- .../id/test/IDServiceJdbcImplTest.java | 1 - .../id/test/NumericIDGeneratorPartTest.java | 3 +- .../id/test/SettableIDGeneratorTest.java | 8 +- .../id/test/StringIDGeneratorPartTest.java | 3 +- .../id/test/UUIDGeneratorPartTest.java | 2 + .../id/test/YearIDGeneratorPartTest.java | 8 +- 16 files changed, 390 insertions(+), 43 deletions(-) create mode 100644 services/id/service/src/main/resources/db/mysql/load_id_generators.sql diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/AlphabeticIDGeneratorPart.java b/services/id/service/src/main/java/org/collectionspace/services/id/AlphabeticIDGeneratorPart.java index abcfbee65..6f7cf7a88 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/AlphabeticIDGeneratorPart.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/AlphabeticIDGeneratorPart.java @@ -50,7 +50,6 @@ package org.collectionspace.services.id; -import java.util.Collections; import java.util.Vector; import java.util.regex.Matcher; diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/BaseIDGenerator.java b/services/id/service/src/main/java/org/collectionspace/services/id/BaseIDGenerator.java index 414de729d..b37835c48 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/BaseIDGenerator.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/BaseIDGenerator.java @@ -102,7 +102,7 @@ public class BaseIDGenerator implements IDGenerator { } // Validate that this is a legal URI. try { - URI uri = new URI(uriStr); + URI tempUri = new URI(uriStr); } catch (URISyntaxException e) { // Fail silently without setting the URI. return; 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 3973601c3..39e6f6af0 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 @@ -125,7 +125,7 @@ public class IDResource { return response; } - response = Response.status(Response.Status.OK) + response = Response.status(Response.Status.CREATED) .entity(newId).type(MediaType.TEXT_PLAIN).build(); // @TODO Return an XML-based error results format with the 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 2e7b1b5c6..d5ac20554 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 @@ -930,7 +930,7 @@ public class IDServiceJdbcImpl implements IDService { } catch (SQLException e) { throw new IllegalStateException( - "Error while checking for existence of tablebase table: " + + "Error while checking for existence of database table: " + e.getMessage()); } finally { try { diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/SettableIDGenerator.java b/services/id/service/src/main/java/org/collectionspace/services/id/SettableIDGenerator.java index 596bdc555..d70320228 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/SettableIDGenerator.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/SettableIDGenerator.java @@ -130,7 +130,8 @@ public class SettableIDGenerator extends BaseIDGenerator { // If the supplied ID doesn't partly match the pattern, // throw an Exception. if (matchedParts == 0) { - throw new IllegalArgumentException("Supplied ID does not match this ID pattern."); + throw new IllegalArgumentException("Supplied ID does not match " + + "this ID pattern."); } pattern = Pattern.compile(regex.toString()); @@ -140,7 +141,8 @@ public class SettableIDGenerator extends BaseIDGenerator { // throw an Exception. (This error condition should likely // never be reached, but it's here as a guard.) if (! matcher.matches()) { - throw new IllegalArgumentException("Supplied ID does not match this ID pattern."); + throw new IllegalArgumentException("Supplied ID does not match " + + "this ID pattern."); } // Otherwise, if the supplied ID matches the pattern, diff --git a/services/id/service/src/main/java/org/collectionspace/services/id/YearIDGeneratorPart.java b/services/id/service/src/main/java/org/collectionspace/services/id/YearIDGeneratorPart.java index 3d0d33a3d..f5ec3d036 100644 --- a/services/id/service/src/main/java/org/collectionspace/services/id/YearIDGeneratorPart.java +++ b/services/id/service/src/main/java/org/collectionspace/services/id/YearIDGeneratorPart.java @@ -90,12 +90,16 @@ public class YearIDGeneratorPart implements IDGeneratorPart { @Override public String getCurrentID() { + if (this.currentValue == null || this.currentValue.equals("")) { + setCurrentID(getCurrentYear()); + } return this.currentValue; } @Override public String newID() { - return this.currentValue; + setCurrentID(getCurrentYear()); + return getCurrentID(); } @Override diff --git a/services/id/service/src/main/resources/db/mysql/load_id_generators.sql b/services/id/service/src/main/resources/db/mysql/load_id_generators.sql new file mode 100644 index 000000000..6380a565a --- /dev/null +++ b/services/id/service/src/main/resources/db/mysql/load_id_generators.sql @@ -0,0 +1,349 @@ +/* + * load_id_generators_table.sql + * + * Loads an initial set of ID patterns into the "id_generators" table. + * + * This document is a part of the source code and related artifacts + * for CollectionSpace, an open source collections management system + * for museums and related institutions: + * + * http://www.collectionspace.org + * http://wiki.collectionspace.org + * + * Copyright © 2009 Regents of the University of California + * + * Licensed under the Educational Community License (ECL), Version 2.0. + * You may not use this file except in compliance with this License. + * + * You may obtain a copy of the ECL 2.0 License at + * https://source.collectionspace.org/collection-space/LICENSE.txt + * + * $LastChangedBy: aron $ + * $LastChangedRevision: 302 $ + * $LastChangedDate: 2009-09-25 15:51:39 -0700 (Fri, 25 Sep 2009) $ + */ + +USE `cspace`; + +-- ACCESSION_LOT_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('ACCESSION_LOT_NUMBER', + '', +' + ACCESSION_LOT_NUMBER + + Generates accession numbers, identifying accession +events in which a lot of one or more collection objects are +acquired by the museum. + + + + + + . + . + + + 6 + 1 + 1 + + +'); + +-- ACCESSION_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('ACCESSION_NUMBER', + '', +' + ACCESSION_NUMBER + + Generates accession numbers, to identify individual +collection objects individually acquired by the museum. This +generator is used for collection objects without parts. + + + + + + . + . + + + 6 + 1 + 1 + + + . + . + + + 6 + 1 + 1 + + +'); + +-- ARCHIVES_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('ARCHIVES_NUMBER', + '', +' + ARCHIVES_NUMBER + + Generates archives numbers. + + + AR + AR + + + + + + . + . + + + 6 + 1 + 1 + + +'); + +-- EVALUATION_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('EVALUATION_NUMBER', + '', +' + EVALUATION_NUMBER + + Generates evaluation numbers. + + + EV + EV + + + + + + . + . + + + 6 + 1 + 1 + + +'); + +-- INTAKE_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('INTAKE_NUMBER', + '', +' + INTAKE_NUMBER + + Generates intake numbers. + + + IN + IN + + + + + + . + . + + + 6 + 1 + 1 + + +'); + +-- INTAKE_OBJECT_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('INTAKE_OBJECT_NUMBER', + '', +' + INTAKE_OBJECT_NUMBER + + Generates intake numbers. + + + IN + IN + + + + + + . + . + + + 6 + 1 + 1 + + + . + . + + + 6 + 1 + 1 + + +'); + +-- LIBRARY_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('LIBRARY_NUMBER', + '', +' + LIBRARY_NUMBER + + Generates library numbers. + + + LIB + LIB + + + + + + . + . + + + 6 + 1 + 1 + + +'); + +-- LOANS_IN_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('LOANS_IN_NUMBER', + '', +' + LOANS_IN_NUMBER + + Generates loans-in numbers. + + + LI + LI + + + + + + . + . + + + 6 + 1 + 1 + + + . + . + + + 6 + 1 + 1 + + +'); + +-- STUDY_NUMBER + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('STUDY_NUMBER', + '', +' + STUDY_NUMBER + + Generates study numbers. + + + ST + ST + + + + + + . + . + + + 6 + 1 + 1 + + +'); + +-- UUID + +INSERT INTO `id_generators` + (id_generator_csid, last_generated_id, id_generator_state) + VALUES + ('UUID', + '', +' + UUID + + Generates universally unique identifiers (UUIDs), +as used for CollectionSpace IDs (CSIDs). These are Type 4 UUIDs, +based on random and pseudo-random parts. + + + + +'); + +SHOW WARNINGS; diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/AlphabeticIDGeneratorPartTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/AlphabeticIDGeneratorPartTest.java index 6a597e5d4..9fffb9d70 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/AlphabeticIDGeneratorPartTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/AlphabeticIDGeneratorPartTest.java @@ -23,11 +23,12 @@ package org.collectionspace.services.id.test; -import junit.framework.TestCase; - import org.collectionspace.services.id.AlphabeticIDGeneratorPart; import org.collectionspace.services.id.SequenceIDGeneratorPart; +import static org.junit.Assert.fail; +import junit.framework.TestCase; + /** * AlphabeticIDGeneratorPartTest * diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/BaseIDGeneratorTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/BaseIDGeneratorTest.java index 30573630a..74b9c8d53 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/BaseIDGeneratorTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/BaseIDGeneratorTest.java @@ -24,16 +24,8 @@ package org.collectionspace.services.id.test; import java.util.Vector; - import junit.framework.TestCase; - -import org.collectionspace.services.id.AlphabeticIDGeneratorPart; -import org.collectionspace.services.id.BaseIDGenerator; -import org.collectionspace.services.id.IDGeneratorPart; -import org.collectionspace.services.id.NumericIDGeneratorPart; -import org.collectionspace.services.id.StringIDGeneratorPart; -import org.collectionspace.services.id.UUIDGeneratorPart; -import org.collectionspace.services.id.YearIDGeneratorPart; +import org.collectionspace.services.id.*; /** * BaseIDGeneratorTest, Test class for BaseIDGenerator. diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/IDGeneratorSerializerTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/IDGeneratorSerializerTest.java index 7e297825c..657962b1c 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/IDGeneratorSerializerTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/IDGeneratorSerializerTest.java @@ -51,12 +51,13 @@ public class IDGeneratorSerializerTest extends TestCase { " \n" + ""; - // @TODO We may want to canonicalize (or otherwise normalize) the expected and - // actual XML in these tests, to avoid failures resulting from differences in - // whitespace, etc. + // @TODO We may want to canonicalize (or otherwise normalize) the + // expected and actual XML in these tests, to avoid failures resulting + // from differences in whitespace, etc. public void testSerializeIDGenerator() { - SettableIDGenerator generator = new SettableIDGenerator(DEFAULT_CSID); - assertEquals(DEFAULT_SERIALIZED_ID_GENERATOR, IDGeneratorSerializer.serialize(generator)); + SettableIDGenerator tempGenerator = new SettableIDGenerator(DEFAULT_CSID); + assertEquals(DEFAULT_SERIALIZED_ID_GENERATOR, + IDGeneratorSerializer.serialize(tempGenerator)); } public void testSerializeNullIDGenerator() { @@ -69,16 +70,19 @@ public class IDGeneratorSerializerTest extends TestCase { } public void testDeserializeIDGenerator() { - // This test will fail with different hash codes unless we add an IDGenerator.equals() - // method that explicitly defines object equality as, for instance, having identical values + // This test will fail with different hash codes unless + // we add an IDGenerator.equals() method that explicitly defines + // object equality as, for instance, having identical values // in each of its instance variables. - // IDGenerator generator = IDGeneratorSerializer.deserialize(DEFAULT_SERIALIZED_ID_PATTERN); + // IDGenerator generator = + // IDGeneratorSerializer.deserialize(DEFAULT_SERIALIZED_ID_PATTERN); // assertEquals(generator, new IDGenerator(DEFAULT_CSID)); } public void testDeserializeNullSerializedIDGenerator() { try { - SettableIDGenerator generator = IDGeneratorSerializer.deserialize(null); + SettableIDGenerator tempGenerator = + IDGeneratorSerializer.deserialize(null); fail("Should have thrown IllegalArgumentException here"); } catch (IllegalArgumentException expected) { // This Exception should be thrown, and thus the test should pass. @@ -87,7 +91,8 @@ public class IDGeneratorSerializerTest extends TestCase { public void testDeserializeInvalidSerializedIDGenerator() { try { - IDGenerator generator = IDGeneratorSerializer.deserialize(""); + IDGenerator tempGenerator = + IDGeneratorSerializer.deserialize(""); fail("Should have thrown IllegalArgumentException here"); } catch (IllegalArgumentException expected) { // This Exception should be thrown, and thus the test should pass. diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/IDServiceJdbcImplTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/IDServiceJdbcImplTest.java index adf4d1384..dc9f1ed64 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/IDServiceJdbcImplTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/IDServiceJdbcImplTest.java @@ -30,7 +30,6 @@ import org.collectionspace.services.common.repository.DocumentNotFoundException; import org.collectionspace.services.id.*; import org.testng.Assert; -import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/NumericIDGeneratorPartTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/NumericIDGeneratorPartTest.java index a778b6b98..caa2ab9ba 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/NumericIDGeneratorPartTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/NumericIDGeneratorPartTest.java @@ -27,11 +27,12 @@ package org.collectionspace.services.id.test; +import static org.junit.Assert.fail; import junit.framework.TestCase; - import org.collectionspace.services.id.NumericIDGeneratorPart; import org.collectionspace.services.id.SequenceIDGeneratorPart; + /** * NumericIDGeneratorPartTest * diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/SettableIDGeneratorTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/SettableIDGeneratorTest.java index 55e6e2148..2cdc8ea96 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/SettableIDGeneratorTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/SettableIDGeneratorTest.java @@ -24,13 +24,7 @@ package org.collectionspace.services.id.test; import junit.framework.TestCase; - -import org.collectionspace.services.id.AlphabeticIDGeneratorPart; -import org.collectionspace.services.id.IDGeneratorPart; -import org.collectionspace.services.id.NumericIDGeneratorPart; -import org.collectionspace.services.id.SettableIDGenerator; -import org.collectionspace.services.id.StringIDGeneratorPart; -import org.collectionspace.services.id.YearIDGeneratorPart; +import org.collectionspace.services.id.*; /** * SettableIDGeneratorTest, Test class for SettableIDGenerator. diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/StringIDGeneratorPartTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/StringIDGeneratorPartTest.java index 3340d3423..e899b2c26 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/StringIDGeneratorPartTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/StringIDGeneratorPartTest.java @@ -24,7 +24,8 @@ package org.collectionspace.services.id.test; import junit.framework.TestCase; - +import org.collectionspace.services.id.StoredValueIDGeneratorPart; +import org.collectionspace.services.id.StringIDGeneratorPart; import org.collectionspace.services.id.StoredValueIDGeneratorPart; import org.collectionspace.services.id.StringIDGeneratorPart; diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/UUIDGeneratorPartTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/UUIDGeneratorPartTest.java index e2dc50ff0..8376a37ad 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/UUIDGeneratorPartTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/UUIDGeneratorPartTest.java @@ -24,6 +24,8 @@ package org.collectionspace.services.id.test; import junit.framework.TestCase; +import org.collectionspace.services.id.IDGeneratorPart; +import org.collectionspace.services.id.UUIDGeneratorPart; import org.collectionspace.services.id.IDGeneratorPart; import org.collectionspace.services.id.UUIDGeneratorPart; diff --git a/services/id/service/src/test/java/org/collectionspace/services/id/test/YearIDGeneratorPartTest.java b/services/id/service/src/test/java/org/collectionspace/services/id/test/YearIDGeneratorPartTest.java index ff8d65078..40b03cb17 100644 --- a/services/id/service/src/test/java/org/collectionspace/services/id/test/YearIDGeneratorPartTest.java +++ b/services/id/service/src/test/java/org/collectionspace/services/id/test/YearIDGeneratorPartTest.java @@ -23,15 +23,14 @@ package org.collectionspace.services.id.test; +import static org.junit.Assert.fail; import java.util.Calendar; import java.util.GregorianCalendar; - import junit.framework.TestCase; - import org.collectionspace.services.id.IDGeneratorPart; import org.collectionspace.services.id.YearIDGeneratorPart; -/* +/** * YearIDGeneratorPartTest * * Test class for YearIDGeneratorPart. @@ -50,7 +49,7 @@ public class YearIDGeneratorPartTest extends TestCase { return Integer.toString(y); } -/* + public void testCurrentID() { part = new YearIDGeneratorPart(); @@ -90,7 +89,6 @@ public class YearIDGeneratorPartTest extends TestCase { } } -*/ /* public void testnewID() { -- 2.47.3