Added support in vocabulary, personAuthority, and orgAuthority to make lists (of authorities as well as items) return pagination information in payload. This is not part of the individual item payloads, and so does not impact the nuxeo schemas.
query.append(" AND " + where + "AND ecm:isProxy = 0");
}
DocumentModelList docList = null;
+ // If we have limit and/or offset, then pass true to get totalSize
+ // in returned DocumentModelList.
if ((docFilter.getOffset() > 0) || (docFilter.getPageSize() > 0)) {
docList = repoSession.query(query.toString(), null,
- docFilter.getPageSize(), docFilter.getOffset(), false);
+ docFilter.getPageSize(), docFilter.getOffset(), true);
} else {
docList = repoSession.query(query.toString());
}
<xs:element name="organizations-common-list">
<xs:complexType>
<xs:sequence>
- <xs:element name="organization_list_item" maxOccurs="unbounded">
+ <xs:element name="pageNum" type="xs:unsignedInt" />
+ <xs:element name="pageSize" type="xs:unsignedInt" />
+ <xs:element name="totalItems" type="xs:unsignedInt" />
+ <xs:element name="organization_list_item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="displayName" type="xs:string"
<xs:element name="orgauthorities-common-list">
<xs:complexType>
<xs:sequence>
- <xs:element name="orgauthority-list-item" maxOccurs="unbounded">
+ <xs:element name="pageNum" type="xs:unsignedInt" />
+ <xs:element name="pageSize" type="xs:unsignedInt" />
+ <xs:element name="totalItems" type="xs:unsignedInt" />
+ <xs:element name="orgauthority-list-item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="displayName" type="xs:string"
import org.collectionspace.services.OrgAuthorityJAXBSchema;
import org.collectionspace.services.common.document.DocumentHandler.Action;
+import org.collectionspace.services.common.document.DocumentFilter;
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.organization.OrgauthoritiesCommon;
import org.collectionspace.services.organization.OrgauthoritiesCommonList;
OrgauthoritiesCommonList coList = new OrgauthoritiesCommonList();
List<OrgauthoritiesCommonList.OrgauthorityListItem> list = coList.getOrgauthorityListItem();
+ DocumentFilter filter = getDocumentFilter();
+ long pageNum, pageSize;
+ if(filter==null) {
+ pageNum = 0;
+ pageSize = 0;
+ } else {
+ pageSize = filter.getPageSize();
+ pageNum = filter.getOffset()/pageSize;
+ }
+ coList.setPageNum(pageNum);
+ coList.setPageSize(pageSize);
+ coList.setTotalItems(docList.totalSize());
//FIXME: iterating over a long list of documents is not a long term
//strategy...need to change to more efficient iterating in future
Iterator<DocumentModel> iter = docList.iterator();
import org.collectionspace.services.OrganizationJAXBSchema;
import org.collectionspace.services.common.context.MultipartServiceContext;
+import org.collectionspace.services.common.document.DocumentFilter;
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl;
import org.collectionspace.services.nuxeo.util.NuxeoUtils;
List<OrganizationsCommonList.OrganizationListItem> list =
coList.getOrganizationListItem();
+ DocumentFilter filter = getDocumentFilter();
+ long pageNum, pageSize;
+ if(filter==null) {
+ pageNum = 0;
+ pageSize = 0;
+ } else {
+ pageSize = filter.getPageSize();
+ pageNum = filter.getOffset()/pageSize;
+ }
+ coList.setPageNum(pageNum);
+ coList.setPageSize(pageSize);
+ coList.setTotalItems(docList.totalSize());
//FIXME: iterating over a long list of documents is not a long term
//strategy...need to change to more efficient iterating in future
Iterator<DocumentModel> iter = docList.iterator();
<xs:element name="persons-common-list">
<xs:complexType>
<xs:sequence>
- <xs:element name="person_list_item" maxOccurs="unbounded">
+ <xs:element name="pageNum" type="xs:unsignedInt" />
+ <xs:element name="pageSize" type="xs:unsignedInt" />
+ <xs:element name="totalItems" type="xs:unsignedInt" />
+ <xs:element name="person_list_item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="displayName" type="xs:string"
<xs:element name="personauthorities-common-list">
<xs:complexType>
<xs:sequence>
- <xs:element name="personauthority-list-item" maxOccurs="unbounded">
+ <xs:element name="pageNum" type="xs:unsignedInt" />
+ <xs:element name="pageSize" type="xs:unsignedInt" />
+ <xs:element name="totalItems" type="xs:unsignedInt" />
+ <xs:element name="personauthority-list-item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="displayName" type="xs:string"
import org.collectionspace.services.PersonAuthorityJAXBSchema;
import org.collectionspace.services.common.document.DocumentHandler.Action;
+import org.collectionspace.services.common.document.DocumentFilter;
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.person.PersonauthoritiesCommon;
import org.collectionspace.services.person.PersonauthoritiesCommonList;
PersonauthoritiesCommonList coList = new PersonauthoritiesCommonList();
List<PersonauthoritiesCommonList.PersonauthorityListItem> list = coList.getPersonauthorityListItem();
+ DocumentFilter filter = getDocumentFilter();
+ long pageNum, pageSize;
+ if(filter==null) {
+ pageNum = 0;
+ pageSize = 0;
+ } else {
+ pageSize = filter.getPageSize();
+ pageNum = filter.getOffset()/pageSize;
+ }
+ coList.setPageNum(pageNum);
+ coList.setPageSize(pageSize);
+ coList.setTotalItems(docList.totalSize());
//FIXME: iterating over a long list of documents is not a long term
//strategy...need to change to more efficient iterating in future
Iterator<DocumentModel> iter = docList.iterator();
import java.util.List;
import org.collectionspace.services.PersonJAXBSchema;
+import org.collectionspace.services.common.document.DocumentFilter;
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl;
import org.collectionspace.services.nuxeo.util.NuxeoUtils;
List<PersonsCommonList.PersonListItem> list =
coList.getPersonListItem();
+ DocumentFilter filter = getDocumentFilter();
+ long pageNum, pageSize;
+ if(filter==null) {
+ pageNum = 0;
+ pageSize = 0;
+ } else {
+ pageSize = filter.getPageSize();
+ pageNum = filter.getOffset()/pageSize;
+ }
+ coList.setPageNum(pageNum);
+ coList.setPageSize(pageSize);
+ coList.setTotalItems(docList.totalSize());
//FIXME: iterating over a long list of documents is not a long term
//strategy...need to change to more efficient iterating in future
Iterator<DocumentModel> iter = docList.iterator();
<xs:element name="vocabularies-common-list">
<xs:complexType>
<xs:sequence>
+ <xs:element name="pageNum" type="xs:unsignedInt" />
+ <xs:element name="pageSize" type="xs:unsignedInt" />
+ <xs:element name="totalItems" type="xs:unsignedInt" />
<xs:element name="vocabulary-list-item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="vocabularyitems-common-list">
<xs:complexType>
<xs:sequence>
- <xs:element name="vocabularyitem_list_item" maxOccurs="unbounded">
+ <xs:element name="pageNum" type="xs:unsignedInt" />
+ <xs:element name="pageSize" type="xs:unsignedInt" />
+ <xs:element name="totalItems" type="xs:unsignedInt" />
+ <xs:element name="vocabularyitem_list_item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="displayName" type="xs:string"
import org.collectionspace.services.VocabularyJAXBSchema;
import org.collectionspace.services.common.document.DocumentHandler.Action;
+import org.collectionspace.services.common.document.DocumentFilter;
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.vocabulary.VocabulariesCommon;
import org.collectionspace.services.vocabulary.VocabulariesCommonList;
VocabulariesCommonList coList = new VocabulariesCommonList();
List<VocabulariesCommonList.VocabularyListItem> list = coList.getVocabularyListItem();
+ DocumentFilter filter = getDocumentFilter();
+ long pageNum, pageSize;
+ if(filter==null) {
+ pageNum = 0;
+ pageSize = 0;
+ } else {
+ pageSize = filter.getPageSize();
+ pageNum = filter.getOffset()/pageSize;
+ }
+ coList.setPageNum(pageNum);
+ coList.setPageSize(pageSize);
+ coList.setTotalItems(docList.totalSize());
//FIXME: iterating over a long list of documents is not a long term
//strategy...need to change to more efficient iterating in future
Iterator<DocumentModel> iter = docList.iterator();
import java.util.List;
import org.collectionspace.services.VocabularyItemJAXBSchema;
+import org.collectionspace.services.common.document.DocumentFilter;
import org.collectionspace.services.common.document.DocumentWrapper;
import org.collectionspace.services.nuxeo.client.java.RemoteDocumentModelHandlerImpl;
import org.collectionspace.services.nuxeo.util.NuxeoUtils;
List<VocabularyitemsCommonList.VocabularyitemListItem> list =
coList.getVocabularyitemListItem();
+ DocumentFilter filter = getDocumentFilter();
+ long pageNum, pageSize;
+ if(filter==null) {
+ pageNum = 0;
+ pageSize = 0;
+ } else {
+ pageSize = filter.getPageSize();
+ pageNum = filter.getOffset()/pageSize;
+ }
+ coList.setPageNum(pageNum);
+ coList.setPageSize(pageSize);
+ coList.setTotalItems(docList.totalSize());
//FIXME: iterating over a long list of documents is not a long term
//strategy...need to change to more efficient iterating in future
Iterator<DocumentModel> iter = docList.iterator();