*/
package org.collectionspace.services.acquisition.nuxeo;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.collectionspace.services.AcquisitionListItemJAXBSchema;
-import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.acquisition.AcquisitionsCommon;
-import org.collectionspace.services.acquisition.AcquisitionsCommonList;
-import org.collectionspace.services.acquisition.AcquisitionsCommonList.AcquisitionListItem;
-import org.collectionspace.services.acquisition.AcquisitionSourceList;
-import org.collectionspace.services.acquisition.OwnerList;
-import org.collectionspace.services.common.document.DocumentHandler.Action;
import org.collectionspace.services.jaxb.AbstractCommonList;
-import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl;
-import org.collectionspace.services.nuxeo.util.NuxeoUtils;
-import org.nuxeo.ecm.core.api.DocumentModel;
-import org.nuxeo.ecm.core.api.DocumentModelList;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.collectionspace.services.nuxeo.client.java.DocHandlerBase;
-/**
- * AcquisitionDocumentModelHandler
- *
- * $LastChangedRevision: $
- * $LastChangedDate: $
+/** AcquisitionDocumentModelHandler
+ * $LastChangedRevision: $
+ * $LastChangedDate: $
*/
public class AcquisitionDocumentModelHandler
- extends RemoteDocumentModelHandlerImpl<AcquisitionsCommon, AcquisitionsCommonList> {
-
- private final Logger logger = LoggerFactory.getLogger(AcquisitionDocumentModelHandler.class);
- /**
- * acquisition is used to stash JAXB object to use when handle is called
- * for Action.CREATE, Action.UPDATE or Action.GET
- */
- private AcquisitionsCommon acquisition;
- /**
- * acquisitionList is stashed when handle is called
- * for ACTION.GET_ALL
- */
- private AcquisitionsCommonList acquisitionList;
-
-
- /**
- * getCommonPart get associated acquisition
- * @return
- */
- @Override
- public AcquisitionsCommon getCommonPart() {
- return acquisition;
- }
-
- /**
- * setCommonPart set associated acquisition
- * @param acquisition
- */
- @Override
- public void setCommonPart(AcquisitionsCommon acquisition) {
- this.acquisition = acquisition;
- }
-
- /**
- * getAcquisitionList get associated acquisition (for index/GET_ALL)
- * @return
- */
- @Override
- public AcquisitionsCommonList getCommonPartList() {
- return acquisitionList;
- }
-
- @Override
- public void setCommonPartList(AcquisitionsCommonList acquisitionList) {
- this.acquisitionList = acquisitionList;
- }
-
- @Override
- public AcquisitionsCommon extractCommonPart(DocumentWrapper<DocumentModel> wrapDoc)
- throws Exception {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public void fillCommonPart(AcquisitionsCommon acquisitionObject, DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
- throw new UnsupportedOperationException();
- }
-
- @Override
- public AcquisitionsCommonList extractCommonPartList(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception {
- AcquisitionsCommonList coList = this.extractPagingInfo(new AcquisitionsCommonList(), wrapDoc);
- AbstractCommonList commonList = (AbstractCommonList) coList;
- commonList.setFieldsReturned("acquisitionReferenceNumber|acquisitionSources|owners|uri|csid");
- List<AcquisitionsCommonList.AcquisitionListItem> list = coList.getAcquisitionListItem();
- Iterator<DocumentModel> iter = wrapDoc.getWrappedObject().iterator();
- String label = getServiceContext().getCommonPartLabel();
- while (iter.hasNext()) {
- DocumentModel docModel = iter.next();
- AcquisitionListItem listItem = new AcquisitionListItem();
-
- listItem.setAcquisitionReferenceNumber((String) docModel.getProperty(label,
- AcquisitionListItemJAXBSchema.ACQUISITION_REFERENCE_NUMBER));
-
- List<Object> acquisitionSources =(List<Object>) docModel.getProperty(label,AcquisitionListItemJAXBSchema.ACQUISITION_SOURCES);
- String primaryAcquisitionSource = primaryValueFromMultivalue(acquisitionSources,AcquisitionListItemJAXBSchema.ACQUISITION_SOURCE);
- listItem.setAcquisitionSource(primaryAcquisitionSource);
-
- List<Object> owners =(List<Object>) docModel.getProperty(label,AcquisitionListItemJAXBSchema.OWNERS);
- String primaryOwner = primaryValueFromMultivalue(owners,AcquisitionListItemJAXBSchema.OWNER);
- listItem.setOwner(primaryOwner);
-
- //need fully qualified context for URI
- String id = NuxeoUtils.extractId(docModel.getPathAsString());
- listItem.setUri(getServiceContextPath() + id);
- listItem.setCsid(id);
- list.add(listItem);
- }
-
- return coList;
- }
-
- @Override
- public void fillAllParts(DocumentWrapper<DocumentModel> wrapDoc, Action action) throws Exception {
-
- super.fillAllParts(wrapDoc, action);
- fillDublinCoreObject(wrapDoc); //dublincore might not be needed in future
- }
-
- private void fillDublinCoreObject(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
- DocumentModel docModel = wrapDoc.getWrappedObject();
- //FIXME property setter should be dynamically set using schema inspection
- //so it does not require hard coding
- // a default title for the Dublin Core schema
- docModel.setPropertyValue("dublincore:title", AcquisitionConstants.NUXEO_DC_TITLE);
- }
-
-
- /**
- * getQProperty converts the given property to qualified schema property
- * @param prop
- * @return
- */
- @Override
- public String getQProperty(String prop) {
- return AcquisitionConstants.NUXEO_SCHEMA_NAME + ":" + prop;
+ extends DocHandlerBase<AcquisitionsCommon, AbstractCommonList> {
+
+ private static DocHandlerBase.CommonListReflection clr;
+ static {
+ clr = new DocHandlerBase.CommonListReflection();
+ clr.NuxeoSchemaName= "acquisition";
+ clr.DublinCoreTitle = "";//"CollectionSpace-Acquisition";
+ clr.SummaryFields = "acquisitionReferenceNumber|acquisitionSources|owners|uri|csid";
+ clr.AbstractCommonListClassname = "org.collectionspace.services.acquisition.AcquisitionsCommonList";
+ clr.CommonListItemClassname = "org.collectionspace.services.acquisition.AcquisitionsCommonList$AcquisitionListItem";
+ clr.ListItemMethodName = "getAcquisitionListItem";
+ //ListItemsArray array elements: SETTER=0, ELEMENT=1, CONTAINER=2, SUBELEMENT=3;
+ clr.ListItemsArray = new String[][] { {"setAcquisitionReferenceNumber","acquisitionReferenceNumber","",""},
+ {"setAcquisitionSource","acquisitionSources","acquisitionSources","acquisitionSource"},
+ {"setOwner","owner","owners","owner"}
+ };
+ }
+ public DocHandlerBase.CommonListReflection getCommonListReflection(){
+ return clr;
}
- // The following are all private in DocumentUtils;
- // might be moved to a common class.
- private static String NAME_VALUE_SEPARATOR = "|";
-
- private static class NameValue {
- NameValue() {
- // default scoped constructor to remove "synthetic accessor" warning
- }
- String name;
- String value;
- };
-
}