<xs:element name="name" type="xs:string" />\r
<xs:element name="length" type="xs:string" />\r
<xs:element name="digest" type="xs:string" />\r
- <xs:element name="dimensionGroupList" type="dimensionGroupList"/>\r
+ <!-- Changed name from dimensionGroupList (type="dimensionGroupList") in v1.13 when adding repeatable sub group -->\r
+ <xs:element name="measuredPartGroupList" type="measuredPartGroupList"/>\r
<xs:element name="uri" type="xs:string" />\r
<xs:element name="repositoryId" type="xs:string" />\r
\r
- <xs:complexType name="dimensionGroupList">\r
+ <!-- Changed names, as of v1.13: dimensionGroupList became measuredPartGroupList, dimensionGroup became measuredPartGroup. -->\r
+ <xs:complexType name="measuredPartGroupList">\r
<xs:sequence>\r
- <xs:element name="dimensionGroup" type="dimensionGroup" minOccurs="0"\r
- maxOccurs="unbounded"/>\r
+ <xs:element name="measuredPartGroup" type="measuredPartGroup" minOccurs="0"\r
+ maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
- <xs:complexType name="dimensionGroup"> <!-- //FIXME: The "dimensionGroup" type should be declared in one place since other services use it -->\r
+ <xs:complexType name="measuredPartGroup">\r
<xs:sequence>\r
<xs:element name="measuredPart" type="xs:string"/>\r
+ <xs:element name="dimensionSummary" type="xs:string"/>\r
+ <xs:element name="dimensionSubGroupList" type="dimensionSubGroupList"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="dimensionSubGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="dimensionSubGroup" type="dimensionSubGroup" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="dimensionSubGroup">\r
+ <xs:sequence>\r
<xs:element name="dimension" type="xs:string"/>\r
<xs:element name="measuredBy" type="xs:string"/>\r
<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:string"/>\r
+ <xs:element name="valueDate" type="xs:dateTime"/>\r
<xs:element name="valueQualifier" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
- \r
+\r
</xs:schema>\r
</xs:complexType>\r
</xs:element>\r
<xs:element name="copyNumber" type="xs:string"/>\r
- <!-- FIXME Move this dimensionSummary field into the repeatable Dimensions group in 1.3+ -->\r
- <xs:element name="dimensionSummary" type="xs:string"/>\r
- <xs:element name="dimensions" type="ns:dimensionList"/>\r
- <!-- FIXME Remove these six elements when the App/UI layer is -->\r
- <!-- using the new repeatable 'dimensions' field: -->\r
- <xs:element name="dimension" type="xs:string"/>\r
- <xs:element name="dimensionMeasuredPart" type="xs:string"/>\r
- <xs:element name="dimensionMeasurementUnit" type="xs:string"/>\r
- <xs:element name="dimensionValue" type="xs:string"/>\r
- <xs:element name="dimensionValueDate" type="xs:string"/>\r
- <xs:element name="dimensionValueQualifier" type="xs:string"/>\r
- <!-- end of six elements to be removed -->\r
+ <!-- Changed name of next field from dimensions (type="dimensionList") in v1.13 when adding repeatable sub group -->\r
+ <xs:element name="measuredPartGroupList" type="measuredPartGroupList"/>\r
<xs:element name="editionNumber" type="xs:string"/>\r
<xs:element name="forms">\r
<xs:complexType>\r
</xs:sequence>\r
</xs:complexType>\r
\r
- <xs:complexType name="dimensionList">\r
+ <!-- Changed names, as of v1.13: dimensionList became measuredPartGroupList, dimensionGroup became measuredPartGroup. -->\r
+ <xs:complexType name="measuredPartGroupList">\r
<xs:sequence>\r
- <xs:element name="dimensionGroup" type="dimensionGroup" minOccurs="0"\r
+ <xs:element name="measuredPartGroup" type="measuredPartGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
- <xs:complexType name="dimensionGroup">\r
+ <xs:complexType name="measuredPartGroup">\r
<xs:sequence>\r
<xs:element name="measuredPart" type="xs:string"/>\r
+ <xs:element name="dimensionSummary" type="xs:string" />\r
+ <xs:element name="dimensionSubGroupList" type="dimensionSubGroupList"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="dimensionSubGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="dimensionSubGroup" type="dimensionSubGroup" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="dimensionSubGroup">\r
+ <xs:sequence>\r
<xs:element name="dimension" type="xs:string"/>\r
<xs:element name="measuredBy" type="xs:string"/>\r
<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:string"/>\r
+ <xs:element name="valueDate" type="xs:dateTime"/>\r
<xs:element name="valueQualifier" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
import org.collectionspace.services.collectionobject.BriefDescriptionList;
import org.collectionspace.services.collectionobject.CollectionobjectsCommon;
import org.collectionspace.services.collectionobject.domain.naturalhistory.CollectionobjectsNaturalhistory;
-import org.collectionspace.services.collectionobject.ResponsibleDepartmentList;
-import org.collectionspace.services.collectionobject.DimensionGroup;
-import org.collectionspace.services.collectionobject.DimensionList;
+import org.collectionspace.services.collectionobject.DimensionSubGroup;
+import org.collectionspace.services.collectionobject.DimensionSubGroupList;
+import org.collectionspace.services.collectionobject.MeasuredPartGroup;
+import org.collectionspace.services.collectionobject.MeasuredPartGroupList;
import org.collectionspace.services.collectionobject.ObjectNameGroup;
import org.collectionspace.services.collectionobject.ObjectNameList;
import org.collectionspace.services.collectionobject.OtherNumber;
import org.collectionspace.services.collectionobject.OtherNumberList;
+import org.collectionspace.services.collectionobject.ResponsibleDepartmentList;
import org.collectionspace.services.collectionobject.TitleGroup;
import org.collectionspace.services.collectionobject.TitleGroupList;
+import org.collectionspace.services.collectionobject.TitleTranslationSubGroup;
+import org.collectionspace.services.collectionobject.TitleTranslationSubGroupList;
import org.collectionspace.services.common.AbstractCommonListUtils;
import org.collectionspace.services.jaxb.AbstractCommonList;
private final String OBJECT_NAME_VALUE = "an object name";
private final BigInteger AGE_VALUE = new BigInteger("55");
+ private final String MEASURED_PART = "light box frame";
private final BigDecimal DIMENSION_VALUE_LENGTH = new BigDecimal("0.009");
private final BigDecimal DIMENSION_VALUE_WIDTH = new BigDecimal("3087.56");
- private final String UPDATED_MEASURED_PART_VALUE = "updated measured part value";
+ private final String UPDATED_MEASUREMENT_UNIT = "Angstroms";
private final String UTF8_DATA_SAMPLE = "Audiorecording album cover signed by Lech "
+ "Wa" + '\u0142' + '\u0119' + "sa";
// Verify the number and contents of values in repeatable fields,
// as created in the instance record used for testing.
- DimensionList dimensionList = collectionobjectCommon.getDimensions();
- Assert.assertNotNull(dimensionList);
- List<DimensionGroup> dimensionsGroups = dimensionList.getDimensionGroup();
- Assert.assertNotNull(dimensionsGroups);
- Assert.assertTrue(dimensionsGroups.size() > 0);
- Assert.assertNotNull(dimensionsGroups.get(0));
- Assert.assertNotNull(dimensionsGroups.get(0).getMeasuredPart());
-
+ MeasuredPartGroupList measuredPartGroupList = collectionobjectCommon.getMeasuredPartGroupList();
+ Assert.assertNotNull(measuredPartGroupList, "Measured part group list was null");
+ List<MeasuredPartGroup> measuredPartGroups = measuredPartGroupList.getMeasuredPartGroup();
+ Assert.assertNotNull(measuredPartGroups, "Measured part groups were null");
+ Assert.assertTrue(measuredPartGroups.size() > 0, "No measured part groups were returned");
+ MeasuredPartGroup mpGroup = measuredPartGroups.get(0);
+ Assert.assertNotNull(mpGroup.getMeasuredPart(), "Measured part was null");
+ Assert.assertEquals(mpGroup.getMeasuredPart(), MEASURED_PART,
+ "Measured part value returned didn't match expected value");
+
+ DimensionSubGroupList dimensionSubGroupList = mpGroup.getDimensionSubGroupList();
+ Assert.assertNotNull(dimensionSubGroupList, "Dimension subgroup list was null");
+ List<DimensionSubGroup> dimensionSubGroups = dimensionSubGroupList.getDimensionSubGroup();
+ Assert.assertNotNull(dimensionSubGroups, "Dimension subgroups were null");
+ Assert.assertTrue(dimensionSubGroups.size() > 0, "No dimension subgroups were returned");
+ DimensionSubGroup lengthDimension = dimensionSubGroups.get(0);
+ Assert.assertNotNull(lengthDimension, "Length dimension was null");
+ Assert.assertEquals(lengthDimension.getValue(), DIMENSION_VALUE_LENGTH,
+ "Dimension length value returned didn't match expected value");
+
/* No longer part of the "default" domain service tests for the CollectionObject record.
if (logger.isDebugEnabled()) {
logger.debug(testName + ": Reading Natural History part ...");
// Replace the existing value instances in the dimensions repeatable group
// with entirely new value instances, also changing the number of such instances.
- DimensionList dimensionList = collectionObjectCommon.getDimensions();
- Assert.assertNotNull(dimensionList);
- List<DimensionGroup> dimensionGroups = dimensionList.getDimensionGroup();
- Assert.assertNotNull(dimensionGroups);
- int originalDimensionGroupSize = dimensionGroups.size();
- Assert.assertTrue(originalDimensionGroupSize >= 1);
-
- DimensionGroup updatedDimensionGroup = new DimensionGroup();
- updatedDimensionGroup.setMeasuredPart(UPDATED_MEASURED_PART_VALUE);
- dimensionGroups.clear();
- dimensionGroups.add(updatedDimensionGroup);
- int updatedDimensionGroupSize = dimensionGroups.size();
- Assert.assertTrue(updatedDimensionGroupSize >= 1);
- Assert.assertTrue(updatedDimensionGroupSize != originalDimensionGroupSize);
- collectionObjectCommon.setDimensions(dimensionList);
+ MeasuredPartGroupList measuredPartGroupList = collectionObjectCommon.getMeasuredPartGroupList();
+ Assert.assertNotNull(measuredPartGroupList);
+ List<MeasuredPartGroup> measuredPartGroups = measuredPartGroupList.getMeasuredPartGroup();
+ Assert.assertNotNull(measuredPartGroups);
+ Assert.assertTrue(measuredPartGroups.size() > 0);
+ MeasuredPartGroup mpGroup = measuredPartGroups.get(0);
+ Assert.assertNotNull(mpGroup.getMeasuredPart());
+
+ DimensionSubGroupList dimensionSubGroupList = mpGroup.getDimensionSubGroupList();
+ Assert.assertNotNull(dimensionSubGroupList);
+ List<DimensionSubGroup> dimensionSubGroups = dimensionSubGroupList.getDimensionSubGroup();
+ Assert.assertNotNull(dimensionSubGroups);
+ int originalDimensionSubGroupSize = dimensionSubGroups.size();
+ Assert.assertTrue(dimensionSubGroups.size() > 0);
+ dimensionSubGroups.clear();
+
+ DimensionSubGroup heightDimension = new DimensionSubGroup();
+ heightDimension.setDimension("height");
+ heightDimension.setMeasurementUnit(UPDATED_MEASUREMENT_UNIT);
+ dimensionSubGroups.add(heightDimension);
+
+ int updatedDimensionGroupSize = dimensionSubGroups.size();
+ Assert.assertTrue(updatedDimensionGroupSize > 0);
+ Assert.assertTrue(updatedDimensionGroupSize != originalDimensionSubGroupSize);
+
+ collectionObjectCommon.setMeasuredPartGroupList(measuredPartGroupList);
if (logger.isDebugEnabled()) {
logger.debug("sparse update that will be sent in update request:");
objNameGroups.get(0).getObjectName(),
"Data in updated object did not match submitted data.");
- dimensionList = updatedCollectionobjectCommon.getDimensions();
- Assert.assertNotNull(dimensionList);
- dimensionGroups = dimensionList.getDimensionGroup();
- Assert.assertNotNull(dimensionGroups);
- Assert.assertTrue(dimensionGroups.size() == updatedDimensionGroupSize);
- Assert.assertEquals(UPDATED_MEASURED_PART_VALUE,
- dimensionGroups.get(0).getMeasuredPart(),
+ measuredPartGroupList = collectionObjectCommon.getMeasuredPartGroupList();
+ Assert.assertNotNull(measuredPartGroupList);
+ measuredPartGroups = measuredPartGroupList.getMeasuredPartGroup();
+ Assert.assertNotNull(measuredPartGroups);
+ Assert.assertTrue(measuredPartGroups.size() > 0);
+ mpGroup = measuredPartGroups.get(0);
+ Assert.assertNotNull(mpGroup.getMeasuredPart());
+
+ dimensionSubGroupList = mpGroup.getDimensionSubGroupList();
+ Assert.assertNotNull(dimensionSubGroupList);
+ dimensionSubGroups = dimensionSubGroupList.getDimensionSubGroup();
+ Assert.assertNotNull(dimensionSubGroups);
+ Assert.assertTrue(dimensionSubGroups.size() > 0);
+ Assert.assertTrue(dimensionSubGroups.size() == updatedDimensionGroupSize);
+ Assert.assertEquals(UPDATED_MEASUREMENT_UNIT,
+ dimensionSubGroups.get(0).getMeasurementUnit(),
"Data in updated object did not match submitted data.");
}
TitleGroupList titleGroupList = new TitleGroupList();
List<TitleGroup> titleGroups = titleGroupList.getTitleGroup();
+ Assert.assertNotNull(titleGroups);
TitleGroup titleGroup = new TitleGroup();
titleGroup.setTitle("a title");
titleGroups.add(titleGroup);
objNameGroups.add(objectNameGroup);
collectionObject.setObjectNameList(objNameList);
- DimensionList dimensionList = new DimensionList();
- List<DimensionGroup> dimensionGroups = dimensionList.getDimensionGroup();
- DimensionGroup dimensionGroup1 = new DimensionGroup();
- dimensionGroup1.setMeasuredPart("head");
- dimensionGroup1.setDimension("length");
- dimensionGroup1.setValue(DIMENSION_VALUE_LENGTH);
- dimensionGroup1.setMeasurementUnit("cm");
- DimensionGroup dimensionGroup2 = new DimensionGroup();
- dimensionGroup2.setMeasuredPart("leg");
- dimensionGroup2.setDimension("width");
- dimensionGroup2.setValue(DIMENSION_VALUE_WIDTH);
- dimensionGroup2.setMeasurementUnit("m");
- dimensionGroup2.setValueQualifier(""); // test null string
- dimensionGroups.add(dimensionGroup1);
- dimensionGroups.add(dimensionGroup2);
- collectionObject.setDimensions(dimensionList);
+ MeasuredPartGroupList measuredPartGroupList = new MeasuredPartGroupList();
+ List<MeasuredPartGroup> measuredPartGroups = measuredPartGroupList.getMeasuredPartGroup();
+ Assert.assertNotNull(measuredPartGroups, "Measured part groups are null");
+ MeasuredPartGroup measuredPartGroup = new MeasuredPartGroup();
+ measuredPartGroup.setMeasuredPart(MEASURED_PART);
+
+ DimensionSubGroupList dimensionSubGroupList = new DimensionSubGroupList();
+ List<DimensionSubGroup> dimensionSubGroups = dimensionSubGroupList.getDimensionSubGroup();
+ Assert.assertNotNull(dimensionSubGroups, "Dimension subgroups are null");
+
+ DimensionSubGroup lengthDimension = new DimensionSubGroup();
+ lengthDimension.setDimension("length");
+ lengthDimension.setValue(DIMENSION_VALUE_LENGTH);
+ lengthDimension.setMeasurementUnit("cm");
+ dimensionSubGroups.add(lengthDimension);
+
+ DimensionSubGroup widthDimension = new DimensionSubGroup();
+ widthDimension.setDimension("width");
+ widthDimension.setValue(DIMENSION_VALUE_WIDTH);
+ widthDimension.setMeasurementUnit("m");
+ widthDimension.setValueQualifier(""); // test empty string
+ dimensionSubGroups.add(widthDimension);
+
+ measuredPartGroup.setDimensionSubGroupList(dimensionSubGroupList);
+ measuredPartGroups.add(measuredPartGroup);
+ collectionObject.setMeasuredPartGroupList(measuredPartGroupList);
// Repeatable scalar fields
<xs:element name="contentPositions" type="contentPositionList"/>
<xs:element name="contentScripts" type="contentScriptList"/>
<xs:element name="copyNumber" type="xs:string"/>
- <xs:element name="dimensionSummary" type="xs:string"/>
- <xs:element name="dimensions" type="ns:dimensionList"/>
-
- <!-- Remove these six elements when the App/UI layer is -->
- <!-- using the new repeatable 'dimensions' field: -->
- <xs:element name="dimension" type="xs:string"/>
- <xs:element name="dimensionMeasuredPart" type="xs:string"/>
- <xs:element name="dimensionMeasurementUnit" type="xs:string"/>
- <xs:element name="dimensionValue" type="xs:string"/>
- <xs:element name="dimensionValueDate" type="xs:string"/>
- <xs:element name="dimensionValueQualifier" type="xs:string"/>
-
+ <!-- Changed name of next field from dimensions (type="dimensionList") in v1.13 when adding repeatable sub group -->
+ <xs:element name="measuredPartGroupList" type="measuredPartGroupList"/>
<xs:element name="editionNumber" type="xs:string"/>
<xs:element name="forms" type="formList"/>
<xs:element name="contentScript" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
-
- <xs:complexType name="dimensionList">
+
+ <!-- Changed names, as of v1.13: dimensions (type="dimensionList") became measuredPartGroupList, dimensionGroup became measuredPartGroup. -->
+ <xs:complexType name="measuredPartGroupList">
<xs:sequence>
- <xs:element name="dimensionGroup" type="dimensionGroup" minOccurs="0"
+ <xs:element name="measuredPartGroup" type="measuredPartGroup" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
- <xs:complexType name="dimensionGroup">
+ <xs:complexType name="measuredPartGroup">
<xs:sequence>
<xs:element name="measuredPart" type="xs:string"/>
+ <xs:element name="dimensionSummary" type="xs:string" />
+ <xs:element name="dimensionSubGroupList" type="dimensionSubGroupList"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dimensionSubGroupList">
+ <xs:sequence>
+ <xs:element name="dimensionSubGroup" type="dimensionSubGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dimensionSubGroup">
+ <xs:sequence>
<xs:element name="dimension" type="xs:string"/>
<xs:element name="measuredBy" type="xs:string"/>
<xs:element name="measurementUnit" type="xs:string"/>
import java.io.FileInputStream;\r
import java.io.BufferedInputStream;\r
import java.io.IOException;\r
-\r
import java.io.Serializable;\r
+import java.math.BigDecimal;\r
+import java.math.BigInteger;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.List;\r
import org.collectionspace.services.common.ServiceMain;\r
import org.collectionspace.services.common.blob.BlobInput;\r
import org.collectionspace.services.common.context.ServiceContext;\r
+import org.collectionspace.services.common.datetime.GregorianCalendarDateTimeUtils;\r
import org.collectionspace.services.common.document.DocumentUtils;\r
import org.collectionspace.services.common.service.ListResultField;\r
import org.collectionspace.services.common.FileUtils;\r
import org.collectionspace.services.blob.BlobsCommon;\r
-import org.collectionspace.services.blob.DimensionGroup;\r
-import org.collectionspace.services.blob.DimensionGroupList;\r
+import org.collectionspace.services.blob.DimensionSubGroup;\r
+import org.collectionspace.services.blob.DimensionSubGroupList;\r
+import org.collectionspace.services.blob.MeasuredPartGroup;\r
+import org.collectionspace.services.blob.MeasuredPartGroupList;\r
//import org.collectionspace.services.blob.BlobsCommonList;\r
//import org.collectionspace.services.blob.BlobsCommonList.BlobListItem;\r
import org.collectionspace.services.jaxb.AbstractCommonList;\r
return metadataMap;\r
}\r
\r
- static private DimensionGroupList getDimensions(DocumentModel documentModel, Blob nuxeoBlob) {\r
- DimensionGroupList result = null;\r
+ static private MeasuredPartGroupList getDimensions(DocumentModel documentModel, Blob nuxeoBlob) {\r
+ MeasuredPartGroupList result = null;\r
try {\r
ImagingService service = Framework.getService(ImagingService.class); \r
ImageInfo imageInfo = service.getImageInfo(nuxeoBlob);\r
Map<String, Object> metadataMap = getMetadata(nuxeoBlob);\r
\r
if (imageInfo != null) {\r
- DimensionGroupList dimensionGroupList = new DimensionGroupList();\r
- List<DimensionGroup> dgList = dimensionGroupList.getDimensionGroup();\r
+ MeasuredPartGroupList measuredPartGroupList = new MeasuredPartGroupList();\r
+ List<MeasuredPartGroup> measuredPartList = measuredPartGroupList.getMeasuredPartGroup();\r
+ \r
+ MeasuredPartGroup mpGroup = new MeasuredPartGroup();\r
+ mpGroup.setMeasuredPart(PART_IMAGE);\r
+ \r
+ DimensionSubGroupList dimensionSubGroupList = mpGroup.getDimensionSubGroupList();\r
+ List<DimensionSubGroup> dgList = dimensionSubGroupList.getDimensionSubGroup();\r
+ \r
+ String valueDate = GregorianCalendarDateTimeUtils.timestampUTC(); \r
+\r
//\r
// Set the width\r
//\r
- DimensionGroup widthDimension = new DimensionGroup();\r
- widthDimension.setMeasuredPart(PART_IMAGE);\r
+ DimensionSubGroup widthDimension = new DimensionSubGroup();\r
widthDimension.setDimension(WIDTH);\r
widthDimension.setMeasurementUnit(UNIT_PIXELS);\r
- widthDimension.setValue(Integer.toString(imageInfo.getWidth()));\r
+ widthDimension.setValue(intToBigDecimal(imageInfo.getWidth()));\r
+ widthDimension.setValueDate(valueDate);\r
dgList.add(widthDimension);\r
//\r
// Set the height\r
//\r
- DimensionGroup heightDimension = new DimensionGroup();\r
- heightDimension.setMeasuredPart(PART_IMAGE);\r
+ DimensionSubGroup heightDimension = new DimensionSubGroup();\r
heightDimension.setDimension(HEIGHT);\r
heightDimension.setMeasurementUnit(UNIT_PIXELS);\r
- heightDimension.setValue(Integer.toString(imageInfo.getHeight()));\r
+ heightDimension.setValue(intToBigDecimal(imageInfo.getHeight()));\r
+ heightDimension.setValueDate(valueDate);\r
dgList.add(heightDimension);\r
//\r
// Set the depth\r
//\r
- DimensionGroup depthDimension = new DimensionGroup();\r
- depthDimension.setMeasuredPart(PART_IMAGE);\r
+ DimensionSubGroup depthDimension = new DimensionSubGroup();\r
depthDimension.setDimension(DEPTH);\r
depthDimension.setMeasurementUnit(UNIT_BITS);\r
- depthDimension.setValue(Integer.toString(imageInfo.getDepth()));\r
+ depthDimension.setValue(intToBigDecimal(imageInfo.getDepth()));\r
+ depthDimension.setValueDate(valueDate);\r
dgList.add(depthDimension);\r
//\r
// Now set out result\r
//\r
- result = dimensionGroupList;\r
+ measuredPartList.add(mpGroup);\r
+ result = measuredPartGroupList;\r
} else {\r
if (logger.isWarnEnabled() == true) {\r
logger.warn("Could not synthesize a dimension list of the blob: " + documentModel.getName());\r
\r
return result;\r
}\r
+ \r
+ // FIXME: Add error checking here, as none of these calls return an Exception\r
+ static private BigDecimal intToBigDecimal(int i) {\r
+ BigInteger bigint = BigInteger.valueOf(i);\r
+ BigDecimal bigdec = new BigDecimal(bigint);\r
+ return bigdec;\r
+ }\r
\r
static private BlobsCommon createBlobsCommon(DocumentModel documentModel, Blob nuxeoBlob) {\r
BlobsCommon result = new BlobsCommon();\r
result.setName(nuxeoBlob.getFilename());\r
result.setLength(Long.toString(nuxeoBlob.getLength()));\r
result.setRepositoryId(documentModel.getId());\r
- DimensionGroupList dimensionGroupList = getDimensions(documentModel, nuxeoBlob);\r
- if (dimensionGroupList != null) {\r
- result.setDimensionGroupList(dimensionGroupList);\r
+ MeasuredPartGroupList measuredPartGroupList = getDimensions(documentModel, nuxeoBlob);\r
+ if (measuredPartGroupList != null) {\r
+ result.setMeasuredPartGroupList(measuredPartGroupList);\r
}\r
}\r
\r
<xs:element name="name" type="xs:string" />
<xs:element name="length" type="xs:string" />
<xs:element name="digest" type="xs:string" />
- <xs:element name="dimensionGroupList" type="dimensionGroupList"/>
+ <xs:element name="measuredPartGroupList" type="measuredPartGroupList"/>
<xs:element name="uri" type="xs:string" />
<xs:element name="repositoryId" type="xs:string" />
- </xs:sequence>
+ </xs:sequence>
</xs:complexType>
</xs:element>
- <xs:complexType name="dimensionGroupList">
+ <xs:complexType name="measuredPartGroupList">
<xs:sequence>
- <xs:element name="dimensionGroup" type="dimensionGroup" minOccurs="0"
- maxOccurs="unbounded"/>
+ <xs:element name="measuredPartGroup" type="measuredPartGroup" minOccurs="0"
+ maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
-
- <xs:complexType name="dimensionGroup"> <!-- //FIXME: The "dimensionGroup" type should be declared in one place since other services use it -->
+ <xs:complexType name="measuredPartGroup">
<xs:sequence>
<xs:element name="measuredPart" type="xs:string"/>
+ <!-- Next field added to group in v1.13 -->
+ <xs:element name="dimensionSummary" type="xs:string"/>
+ <xs:element name="dimensionSubGroupList" type="dimensionSubGroupList"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dimensionSubGroupList">
+ <xs:sequence>
+ <xs:element name="dimensionSubGroup" type="dimensionSubGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dimensionSubGroup">
+ <xs:sequence>
<xs:element name="dimension" type="xs:string"/>
<xs:element name="measuredBy" type="xs:string"/>
<xs:element name="measurementUnit" type="xs:string"/>
<xs:element name="measurementMethod" type="xs:string"/>
- <xs:element name="value" type="xs:string"/>
+ <xs:element name="value" type="xs:decimal"/>
<xs:element name="valueDate" type="xs:string"/>
<xs:element name="valueQualifier" type="xs:string"/>
</xs:sequence>
<xs:element name="dateCreated" type="xs:string"/>\r
<xs:element name="dateModified" type="xs:string"/>\r
<xs:element name="description" type="xs:string"/>\r
- <xs:element name="dimensionSummary" type="xs:string"/>\r
- <xs:element name="dimensionGroupList" type="dimensionGroupList"/>\r
+\r
+ <!-- Changed name of next field from dimensionGroupList (type="dimensionGroupList") in v1.13 when adding repeatable sub group -->\r
+ <xs:element name="measuredPartGroupList" type="measuredPartGroupList"/>\r
<xs:element name="filename" type="xs:string"/>\r
<xs:element name="format" type="xs:string"/>\r
<xs:element name="identificationNumber" type="xs:string"/>\r
<xs:element name="uri" type="xs:string" />\r
<xs:element name="blobCsid" type="xs:string" />\r
\r
- <xs:complexType name="dimensionGroupList">\r
+ <!-- Changed names, as of v1.13: dimensionGroupList became measuredPartGroupList, dimensionGroup became measuredPartGroup. -->\r
+ <xs:complexType name="measuredPartGroupList">\r
<xs:sequence>\r
- <xs:element name="dimensionGroup" type="dimensionGroup" minOccurs="0"\r
+ <xs:element name="measuredPartGroup" type="measuredPartGroup" minOccurs="0"\r
maxOccurs="unbounded"/>\r
</xs:sequence>\r
</xs:complexType>\r
- <xs:complexType name="dimensionGroup">\r
+ <xs:complexType name="measuredPartGroup">\r
<xs:sequence>\r
<xs:element name="measuredPart" type="xs:string"/>\r
+ <xs:element name="dimensionSummary" type="xs:string"/>\r
+ <xs:element name="dimensionSubGroupList" type="dimensionSubGroupList"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="dimensionSubGroupList">\r
+ <xs:sequence>\r
+ <xs:element name="dimensionSubGroup" type="dimensionSubGroup" minOccurs="0" maxOccurs="unbounded" />\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+\r
+ <xs:complexType name="dimensionSubGroup">\r
+ <xs:sequence>\r
<xs:element name="dimension" type="xs:string"/>\r
<xs:element name="measuredBy" type="xs:string"/>\r
<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:string"/>\r
+ <xs:element name="valueDate" type="xs:dateTime"/>\r
<xs:element name="valueQualifier" type="xs:string"/>\r
</xs:sequence>\r
</xs:complexType>\r
<xs:element name="dateCreated" type="xs:string"/>
<xs:element name="dateModified" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
- <xs:element name="dimensionSummary" type="xs:string"/>
- <xs:element name="dimensionGroupList" type="dimensionGroupList"/>
+ <!-- Changed name of next field from dimensionGroupList (type="dimensionGroupList") in v1.13 when adding repeatable sub group -->
+ <xs:element name="measuredPartGroupList" type="measuredPartGroupList"/>
<xs:element name="filename" type="xs:string"/>
<xs:element name="format" type="xs:string"/>
<xs:element name="identificationNumber" type="xs:string"/>
<xs:element name="publisher" type="xs:string"/>
<xs:element name="relationList" type="relationList"/>
<xs:element name="rightsHolder" type="xs:string"/>
- <xs:element name="source" type="xs:string"/>
- <xs:element name="sourceUrl" type="xs:string"/>
+ <xs:element name="source" type="xs:string"/>
+ <xs:element name="sourceUrl" type="xs:string"/>
<xs:element name="subjectList" type="subjectList"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="typeList" type="typeList"/>
</xs:sequence>
</xs:complexType>
- <xs:complexType name="dimensionGroupList">
+ <!-- Changed names, as of v1.13: dimensionGroupList became measuredPartGroupList, dimensionGroup became measuredPartGroup. -->
+ <xs:complexType name="measuredPartGroupList">
<xs:sequence>
- <xs:element name="dimensionGroup" type="dimensionGroup" minOccurs="0"
+ <xs:element name="measuredPartGroup" type="measuredPartGroup" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
- <xs:complexType name="dimensionGroup">
+ <xs:complexType name="measuredPartGroup">
<xs:sequence>
<xs:element name="measuredPart" type="xs:string"/>
+ <xs:element name="dimensionSummary" type="xs:string"/>
+ <xs:element name="dimensionSubGroupList" type="dimensionSubGroupList"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dimensionSubGroupList">
+ <xs:sequence>
+ <xs:element name="dimensionSubGroup" type="dimensionSubGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="dimensionSubGroup">
+ <xs:sequence>
<xs:element name="dimension" type="xs:string"/>
<xs:element name="measuredBy" type="xs:string"/>
<xs:element name="measurementUnit" type="xs:string"/>