]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-3332
authorLaramie Crocker <laramie@berkeley.edu>
Wed, 15 Dec 2010 21:10:08 +0000 (21:10 +0000)
committerLaramie Crocker <laramie@berkeley.edu>
Wed, 15 Dec 2010 21:10:08 +0000 (21:10 +0000)
services/acquisition/service/src/main/java/org/collectionspace/services/acquisition/nuxeo/AcquisitionDocumentModelHandler.java

index 6267b2c72b833534574a97ed517d498782f67f7f..c8e5cde83762a4ba487f5585f4bb410594e3bc05 100644 (file)
  */
 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;
-    };
-
 }