]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
c178e25027df43a4e585b328dc73e096efbe5ebf
[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.common.repository.DocumentWrapper;
31 import org.collectionspace.services.acquisition.AcquisitionsCommon;
32 import org.collectionspace.services.acquisition.AcquisitionsCommonList;
33 import org.collectionspace.services.acquisition.AcquisitionsCommonList.AcquisitionListItem;
34
35 import org.collectionspace.services.common.repository.DocumentHandler.Action;
36 import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandler;
37 import org.nuxeo.ecm.core.api.DocumentModel;
38 import org.nuxeo.ecm.core.api.DocumentModelList;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41
42 /**
43  * AcquisitionDocumentModelHandler
44  *
45  * $LastChangedRevision: $
46  * $LastChangedDate: $
47  */
48 public class AcquisitionDocumentModelHandler
49         extends RemoteDocumentModelHandler<AcquisitionsCommon, AcquisitionsCommonList> {
50
51     private final Logger logger = LoggerFactory.getLogger(AcquisitionDocumentModelHandler.class);
52     /**
53      * acquisition is used to stash JAXB object to use when handle is called
54      * for Action.CREATE, Action.UPDATE or Action.GET
55      */
56     private AcquisitionsCommon acquisition;
57     /**
58      * acquisitionList is stashed when handle is called
59      * for ACTION.GET_ALL
60      */
61     private AcquisitionsCommonList acquisitionList;
62
63     @Override
64     public void prepare(Action action) throws Exception {
65         //no specific action needed
66     }
67
68     /**
69      * getCommonPart get associated acquisition
70      * @return
71      */
72     @Override
73     public AcquisitionsCommon getCommonPart() {
74         return acquisition;
75     }
76
77     /**
78      * setCommonPart set associated acquisition
79      * @param acquisition
80      */
81     @Override
82     public void setCommonPart(AcquisitionsCommon acquisition) {
83         this.acquisition = acquisition;
84     }
85
86     /**
87      * getAcquisitionList get associated acquisition (for index/GET_ALL)
88      * @return
89      */
90     @Override
91     public AcquisitionsCommonList getCommonPartList() {
92         return acquisitionList;
93     }
94
95     @Override
96     public void setCommonPartList(AcquisitionsCommonList acquisitionList) {
97         this.acquisitionList = acquisitionList;
98     }
99
100     @Override
101     public AcquisitionsCommon extractCommonPart(DocumentWrapper wrapDoc)
102             throws Exception {
103         throw new UnsupportedOperationException();
104     }
105
106     @Override
107     public void fillCommonPart(AcquisitionsCommon acquisitionObject, DocumentWrapper wrapDoc) throws Exception {
108         throw new UnsupportedOperationException();
109     }
110
111     @Override
112     public AcquisitionsCommonList extractCommonPartList(DocumentWrapper wrapDoc) throws Exception {
113         DocumentModelList docList = (DocumentModelList) wrapDoc.getWrappedObject();
114
115         AcquisitionsCommonList coList = new AcquisitionsCommonList();
116         List<AcquisitionsCommonList.AcquisitionListItem> list = coList.getAcquisitionListItem();
117
118         //FIXME: iterating over a long list of documents is not a long term
119         //strategy...need to change to more efficient iterating in future
120         Iterator<DocumentModel> iter = docList.iterator();
121         while(iter.hasNext()){
122             DocumentModel docModel = iter.next();
123             AcquisitionListItem listItem = new AcquisitionListItem();
124             listItem.setAccessionDate((String) docModel.getProperty(getServiceContext().getCommonPartLabel(),
125                     AcquisitionJAXBSchema.ACCESSIONDATE));
126             //need fully qualified context for URI
127             String id = docModel.getId();
128             listItem.setUri(getServiceContextPath() + id);
129             listItem.setCsid(id);
130             list.add(listItem);
131         }
132
133         return coList;
134     }
135
136     @Override
137     public void fillAllParts(DocumentWrapper wrapDoc) throws Exception {
138
139         super.fillAllParts(wrapDoc);
140         fillDublinCoreObject(wrapDoc); //dublincore might not be needed in future
141     }
142
143     private void fillDublinCoreObject(DocumentWrapper wrapDoc) throws Exception {
144         DocumentModel docModel = (DocumentModel) wrapDoc.getWrappedObject();
145         //FIXME property setter should be dynamically set using schema inspection
146         //so it does not require hard coding
147         // a default title for the Dublin Core schema
148         docModel.setPropertyValue("dublincore:title", AcquisitionConstants.NUXEO_DC_TITLE);
149     }
150
151
152     /* (non-Javadoc)
153      * @see org.collectionspace.services.nuxeo.client.java.DocumentModelHandler#getDocumentType()
154      */
155     public String getDocumentType() {
156         return AcquisitionConstants.NUXEO_DOCTYPE;
157     }
158
159     /**
160      * getQProperty converts the given property to qualified schema property
161      * @param prop
162      * @return
163      */
164     @Override
165     public String getQProperty(String prop) {
166         return AcquisitionConstants.NUXEO_SCHEMA_NAME + ":" + prop;
167     }
168 }
169