]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
af72072b32f95ab944460dd13ff927092e7988c6
[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 Regents of the University of California
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.contact.nuxeo;
25
26 import java.util.Iterator;
27 import java.util.List;
28
29 import org.collectionspace.services.contact.ContactJAXBSchema;
30 import org.collectionspace.services.common.document.DocumentHandler.Action;
31 import org.collectionspace.services.common.document.DocumentWrapper;
32 import org.collectionspace.services.contact.ContactsCommon;
33 import org.collectionspace.services.contact.ContactsCommonList;
34 import org.collectionspace.services.contact.ContactsCommonList.ContactListItem;
35
36 import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl;
37 import org.collectionspace.services.nuxeo.util.NuxeoUtils;
38 import org.nuxeo.ecm.core.api.DocumentModel;
39 import org.nuxeo.ecm.core.api.DocumentModelList;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42
43 /**
44  * ContactDocumentModelHandler
45  *
46  * $LastChangedRevision: $
47  * $LastChangedDate: $
48  */
49 public class ContactDocumentModelHandler
50         extends RemoteDocumentModelHandlerImpl<ContactsCommon, ContactsCommonList> {
51
52     private final Logger logger = LoggerFactory.getLogger(ContactDocumentModelHandler.class);
53     /**
54      * contact is used to stash JAXB object to use when handle is called
55      * for Action.CREATE, Action.UPDATE or Action.GET
56      */
57     private ContactsCommon contact;
58     /**
59      * contactList is stashed when handle is called
60      * for ACTION.GET_ALL
61      */
62     private ContactsCommonList contactList;
63
64     private String inAuthority;
65
66     public String getInAuthority() {
67         return inAuthority;
68     }
69
70     public void setInAuthority(String inAuthority) {
71         this.inAuthority = inAuthority;
72     }
73
74     private String inItem;
75
76     public String getInItem() {
77         return inItem;
78     }
79
80     public void setInItem(String inItem) {
81         this.inItem = inItem;
82     }
83
84     /**
85      * getCommonPart get associated contact
86      * @return
87      */
88     @Override
89     public ContactsCommon getCommonPart() {
90         return contact;
91     }
92
93     /**
94      * setCommonPart set associated contact
95      * @param contact
96      */
97     @Override
98     public void setCommonPart(ContactsCommon contact) {
99         this.contact = contact;
100     }
101
102     /**
103      * getCommonPartList get associated contact (for index/GET_ALL)
104      * @return
105      */
106     @Override
107     public ContactsCommonList getCommonPartList() {
108         return contactList;
109     }
110
111     @Override
112     public void setCommonPartList(ContactsCommonList contactList) {
113         this.contactList = contactList;
114     }
115
116     @Override
117     public ContactsCommon extractCommonPart(DocumentWrapper<DocumentModel> wrapDoc)
118             throws Exception {
119         throw new UnsupportedOperationException();
120     }
121
122     @Override
123     public void fillCommonPart(ContactsCommon contactObject, DocumentWrapper<DocumentModel> wrapDoc) throws Exception {
124         throw new UnsupportedOperationException();
125     }
126
127     @Override
128     public ContactsCommonList extractCommonPartList(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception {
129         DocumentModelList docList = wrapDoc.getWrappedObject();
130
131         ContactsCommonList coList = new ContactsCommonList();
132         List<ContactsCommonList.ContactListItem> list = coList.getContactListItem();
133
134         //FIXME: iterating over a long list of documents is not a long term
135         //strategy...need to change to more efficient iterating in future
136         Iterator<DocumentModel> iter = docList.iterator();
137         while(iter.hasNext()){
138             DocumentModel docModel = iter.next();
139             ContactListItem clistItem = new ContactListItem();
140             // TODO Revisit which information unit(s) should be returned
141             // in each entry, in a list of contact information.
142             // Should this be AddressText1 or some other unit(s)?
143             clistItem.setAddressText1((String) docModel.getProperty(getServiceContext().getCommonPartLabel(),
144                     ContactJAXBSchema.ADDRESS_TEXT1));
145             String id = NuxeoUtils.extractId(docModel.getPathAsString());
146             clistItem.setUri(getServiceContextPath() + id);
147             clistItem.setCsid(id);
148             list.add(clistItem);
149         }
150
151         return coList;
152     }
153
154     /**
155      * getQProperty converts the given property to qualified schema property
156      * @param prop
157      * @return
158      */
159     @Override
160     public String getQProperty(String prop) {
161         return ContactConstants.NUXEO_SCHEMA_NAME + ":" + prop;
162     }
163 }
164