]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
2c15d6f593b684c405a2b7a51d706774de544632
[tmp/jakarta-migration.git] /
1 /**
2  *  This document is a part of the source code and related artifacts
3  *  for CollectionSpace, an open source collections management system
4  *  for museums and related institutions:
5
6  *  http://www.collectionspace.org
7  *  http://wiki.collectionspace.org
8
9  *  Copyright 2009 University of California at Berkeley
10
11  *  Licensed under the Educational Community License (ECL), Version 2.0.
12  *  You may not use this file except in compliance with this License.
13
14  *  You may obtain a copy of the ECL 2.0 License at
15
16  *  https://source.collectionspace.org/collection-space/LICENSE.txt
17
18  *  Unless required by applicable law or agreed to in writing, software
19  *  distributed under the License is distributed on an "AS IS" BASIS,
20  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  *  See the License for the specific language governing permissions and
22  *  limitations under the License.
23  */
24 package org.collectionspace.services.acquisition.nuxeo;
25
26 import java.util.Iterator;
27 import java.util.List;
28
29 import org.collectionspace.services.AcquisitionJAXBSchema;
30 import org.collectionspace.services.AcquisitionListItemJAXBSchema;
31 import org.collectionspace.services.common.document.DocumentWrapper;
32 import org.collectionspace.services.acquisition.AcquisitionsCommon;
33 import org.collectionspace.services.acquisition.AcquisitionsCommonList;
34 import org.collectionspace.services.acquisition.AcquisitionsCommonList.AcquisitionListItem;
35
36 import org.collectionspace.services.common.document.DocumentHandler.Action;
37 import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandler;
38 import org.collectionspace.services.nuxeo.util.NuxeoUtils;
39 import org.nuxeo.ecm.core.api.DocumentModel;
40 import org.nuxeo.ecm.core.api.DocumentModelList;
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
43
44 /**
45  * AcquisitionDocumentModelHandler
46  *
47  * $LastChangedRevision: $
48  * $LastChangedDate: $
49  */
50 public class AcquisitionDocumentModelHandler
51         extends RemoteDocumentModelHandler<AcquisitionsCommon, AcquisitionsCommonList> {
52
53     private final Logger logger = LoggerFactory.getLogger(AcquisitionDocumentModelHandler.class);
54     /**
55      * acquisition is used to stash JAXB object to use when handle is called
56      * for Action.CREATE, Action.UPDATE or Action.GET
57      */
58     private AcquisitionsCommon acquisition;
59     /**
60      * acquisitionList is stashed when handle is called
61      * for ACTION.GET_ALL
62      */
63     private AcquisitionsCommonList acquisitionList;
64
65     @Override
66     public void prepare(Action action) throws Exception {
67         //no specific action needed
68     }
69
70     /**
71      * getCommonPart get associated acquisition
72      * @return
73      */
74     @Override
75     public AcquisitionsCommon getCommonPart() {
76         return acquisition;
77     }
78
79     /**
80      * setCommonPart set associated acquisition
81      * @param acquisition
82      */
83     @Override
84     public void setCommonPart(AcquisitionsCommon acquisition) {
85         this.acquisition = acquisition;
86     }
87
88     /**
89      * getAcquisitionList get associated acquisition (for index/GET_ALL)
90      * @return
91      */
92     @Override
93     public AcquisitionsCommonList getCommonPartList() {
94         return acquisitionList;
95     }
96
97     @Override
98     public void setCommonPartList(AcquisitionsCommonList acquisitionList) {
99         this.acquisitionList = acquisitionList;
100     }
101
102     @Override
103     public AcquisitionsCommon extractCommonPart(DocumentWrapper<DocumentModel> wrapDoc)
104             throws Exception {
105         throw new UnsupportedOperationException();
106     }
107
108     @Override
109     public void fillCommonPart(AcquisitionsCommon acquisitionObject, DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
110         throw new UnsupportedOperationException();
111     }
112
113     @Override
114     public AcquisitionsCommonList extractCommonPartList(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception {
115         DocumentModelList docList = wrapDoc.getWrappedObject();
116         AcquisitionsCommonList coList = new AcquisitionsCommonList();
117         List<AcquisitionsCommonList.AcquisitionListItem> list = coList.getAcquisitionListItem();
118
119         //FIXME: iterating over a long list of documents is not a long term
120         //strategy...need to change to more efficient iterating in future
121         Iterator<DocumentModel> iter = docList.iterator();
122         while (iter.hasNext()) {
123             DocumentModel docModel = iter.next();
124             AcquisitionListItem listItem = new AcquisitionListItem();
125             listItem.setAcquisitionReferenceNumber((String) docModel.getProperty(getServiceContext().getCommonPartLabel(),
126                     AcquisitionListItemJAXBSchema.ACQUISITION_REFERENCE_NUMBER));
127             //need fully qualified context for URI
128             String id = NuxeoUtils.extractId(docModel.getPathAsString());
129             listItem.setUri(getServiceContextPath() + id);
130             listItem.setCsid(id);
131             list.add(listItem);
132         }
133
134         return coList;
135     }
136
137     @Override
138     public void fillAllParts(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
139
140         super.fillAllParts(wrapDoc);
141         fillDublinCoreObject(wrapDoc); //dublincore might not be needed in future
142     }
143
144     private void fillDublinCoreObject(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
145         DocumentModel docModel = wrapDoc.getWrappedObject();
146         //FIXME property setter should be dynamically set using schema inspection
147         //so it does not require hard coding
148         // a default title for the Dublin Core schema
149         docModel.setPropertyValue("dublincore:title", AcquisitionConstants.NUXEO_DC_TITLE);
150     }
151
152
153     /**
154      * getQProperty converts the given property to qualified schema property
155      * @param prop
156      * @return
157      */
158     @Override
159     public String getQProperty(String prop) {
160         return AcquisitionConstants.NUXEO_SCHEMA_NAME + ":" + prop;
161     }
162 }
163