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:
6 * http://www.collectionspace.org
7 * http://wiki.collectionspace.org
9 * Copyright 2009 University of California at Berkeley
11 * Licensed under the Educational Community License (ECL), Version 2.0.
12 * You may not use this file except in compliance with this License.
14 * You may obtain a copy of the ECL 2.0 License at
16 * https://source.collectionspace.org/collection-space/LICENSE.txt
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.
24 package org.collectionspace.services.nuxeo.client.java;
26 import java.util.List;
28 import org.collectionspace.services.common.authorityref.AuthorityRefList;
29 import org.collectionspace.services.common.context.ServiceContext;
30 import org.collectionspace.services.common.document.AbstractMultipartDocumentHandlerImpl;
31 import org.collectionspace.services.common.document.DocumentFilter;
32 import org.collectionspace.services.common.document.DocumentWrapper;
33 import org.collectionspace.services.common.document.DocumentHandler.Action;
34 import org.collectionspace.services.nuxeo.client.*;
35 import org.collectionspace.services.common.profile.Profiler;
37 import org.nuxeo.ecm.core.api.DocumentModel;
38 import org.nuxeo.ecm.core.api.DocumentModelList;
39 import org.nuxeo.ecm.core.api.model.PropertyException;
40 import org.nuxeo.ecm.core.api.repository.RepositoryInstance;
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
45 * DocumentModelHandler is a base abstract Nuxeo document handler
46 * using Nuxeo Java Remote APIs for CollectionSpace services
48 * $LastChangedRevision: $
51 public abstract class DocumentModelHandler<T, TL>
52 extends AbstractMultipartDocumentHandlerImpl<T, TL, DocumentModel, DocumentModelList> {
54 private final Logger logger = LoggerFactory.getLogger(DocumentModelHandler.class);
55 private RepositoryInstance repositorySession;
56 //key=schema, value=documentpart
58 public final static String COLLECTIONSPACE_CORE_SCHEMA = "collectionspace_core";
59 public final static String COLLECTIONSPACE_CORE_TENANTID = "tenantId";
60 public final static String COLLECTIONSPACE_CORE_CREATED_AT = "createdAt";
61 public final static String COLLECTIONSPACE_CORE_UPDATED_AT = "updatedAt";
64 * getRepositorySession returns Nuxeo Repository Session
67 public RepositoryInstance getRepositorySession() {
68 return repositorySession;
72 * setRepositorySession sets repository session
75 public void setRepositorySession(RepositoryInstance repoSession) {
76 this.repositorySession = repoSession;
80 public void handleCreate(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
81 // TODO for sub-docs - check to see if the current service context is a multipart input,
82 // OR a docfragment, and call a variant to fill the DocModel.
83 fillAllParts(wrapDoc, Action.CREATE);
86 // TODO for sub-docs - Add completeCreate in which we look for set-aside doc fragments
87 // and create the subitems. We will create service contexts with the doc fragments
92 public void handleUpdate(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
93 // TODO for sub-docs - check to see if the current service context is a multipart input,
94 // OR a docfragment, and call a variant to fill the DocModel.
95 fillAllParts(wrapDoc, Action.UPDATE);
99 public void handleGet(DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
100 extractAllParts(wrapDoc);
104 public void handleGetAll(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception {
105 Profiler profiler = new Profiler(this, 2);
107 setCommonPartList(extractCommonPartList(wrapDoc));
112 public abstract void completeUpdate(DocumentWrapper<DocumentModel> wrapDoc) throws Exception;
115 public abstract void extractAllParts(DocumentWrapper<DocumentModel> wrapDoc) throws Exception;
118 public abstract T extractCommonPart(DocumentWrapper<DocumentModel> wrapDoc) throws Exception;
121 public abstract void fillAllParts(DocumentWrapper<DocumentModel> wrapDoc, Action action) throws Exception;
124 public abstract void fillCommonPart(T obj, DocumentWrapper<DocumentModel> wrapDoc) throws Exception;
127 public abstract TL extractCommonPartList(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception;
130 public abstract T getCommonPart();
133 public abstract void setCommonPart(T obj);
136 public abstract TL getCommonPartList();
139 public abstract void setCommonPartList(TL obj);
142 public DocumentFilter createDocumentFilter() {
143 DocumentFilter filter = new NuxeoDocumentFilter(this.getServiceContext());
148 * Gets the authority refs.
150 * @param docWrapper the doc wrapper
151 * @param authRefFields the auth ref fields
152 * @return the authority refs
153 * @throws PropertyException the property exception
155 abstract public AuthorityRefList getAuthorityRefs(
156 DocumentWrapper<DocumentModel> docWrapper,
157 List<String> authRefFields) throws PropertyException;