<!-- See http://wiki.collectionspace.org/display/collectionspace/Acquisition+Schema -->\r
\r
<!-- Object Entry Information Group -->\r
- <xs:element name="accessionDate" type="xs:string"/>\r
+ <xs:element name="accessionDate" type="xs:date"/>\r
<xs:element name="acquisitionAuthorizer" type="xs:string"/>\r
- <xs:element name="acquisitionAuthorizerDate" type="xs:string"/>\r
+ <xs:element name="acquisitionAuthorizerDate" type="xs:date"/>\r
<xs:element name="acquisitionDates">\r
<xs:complexType>\r
<xs:sequence>\r
- <xs:element name="acquisitionDate" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="acquisitionDate" type="xs:date" minOccurs="0" maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
</xs:element>\r
import org.collectionspace.services.client.PoxPayloadIn;
import org.collectionspace.services.client.PoxPayloadOut;
import org.collectionspace.services.common.AbstractCommonListUtils;
+import org.collectionspace.services.common.datetime.GregorianCalendarDateTimeUtils;
import org.collectionspace.services.jaxb.AbstractCommonList;
import org.collectionspace.services.acquisition.AcquisitionsCommon;
// Instance variables specific to this test.
/** The known resource id. */
private String knownResourceId = null;
+ private final static String CURRENT_DATE_UTC =
+ GregorianCalendarDateTimeUtils.timestampUTC();
- @Override
- public String getServicePathComponent() {
- return AcquisitionClient.SERVICE_PATH_COMPONENT;
- }
+
+ @Override
+ public String getServicePathComponent() {
+ return AcquisitionClient.SERVICE_PATH_COMPONENT;
+ }
- @Override
- protected String getServiceName() {
- return AcquisitionClient.SERVICE_NAME;
- }
+ @Override
+ protected String getServiceName() {
+ return AcquisitionClient.SERVICE_NAME;
+ }
/* (non-Javadoc)
* @see org.collectionspace.services.client.test.BaseServiceTest#getClientInstance()
AcquisitionDateList acqDatesList = new AcquisitionDateList();
List<String> acqDates = acqDatesList.getAcquisitionDate();
- // FIXME Use properly timestamps for representative acquisition
- // dates in this example test record. The following are mere placeholders.
- acqDates.add("First Acquisition Date -" + identifier);
- acqDates.add("Second Acquisition Date-" + identifier);
+ acqDates.add(CURRENT_DATE_UTC);
+ acqDates.add(CURRENT_DATE_UTC);
acquisition.setAcquisitionDates(acqDatesList);
OwnerList ownersList = new OwnerList();
<xs:element name="measurementUnit" type="xs:string"/>\r
<xs:element name="measurementMethod" type="xs:string"/>\r
<xs:element name="value" type="xs:decimal"/>\r
- <xs:element name="valueDate" type="xs:dateTime"/>\r
+ <xs:element name="valueDate" type="xs:date"/>\r
<xs:element name="valueQualifier" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
<xs:element name="catalogDate" type="xs:string"/>\r
-->\r
\r
- <xs:element name="labelHeader" type="xs:string"/>\r
- <xs:element name="labelFooter" type="xs:string"/>\r
+ <xs:element name="labelHeader" type="xs:string"/>\r
+ <xs:element name="labelFooter" type="xs:string"/>\r
\r
- <xs:element name="fieldLocVerbatim" type="xs:string"/>\r
- <xs:element name="fieldCollectionDateEarliest" type="xs:string"/>\r
- <xs:element name="fieldCollectionDateLatest" type="xs:string"/>\r
- <xs:element name="fieldLocLatDecimal" type="xs:string"/>\r
- <xs:element name="fieldLocLongDecimal" type="xs:string"/>\r
- <xs:element name="fieldLocElevation" type="xs:string"/>\r
+ <xs:element name="fieldLocVerbatim" type="xs:string"/>\r
+ <xs:element name="fieldCollectionDateEarliest" type="xs:string"/>\r
+ <xs:element name="fieldCollectionDateLatest" type="xs:string"/>\r
+ <xs:element name="fieldLocLatDecimal" type="xs:string"/>\r
+ <xs:element name="fieldLocLongDecimal" type="xs:string"/>\r
+ <xs:element name="fieldLocElevation" type="xs:string"/>\r
\r
<!-- These will become contolled lists -->\r
- <xs:element name="fieldLocGeodeticDatum" type="xs:string"/>\r
- <xs:element name="fieldLocCoordinateSystem" type="xs:string"/>\r
- <xs:element name="fieldLocCounty" type="xs:string"/>\r
- <xs:element name="fieldLocState" type="xs:string"/>\r
- <xs:element name="fieldLocCountry" type="xs:string"/>\r
- <xs:element name="fieldLocHigherGeography" type="xs:string"/>\r
+ <xs:element name="fieldLocGeodeticDatum" type="xs:string"/>\r
+ <xs:element name="fieldLocCoordinateSystem" type="xs:string"/>\r
+ <xs:element name="fieldLocCounty" type="xs:string"/>\r
+ <xs:element name="fieldLocState" type="xs:string"/>\r
+ <xs:element name="fieldLocCountry" type="xs:string"/>\r
+ <xs:element name="fieldLocHigherGeography" type="xs:string"/>\r
\r
- <xs:element name="taxonomicIdentGroupList" type="taxonomicIdentGroupList"/>\r
- <xs:element name="typeSpecimenGroupList" type="typeSpecimenGroupList"/>\r
- <xs:element name="fieldCollElevationGroupList" type="fieldCollElevationGroupList"/>\r
- <xs:element name="fieldCollDepthGroupList" type="fieldCollDepthGroupList"/>\r
- <xs:element name="associatedTaxaGroupList" type="associatedTaxaGroupList"/>\r
+ <xs:element name="taxonomicIdentGroupList" type="taxonomicIdentGroupList"/>\r
+ <xs:element name="typeSpecimenGroupList" type="typeSpecimenGroupList"/>\r
+ <xs:element name="fieldCollElevationGroupList" type="fieldCollElevationGroupList"/>\r
+ <xs:element name="fieldCollDepthGroupList" type="fieldCollDepthGroupList"/>\r
+ <xs:element name="associatedTaxaGroupList" type="associatedTaxaGroupList"/>\r
\r
- <xs:complexType name="taxonomicIdentGroupList">\r
- <xs:sequence>\r
- <xs:element name="taxonomicIdentGroup" type="taxonomicIdentGroup" minOccurs="0"\r
+ <xs:complexType name="taxonomicIdentGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="taxonomicIdentGroup" type="taxonomicIdentGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
- <xs:complexType name="taxonomicIdentGroup">\r
- <xs:sequence>\r
- <xs:element name="taxon" type="xs:string"/>\r
- <xs:element name="qualifier" type="xs:string"/>\r
- <xs:element name="identBy" type="xs:string"/>\r
- <xs:element name="identDate" type="xs:string"/>\r
- <xs:element name="institution" type="xs:string"/>\r
- <xs:element name="identKind" type="xs:string"/>\r
- <xs:element name="reference" type="xs:string"/>\r
- <xs:element name="refPage" type="xs:string"/>\r
- <xs:element name="notes" type="xs:string"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="taxonomicIdentGroup">\r
+ <xs:sequence>\r
+ <xs:element name="taxon" type="xs:string"/>\r
+ <xs:element name="qualifier" type="xs:string"/>\r
+ <xs:element name="identBy" type="xs:string"/>\r
+ <xs:element name="identDate" type="xs:string"/>\r
+ <xs:element name="institution" type="xs:string"/>\r
+ <xs:element name="identKind" type="xs:string"/>\r
+ <xs:element name="reference" type="xs:string"/>\r
+ <xs:element name="refPage" type="xs:string"/>\r
+ <xs:element name="notes" type="xs:string"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
\r
- <xs:complexType name="typeSpecimenGroupList">\r
- <xs:sequence>\r
- <xs:element name="typeSpecimenGroup" type="typeSpecimenGroup" minOccurs="0"\r
+ <xs:complexType name="typeSpecimenGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="typeSpecimenGroup" type="typeSpecimenGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
- <xs:complexType name="typeSpecimenGroup">\r
- <xs:sequence>\r
- <xs:element name="kindOfType" type="xs:string"/>\r
- <xs:element name="reference" type="xs:string"/>\r
- <xs:element name="refPage" type="xs:string"/>\r
- <xs:element name="institution" type="xs:string"/>\r
- <xs:element name="institutionType" type="xs:string"/>\r
- <xs:element name="notes" type="xs:string"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="typeSpecimenGroup">\r
+ <xs:sequence>\r
+ <xs:element name="kindOfType" type="xs:string"/>\r
+ <xs:element name="reference" type="xs:string"/>\r
+ <xs:element name="refPage" type="xs:string"/>\r
+ <xs:element name="institution" type="xs:string"/>\r
+ <xs:element name="institutionType" type="xs:string"/>\r
+ <xs:element name="notes" type="xs:string"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
\r
- <xs:complexType name="fieldCollElevationGroupList">\r
- <xs:sequence>\r
- <xs:element name="fieldCollElevationGroup" type="fieldCollElevationGroup" minOccurs="0"\r
+ <xs:complexType name="fieldCollElevationGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="fieldCollElevationGroup" type="fieldCollElevationGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
- <xs:complexType name="fieldCollElevationGroup">\r
- <xs:sequence>\r
- <xs:element name="minElevation" type="xs:integer"/>\r
- <xs:element name="maxElevation" type="xs:integer"/>\r
- <xs:element name="units" type="xs:string"/>\r
- <xs:element name="qualifier" type="xs:string"/>\r
- <xs:element name="notes" type="xs:string"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="fieldCollElevationGroup">\r
+ <xs:sequence>\r
+ <xs:element name="minElevation" type="xs:integer"/>\r
+ <xs:element name="maxElevation" type="xs:integer"/>\r
+ <xs:element name="units" type="xs:string"/>\r
+ <xs:element name="qualifier" type="xs:string"/>\r
+ <xs:element name="notes" type="xs:string"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
\r
- <xs:complexType name="fieldCollDepthGroupList">\r
- <xs:sequence>\r
- <xs:element name="fieldCollDepthGroup" type="fieldCollDepthGroup" minOccurs="0"\r
+ <xs:complexType name="fieldCollDepthGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="fieldCollDepthGroup" type="fieldCollDepthGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
- <xs:complexType name="fieldCollDepthGroup">\r
- <xs:sequence>\r
- <xs:element name="minDepth" type="xs:integer"/>\r
- <xs:element name="maxDepth" type="xs:integer"/>\r
- <xs:element name="units" type="xs:string"/>\r
- <xs:element name="qualifier" type="xs:string"/>\r
- <xs:element name="notes" type="xs:string"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="fieldCollDepthGroup">\r
+ <xs:sequence>\r
+ <xs:element name="minDepth" type="xs:integer"/>\r
+ <xs:element name="maxDepth" type="xs:integer"/>\r
+ <xs:element name="units" type="xs:string"/>\r
+ <xs:element name="qualifier" type="xs:string"/>\r
+ <xs:element name="notes" type="xs:string"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
\r
- <xs:complexType name="associatedTaxaGroupList">\r
- <xs:sequence>\r
- <xs:element name="associatedTaxaGroup" type="associatedTaxaGroup" minOccurs="0"\r
+ <xs:complexType name="associatedTaxaGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="associatedTaxaGroup" type="associatedTaxaGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
- <xs:complexType name="associatedTaxaGroup">\r
- <xs:sequence>\r
- <xs:element name="taxon" type="xs:string"/>\r
- <xs:element name="commonName" type="xs:integer"/>\r
- <xs:element name="interaction" type="xs:integer"/>\r
- </xs:sequence>\r
- </xs:complexType>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="associatedTaxaGroup">\r
+ <xs:sequence>\r
+ <xs:element name="taxon" type="xs:string"/>\r
+ <xs:element name="commonName" type="xs:integer"/>\r
+ <xs:element name="interaction" type="xs:integer"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
\r
</xs:schema>\r
<xs:element name="measurementUnit" type="xs:string"/>
<xs:element name="measurementMethod" type="xs:string"/>
<xs:element name="value" type="xs:decimal"/>
- <xs:element name="valueDate" type="xs:string"/>
+ <xs:element name="valueDate" type="xs:date"/>
<xs:element name="valueQualifier" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<types:key>authRef</types:key>
<types:value>borrowersAuthorizer</types:value>
</types:item>
- <!-- To be added to Loan In records per CSPACE-3269 -->
- <!--
<types:item xmlns:types="http://collectionspace.org/services/common/types">
<types:key>authRef</types:key>
<types:value>borrowersContact</types:value>
</types:item>
- -->
<!-- Commented out for now, as searching within a field in a complexType breaks searches -->
<!--
<types:item xmlns:types="http://collectionspace.org/services/common/types">
final static String LOCALE_LANGUAGE_CODE_PROPERTY_NAME = "localeLanguage";
final static Locale NULL_LOCALE = null;
final static List<String> isoLanguageCodes = new ArrayList(Arrays.asList(Locale.getISOLanguages()));
- final static String ISO_8601_FLOATING_DATE_PATTERN = "yyyy-MM-dd";
+ final static String ISO_8601_DATE_PATTERN = "yyyy-MM-dd";
final static String ISO_8601_UTC_TIMESTAMP_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
static Map<String,List<DateFormat>> dateFormatters = new HashMap<String,List<DateFormat>>();
static Map<String,List<String>> datePatterns = new HashMap<String,List<String>>();
return formatGregorianCalendarDate(cal, GregorianCalendarDateTimeUtils.UTCTimeZone(),
getDateFormatter(ISO_8601_UTC_TIMESTAMP_PATTERN));
}
+
+ /**
+ * Returns a representation of a calendar date and time instance,
+ * as an ISO 8601-formatted date.
+ *
+ * @param cal a calendar date and time instance.
+ *
+ * @return a representation of that calendar date and time instance,
+ * as an ISO 8601-formatted date.
+ */
+ public static String formatAsISO8601Date(GregorianCalendar cal) {
+ return formatGregorianCalendarDate(cal, GregorianCalendarDateTimeUtils.UTCTimeZone(),
+ getDateFormatter(ISO_8601_DATE_PATTERN));
+ }
/**
* Formats a provided calendar date using a supplied date formatter,
public static String timestampUTC() {
return DateTimeFormatUtils.formatAsISO8601Timestamp(currentDateAndTime(UTCTimeZone()));
}
+
+ /**
+ * Returns a String representing the current date and time instance.
+ * in the UTC time zone, formatted as an ISO 8601 date.
+ *
+ * @return A String representing the current date and time instance.
+ */
+ public static String currentDateUTC() {
+ return DateTimeFormatUtils.formatAsISO8601Date(currentDateAndTime(UTCTimeZone()));
+ }
}
<xs:element name="currentOwner" type="xs:string"/>\r
<xs:element name="depositor" type="xs:string"/>\r
<xs:element name="depositorsRequirements" type="xs:string"/>\r
- <xs:element name="entryDate" type="xs:string"/>\r
+ <xs:element name="entryDate" type="xs:date"/>\r
<xs:element name="entryMethods">\r
<xs:complexType>\r
<xs:sequence>\r
<xs:element name="entryNumber" type="xs:string"/>\r
<xs:element name="entryReason" type="xs:string"/>\r
<xs:element name="packingNote" type="xs:string"/>\r
- <xs:element name="returnDate" type="xs:string"/>\r
+ <xs:element name="returnDate" type="xs:date"/>\r
\r
<!-- Object Collection Information Group -->\r
<xs:element name="fieldCollectionDate" type="xs:string"/>\r
<xs:element name="insuranceNote" type="xs:string"/>\r
<xs:element name="insurancePolicyNumber" type="xs:string"/>\r
<xs:element name="insuranceReferenceNumber" type="xs:string"/>\r
- <xs:element name="insuranceRenewalDate" type="xs:string"/>\r
+ <xs:element name="insuranceRenewalDate" type="xs:date"/>\r
<xs:element name="insurers">\r
<xs:complexType>\r
<xs:sequence>\r
\r
<xs:element name="currentLocationGroupList" type="currentLocationGroupList"/>\r
\r
- <xs:element name="locationDate" type="xs:string"/>\r
+ <xs:element name="locationDate" type="xs:date"/>\r
<xs:element name="normalLocation" type="xs:string"/>\r
\r
<!-- Condition Check/Technical Assessment Information Group -->\r
- <xs:element name="conditionCheckDate" type="xs:string"/>\r
+ <xs:element name="conditionCheckDate" type="xs:date"/>\r
<xs:element name="conditionCheckMethods">\r
<xs:complexType>\r
<xs:sequence>\r
private final Logger logger = LoggerFactory.getLogger(IntakeServiceTest.class);
/** The known resource id. */
private String knownResourceId = null;
+ private final static String CURRENT_DATE_UTC =
+ GregorianCalendarDateTimeUtils.currentDateUTC();
@Override
protected CollectionSpaceClient getClientInstance() {
// Update the content of this resource.
intakeCommons.setEntryNumber("updated-" + intakeCommons.getEntryNumber());
- intakeCommons.setEntryDate("updated-" + intakeCommons.getEntryDate());
if (logger.isDebugEnabled()) {
logger.debug("to be updated object");
logger.debug(objectAsXmlString(intakeCommons, IntakesCommon.class));
Assert.assertNotNull(updatedIntake);
- Assert.assertEquals(updatedIntake.getEntryDate(),
- intakeCommons.getEntryDate(),
+ Assert.assertEquals(updatedIntake.getEntryNumber(),
+ intakeCommons.getEntryNumber(),
"Data in updated object did not match submitted data.");
currentLocationGroupList = updatedIntake.getCurrentLocationGroupList();
protected PoxPayloadOut createInstance(String identifier) {
return createIntakeInstance(
"entryNumber-" + identifier,
- "entryDate-" + identifier,
+ CURRENT_DATE_UTC,
"depositor-" + identifier);
}
<xs:element name="loanInNumber" type="xs:string"/>\r
<xs:element name="lenderGroupList" type="lenderGroupList"/>\r
<xs:element name="loanInContact" type="xs:string"/>\r
+ <xs:element name="borrowersContact" type="xs:string"/>\r
<xs:element name="borrowersAuthorizer" type="xs:string"/>\r
+ <xs:element name="borrowersAuthorizationDate" type="xs:date"/>\r
<xs:element name="loanInConditions" type="xs:string"/>\r
- <xs:element name="loanInDate" type="xs:string"/>\r
- <xs:element name="loanReturnDate" type="xs:string"/>\r
- <xs:element name="loanRenewalApplicationDate" type="xs:string"/>\r
+ <xs:element name="loanInDate" type="xs:date"/>\r
+ <xs:element name="loanReturnDate" type="xs:date"/>\r
+ <xs:element name="loanRenewalApplicationDate" type="xs:date"/>\r
<xs:element name="loanInNote" type="xs:string"/>\r
<xs:element name="loanPurpose" type="xs:string"/>\r
+ <xs:element name="loanStatusGroupList" type="loanStatusGroupList"/>\r
\r
<xs:complexType name="lenderGroupList">\r
<xs:sequence>\r
<xs:sequence>\r
<xs:element name="lender" type="xs:string"/>\r
<xs:element name="lendersAuthorizer" type="xs:string"/>\r
- <xs:element name="lendersAuthorizationDate" type="xs:string"/>\r
+ <xs:element name="lendersAuthorizationDate" type="xs:date"/>\r
<xs:element name="lendersContact" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
+ \r
+ <xs:complexType name="loanStatusGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="loanStatusGroup" type="loanStatusGroup" minOccurs="0"\r
+ maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="loanStatusGroup">\r
+ <xs:sequence>\r
+ <xs:element name="loanStatus" type="xs:string"/>\r
+ <xs:element name="loanStatusDate" type="xs:date"/>\r
+ <xs:element name="loanStatusNote" type="xs:string"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
\r
</xs:schema>\r
import org.collectionspace.services.client.PoxPayloadIn;
import org.collectionspace.services.client.PoxPayloadOut;
import org.collectionspace.services.common.AbstractCommonListUtils;
+import org.collectionspace.services.common.datetime.GregorianCalendarDateTimeUtils;
import org.collectionspace.services.jaxb.AbstractCommonList;
import org.collectionspace.services.loanin.LenderGroup;
import org.collectionspace.services.loanin.LenderGroupList;
/** The known resource id. */
private String knownResourceId = null;
private String LENDER_REF_NAME =
- "urn:cspace:org.collectionspace.demo:personauthority:name(TestPersonAuth):person:name(Harry Lender)'Harry Lender'";
+ "urn:cspace:org.collectionspace.demo:personauthorities:name(TestPersonAuth):item:name(HarryLender)'Harry Lender'";
+ private final static String CURRENT_DATE_UTC =
+ GregorianCalendarDateTimeUtils.currentDateUTC();
/* (non-Javadoc)
* @see org.collectionspace.services.client.test.BaseServiceTest#getClientInstance()
// Update the content of this resource.
loaninCommon.setLoanInNumber("updated-" + loaninCommon.getLoanInNumber());
- loaninCommon.setLoanReturnDate("updated-" + loaninCommon.getLoanReturnDate());
loaninCommon.setLoanInNote("updated-" + loaninCommon.getLoanInNote());
if (logger.isDebugEnabled()) {
logger.debug("to be updated object");
Assert.assertNotNull(updatedLoaninCommon);
// Check selected fields in the updated common part.
- Assert.assertEquals(updatedLoaninCommon.getLoanReturnDate(),
- loaninCommon.getLoanReturnDate(),
+ Assert.assertEquals(updatedLoaninCommon.getLoanInNumber(),
+ loaninCommon.getLoanInNumber(),
"Data in updated object did not match submitted data.");
if (logger.isDebugEnabled()) {
LoansinCommon loaninCommon = new LoansinCommon();
loaninCommon.setLoanInNumber(loaninNumber);
- loaninCommon.setLoanReturnDate(returnDate);
+ loaninCommon.setLoanReturnDate(CURRENT_DATE_UTC);
LenderGroupList lenderGroupList = new LenderGroupList();
LenderGroup lenderGroup = new LenderGroup();
lenderGroup.setLender(LENDER_REF_NAME);
-->
<!-- See http://wiki.collectionspace.org/display/collectionspace/Loans+In+Schema -->
- <!-- loanin -->
+ <!-- Loan In Information Group -->
<xs:element name="loansin_common">
<xs:complexType>
- <xs:sequence>
- <!-- Loan In Information Group -->
+ <xs:sequence>
<xs:element name="loanInNumber" type="xs:string"/>
<xs:element name="lenderGroupList" type="lenderGroupList"/>
<xs:element name="loanInContact" type="xs:string"/>
+ <xs:element name="borrowersContact" type="xs:string"/>
<xs:element name="borrowersAuthorizer" type="xs:string"/>
+ <xs:element name="borrowersAuthorizationDate" type="xs:string"/>
<xs:element name="loanInConditions" type="xs:string"/>
<xs:element name="loanInDate" type="xs:string"/>
<xs:element name="loanReturnDate" type="xs:string"/>
<xs:element name="loanRenewalApplicationDate" type="xs:string"/>
<xs:element name="loanInNote" type="xs:string"/>
<xs:element name="loanPurpose" type="xs:string"/>
+ <xs:element name="loanStatusGroupList" type="loanStatusGroupList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="lenderGroupList">
- <xs:sequence>
- <xs:element name="lenderGroup" type="lenderGroup" minOccurs="0"
+ <xs:sequence>
+ <xs:element name="lenderGroup" type="lenderGroup" minOccurs="0"
maxOccurs="unbounded"/>
- </xs:sequence>
+ </xs:sequence>
</xs:complexType>
<xs:complexType name="lenderGroup">
- <xs:sequence>
- <xs:element name="lender" type="xs:string"/>
- <xs:element name="lendersAuthorizer" type="xs:string"/>
- <xs:element name="lendersAuthorizationDate" type="xs:string"/>
- <xs:element name="lendersContact" type="xs:string"/>
- </xs:sequence>
+ <xs:sequence>
+ <xs:element name="lender" type="xs:string"/>
+ <xs:element name="lendersAuthorizer" type="xs:string"/>
+ <xs:element name="lendersAuthorizationDate" type="xs:string"/>
+ <xs:element name="lendersContact" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="loanStatusGroupList">
+ <xs:sequence>
+ <xs:element name="loanStatusGroup" type="loanStatusGroup" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="loanStatusGroup">
+ <xs:sequence>
+ <xs:element name="loanStatus" type="xs:string"/>
+ <xs:element name="loanStatusDate" type="xs:string"/>
+ <xs:element name="loanStatusNote" type="xs:string"/>
+ </xs:sequence>
</xs:complexType>
</xs:schema>
<!-- Loan Out Information Group -->\r
<xs:element name="loanOutNumber" type="xs:string"/>\r
<xs:element name="borrower" type="xs:string"/>\r
+ <xs:element name="borrowersAuthorizer" type="xs:string"/>\r
+ <xs:element name="borrowersAuthorizationDate" type="xs:date"/>\r
<xs:element name="borrowersContact" type="xs:string"/>\r
<xs:element name="lendersAuthorizer" type="xs:string"/>\r
- <xs:element name="lendersAuthorizationDate" type="xs:string"/>\r
+ <xs:element name="lendersAuthorizationDate" type="xs:date"/>\r
<xs:element name="lendersContact" type="xs:string"/>\r
\r
<xs:element name="loanedObjectStatusGroupList" type="loanedObjectStatusGroupList"/>\r
\r
- <xs:element name="loanOutDate" type="xs:string"/>\r
- <xs:element name="loanReturnDate" type="xs:string"/>\r
- <xs:element name="loanRenewalApplicationDate" type="xs:string"/>\r
+ <xs:element name="loanOutDate" type="xs:date"/>\r
+ <xs:element name="loanReturnDate" type="xs:date"/>\r
+ <xs:element name="loanRenewalApplicationDate" type="xs:date"/>\r
<xs:element name="specialConditionsOfLoan" type="xs:string"/>\r
<xs:element name="loanOutNote" type="xs:string"/>\r
<xs:element name="loanPurpose" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
\r
- <xs:complexType name="loanedObjectStatusGroup">\r
+ <xs:complexType name="loanStatusGroup">\r
<xs:sequence>\r
- <xs:element name="loanedObjectStatus" type="xs:string"/>\r
- <xs:element name="loanedObjectStatusDate" type="xs:string"/>\r
- <xs:element name="loanedObjectStatusNote" type="xs:string"/>\r
+ <xs:element name="loanStatus" type="xs:string"/>\r
+ <xs:element name="loanStatusDate" type="xs:date"/>\r
+ <xs:element name="loanStatusNote" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
\r
import org.collectionspace.services.client.PoxPayloadIn;
import org.collectionspace.services.client.PoxPayloadOut;
import org.collectionspace.services.common.AbstractCommonListUtils;
+import org.collectionspace.services.common.datetime.GregorianCalendarDateTimeUtils;
import org.collectionspace.services.jaxb.AbstractCommonList;
import org.collectionspace.services.loanout.LoanedObjectStatusGroup;
import org.collectionspace.services.loanout.LoanedObjectStatusGroupList;
private final Logger logger = LoggerFactory.getLogger(CLASS_NAME);
/** The known resource id. */
private String knownResourceId = null;
+ private final static String CURRENT_DATE_UTC =
+ GregorianCalendarDateTimeUtils.currentDateUTC();
/* (non-Javadoc)
* @see org.collectionspace.services.client.test.BaseServiceTest#getClientInstance()
// Update the content of this resource.
loanoutCommon.setLoanOutNumber("updated-" + loanoutCommon.getLoanOutNumber());
- loanoutCommon.setLoanReturnDate("updated-" + loanoutCommon.getLoanReturnDate());
LoanedObjectStatusGroupList statusGroupList = loanoutCommon.getLoanedObjectStatusGroupList();
Assert.assertNotNull(statusGroupList);
List<LoanedObjectStatusGroup> statusGroups = statusGroupList.getLoanedObjectStatusGroup();
Assert.assertNotNull(updatedLoanoutCommon);
// Check selected fields in the updated resource.
- Assert.assertEquals(updatedLoanoutCommon.getLoanReturnDate(),
- loanoutCommon.getLoanReturnDate(),
+ Assert.assertEquals(updatedLoanoutCommon.getLoanOutNumber(),
+ loanoutCommon.getLoanOutNumber(),
"Data in updated object did not match submitted data.");
LoanedObjectStatusGroupList updatedStatusGroupList =
private PoxPayloadOut createLoanoutInstance(String identifier) {
return createLoanoutInstance(
"loanoutNumber-" + identifier,
- "returnDate-" + identifier);
+ CURRENT_DATE_UTC);
}
/**
loanoutCommon.setLoanOutNumber(loanOutNumber);
loanoutCommon.setLoanReturnDate(returnDate);
loanoutCommon.setBorrower(
- "urn:cspace:org.collectionspace.demo:orgauthority:name(TestOrgAuth):organization:name(Northern Climes Museum)'Northern Climes Museum'");
+ "urn:cspace:org.collectionspace.demo:orgauthorities:name(TestOrgAuth):item:name(NorthernClimesMuseum)'Northern Climes Museum'");
loanoutCommon.setBorrowersContact(
- "urn:cspace:org.collectionspace.demo:personauthority:name(TestPersonAuth):person:name(Chris Contact)'Chris Contact'");
+ "urn:cspace:org.collectionspace.demo:personauthorities:name(TestPersonAuth):item:name(ChrisContact)'Chris Contact'");
loanoutCommon.setLoanPurpose("Allow people in cold climes to share the magic of Surfboards of the 1960s.");
LoanedObjectStatusGroupList statusGroupList = new LoanedObjectStatusGroupList();
List<LoanedObjectStatusGroup> statusGroups = statusGroupList.getLoanedObjectStatusGroup();
<!-- Loan Out Information Group -->
<xs:element name="loanOutNumber" type="xs:string"/>
<xs:element name="borrower" type="xs:string"/>
+ <xs:element name="borrowersAuthorizer" type="xs:string"/>
+ <xs:element name="borrowersAuthorizationDate" type="xs:string"/>
<xs:element name="borrowersContact" type="xs:string"/>
<xs:element name="lendersAuthorizer" type="xs:string"/>
<xs:element name="lendersAuthorizationDate" type="xs:string"/>
<xs:complexType name="conditionGroup">
<xs:sequence>
<xs:element name="conditionNote" type="xs:string"/>
- <xs:element name="conditionNoteDate" type="xs:string"/>
+ <xs:element name="conditionNoteDate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
import org.collectionspace.services.client.PoxPayloadIn;
import org.collectionspace.services.client.PoxPayloadOut;
import org.collectionspace.services.common.AbstractCommonListUtils;
+import org.collectionspace.services.common.datetime.GregorianCalendarDateTimeUtils;
import org.collectionspace.services.client.LocationAuthorityClient;
import org.collectionspace.services.client.LocationAuthorityClientUtils;
import org.collectionspace.services.jaxb.AbstractCommonList;
private final Logger logger = LoggerFactory.getLogger(LocationAuthorityServiceTest.class);
private final String REFNAME = "refName";
private final String DISPLAYNAME = "displayName";
+ private final static String CURRENT_DATE_UTC =
+ GregorianCalendarDateTimeUtils.currentDateUTC();
@Override
public String getServicePathComponent() {
final String TEST_NAME = "Shelf 1";
final String TEST_SHORTID = "shelf1";
final String TEST_CONDITION_NOTE = "Basically clean";
- final String TEST_CONDITION_NOTE_DATE = "June 11, 1979";
+ final String TEST_CONDITION_NOTE_DATE = CURRENT_DATE_UTC;
final String TEST_SECURITY_NOTE = "Kind of safe";
final String TEST_ACCESS_NOTE = "Only right-thinkers may see";
final String TEST_ADDRESS = "123 Main Street, Anytown USA";
<xs:element name="measurementUnit" type="xs:string"/>\r
<xs:element name="measurementMethod" type="xs:string"/>\r
<xs:element name="value" type="xs:decimal"/>\r
- <xs:element name="valueDate" type="xs:dateTime"/>\r
+ <xs:element name="valueDate" type="xs:date"/>\r
<xs:element name="valueQualifier" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
<xs:element name="currentLocation" type="xs:string"/>\r
<xs:element name="currentLocationFitness" type="xs:string"/>\r
<xs:element name="currentLocationNote" type="xs:string"/>\r
- <xs:element name="locationDate" type="xs:dateTime"/>\r
+ <xs:element name="locationDate" type="xs:date"/>\r
<xs:element name="normalLocation" type="xs:string"/>\r
\r
<!-- Movement Information Group -->\r
</xs:element>\r
<xs:element name="movementNote" type="xs:string"/>\r
<xs:element name="movementReferenceNumber" type="xs:string"/>\r
- <xs:element name="plannedRemovalDate" type="xs:dateTime"/>\r
- <xs:element name="removalDate" type="xs:dateTime"/>\r
+ <xs:element name="plannedRemovalDate" type="xs:date"/>\r
+ <xs:element name="removalDate" type="xs:date"/>\r
<xs:element name="reasonForMove" type="xs:string"/>\r
\r
</xs:schema>\r
// Instance variables specific to this test.
private String knownResourceId = null;
- private final static String TIMESTAMP_UTC = GregorianCalendarDateTimeUtils.timestampUTC();
+ private final static String CURRENT_DATE_UTC =
+ GregorianCalendarDateTimeUtils.currentDateUTC();
/* (non-Javadoc)
* @see org.collectionspace.services.client.test.BaseServiceTest#getClientInstance()
// Check the values of one or more date/time fields.
if (logger.isDebugEnabled()) {
logger.debug("locationDate=" + movementCommon.getLocationDate());
- logger.debug("TIMESTAMP_UTC=" + TIMESTAMP_UTC);
+ logger.debug("TIMESTAMP_UTC=" + CURRENT_DATE_UTC);
}
- Assert.assertTrue(movementCommon.getLocationDate().equals(TIMESTAMP_UTC));
- Assert.assertTrue(movementCommon.getPlannedRemovalDate().equals(TIMESTAMP_UTC));
+ Assert.assertTrue(movementCommon.getLocationDate().equals(CURRENT_DATE_UTC));
+ Assert.assertTrue(movementCommon.getPlannedRemovalDate().equals(CURRENT_DATE_UTC));
Assert.assertNull(movementCommon.getRemovalDate());
// Check the values of fields containing Unicode UTF-8 (non-Latin-1) characters.
movementCommon.setCurrentLocation("currentLocation value");
movementCommon.setCurrentLocationFitness("currentLocationFitness value");
movementCommon.setCurrentLocationNote("currentLocationNote value");
- movementCommon.setLocationDate(TIMESTAMP_UTC);
+ movementCommon.setLocationDate(CURRENT_DATE_UTC);
movementCommon.setNormalLocation("normalLocation value");
movementCommon.setMovementContact("movementContact value");
MovementMethodsList movementMethodsList = new MovementMethodsList();
movementCommon.setMovementMethods(movementMethodsList);
movementCommon.setMovementNote(getUTF8DataFragment());
movementCommon.setMovementReferenceNumber(movementReferenceNumber);
- movementCommon.setPlannedRemovalDate(TIMESTAMP_UTC);
+ movementCommon.setPlannedRemovalDate(CURRENT_DATE_UTC);
movementCommon.setRemovalDate(""); // Test empty date value
movementCommon.setReasonForMove("reasonForMove value");
return multipart;
}
- // FIXME Should be moved to a common class, as these are general utilities.
- // FIXME Should be refactored to become a convenience variant of a
- // general method to return a current datestamp or timestamp in any
- // provided time zone.
-
- /**
- * Returns an ISO 8601 formatted timestamp of the
- * current time instance in the UTC time zone.
- */
- public String datestampUTC() {
- final String ISO_8601_DATE_FORMAT_PATTERN = "yyyy-MM-dd";
- final DateFormat ISO_8601_DATE_FORMAT =
- new SimpleDateFormat(ISO_8601_DATE_FORMAT_PATTERN);
-
- final String UTC_TIMEZONE_IDENTIFIER = "UTC";
- final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone(UTC_TIMEZONE_IDENTIFIER);
-
- Date timestamp = new Date();
- return formatDate(timestamp, UTC_TIMEZONE, ISO_8601_DATE_FORMAT);
- }
-
- /**
- * Returns an ISO 8601 formatted timestamp of the
- * current time instance in the UTC time zone.
- */
- public String timestampUTC() {
- final String ISO_8601_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
- final DateFormat ISO_8601_FORMAT =
- new SimpleDateFormat(ISO_8601_FORMAT_PATTERN);
-
- final String UTC_TIMEZONE_IDENTIFIER = "UTC";
- final TimeZone UTC_TIMEZONE = TimeZone.getTimeZone(UTC_TIMEZONE_IDENTIFIER);
-
- Date timestamp = new Date();
- return formatDate(timestamp, UTC_TIMEZONE, ISO_8601_FORMAT);
- }
-
- /**
- * Formats a provided date using a provided date formatter,
- * in the default system time zone.
- *
- * @param date A date to format.
- * @param df A date formatter to apply.
- * @return A formatted date string.
- */
- public String formatDate(Date date, DateFormat df) {
- return formatDate(date, TimeZone.getDefault(), df);
- }
-
- // FIXME Add error handling.
-
- /**
- * Formats a provided date using a provided date formatter,
- * in a provided time zone.
- *
- * @param date A date to format.
- * @param tz The time zone qualifier for the date to format.
- * @param df A date formatter to apply.
- *
- * @return A formatted date string.
- */
- public String formatDate(Date date, TimeZone tz, DateFormat df) {
- df.setTimeZone(tz);
- return df.format(date);
- }
-
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
\r
<!--\r
- Loan Out schema (XSD)\r
+ Object Exit schema (XSD)\r
\r
Entity : ObjectExit\r
Part : Common\r
<!-- ObjectExit Information Group -->\r
<xs:element name="currentOwner" type="xs:string"/>\r
<xs:element name="depositor" type="xs:string"/>\r
- <xs:element name="exitDate" type="xs:string"/>\r
+ <xs:element name="exitDate" type="xs:date"/>\r
<xs:element name="exitMethods">\r
<xs:complexType>\r
<xs:sequence>\r
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
- Loan Out schema (XSD)
+ Object Exit schema (XSD)
Entity : ObjectExit
Part : Common