This project has retired. For details please refer to its Attic page.
NavigationService xref

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.chemistry.opencmis.commons.spi;
20  
21  import java.math.BigInteger;
22  import java.util.List;
23  
24  import org.apache.chemistry.opencmis.commons.data.ExtensionsData;
25  import org.apache.chemistry.opencmis.commons.data.ObjectData;
26  import org.apache.chemistry.opencmis.commons.data.ObjectInFolderContainer;
27  import org.apache.chemistry.opencmis.commons.data.ObjectInFolderList;
28  import org.apache.chemistry.opencmis.commons.data.ObjectList;
29  import org.apache.chemistry.opencmis.commons.data.ObjectParentData;
30  import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships;
31  
32  /**
33   * Navigation Service interface.
34   * 
35   * <p>
36   * <em>
37   * See CMIS 1.0 specification for details on the operations, parameters,
38   * exceptions and the domain model.
39   * </em>
40   * </p>
41   */
42  public interface NavigationService {
43  
44      /**
45       * Gets the list of child objects contained in the specified folder.
46       * 
47       * @param repositoryId
48       *            the identifier for the repository
49       * @param folderId
50       *            the identifier for the folder
51       * @param filter
52       *            <em>(optional)</em> a comma-separated list of query names that
53       *            defines which properties must be returned by the repository
54       *            (default is repository specific)
55       * @param orderBy
56       *            <em>(optional)</em> a comma-separated list of query names that
57       *            define the order of the result set. Each query name must be
58       *            followed by the ascending modifier "ASC" or the descending
59       *            modifier "DESC" (default is repository specific)
60       * @param includeAllowableActions
61       *            <em>(optional)</em> if <code>true</code>, then the repository
62       *            must return the available actions for each object in the
63       *            result set (default is <code>false</code>)
64       * @param includeRelationships
65       *            <em>(optional)</em> indicates what relationships in which the
66       *            objects participate must be returned (default is
67       *            {@link IncludeRelationships#NONE})
68       * @param renditionFilter
69       *            <em>(optional)</em> indicates what set of renditions the
70       *            repository must return whose kind matches this filter (default
71       *            is <code>"cmis:none"</code>)
72       * @param includePathSegment
73       *            <em>(optional)</em> if <code>true</code>, returns a path
74       *            segment for each child object for use in constructing that
75       *            object's path (default is <code>false</code>)
76       * @param maxItems
77       *            <em>(optional)</em> the maximum number of items to return in a
78       *            response (default is repository specific)
79       * @param skipCount
80       *            <em>(optional)</em> number of potential results that the
81       *            repository MUST skip/page over before returning any results
82       *            (default is 0)
83       */
84      ObjectInFolderList getChildren(String repositoryId, String folderId, String filter, String orderBy,
85              Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
86              Boolean includePathSegment, BigInteger maxItems, BigInteger skipCount, ExtensionsData extension);
87  
88      /**
89       * Gets the set of descendant objects contained in the specified folder or
90       * any of its child folders.
91       * 
92       * @param repositoryId
93       *            the identifier for the repository
94       * @param folderId
95       *            the identifier for the folder
96       * @param depth
97       *            the number of levels of depth in the folder hierarchy from
98       *            which to return results
99       * @param filter
100      *            <em>(optional)</em> a comma-separated list of query names that
101      *            defines which properties must be returned by the repository
102      *            (default is repository specific)
103      * @param includeAllowableActions
104      *            <em>(optional)</em> if <code>true</code>, then the repository
105      *            must return the available actions for each object in the
106      *            result set (default is <code>false</code>)
107      * @param includeRelationships
108      *            <em>(optional)</em> indicates what relationships in which the
109      *            objects participate must be returned (default is
110      *            {@link IncludeRelationships#NONE})
111      * @param renditionFilter
112      *            <em>(optional)</em> indicates what set of renditions the
113      *            repository must return whose kind matches this filter (default
114      *            is <code>"cmis:none"</code>)
115      * @param includePathSegment
116      *            <em>(optional)</em> if <code>true</code>, returns a path
117      *            segment for each child object for use in constructing that
118      *            object's path (default is <code>false</code>)
119      **/
120     List<ObjectInFolderContainer> getDescendants(String repositoryId, String folderId, BigInteger depth, String filter,
121             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
122             Boolean includePathSegment, ExtensionsData extension);
123 
124     /**
125      * Gets the set of descendant folder objects contained in the specified
126      * folder.
127      * 
128      * @param repositoryId
129      *            the identifier for the repository
130      * @param folderId
131      *            the identifier for the folder
132      * @param depth
133      *            the number of levels of depth in the folder hierarchy from
134      *            which to return results
135      * @param filter
136      *            <em>(optional)</em> a comma-separated list of query names that
137      *            defines which properties must be returned by the repository
138      *            (default is repository specific)
139      * @param includeAllowableActions
140      *            <em>(optional)</em> if <code>true</code>, then the repository
141      *            must return the available actions for each object in the
142      *            result set (default is <code>false</code>)
143      * @param includeRelationships
144      *            <em>(optional)</em> indicates what relationships in which the
145      *            objects participate must be returned (default is
146      *            {@link IncludeRelationships#NONE})
147      * @param renditionFilter
148      *            <em>(optional)</em> indicates what set of renditions the
149      *            repository must return whose kind matches this filter (default
150      *            is <code>"cmis:none"</code>)
151      * @param includePathSegment
152      *            <em>(optional)</em> if <code>true</code>, returns a path
153      *            segment for each child object for use in constructing that
154      *            object's path (default is <code>false</code>)
155      **/
156     List<ObjectInFolderContainer> getFolderTree(String repositoryId, String folderId, BigInteger depth, String filter,
157             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
158             Boolean includePathSegment, ExtensionsData extension);
159 
160     /**
161      * Gets the parent folder(s) for the specified non-folder, fileable object.
162      * 
163      * @param repositoryId
164      *            the identifier for the repository
165      * @param objectId
166      *            the identifier for the object
167      * @param filter
168      *            <em>(optional)</em> a comma-separated list of query names that
169      *            defines which properties must be returned by the repository
170      *            (default is repository specific)
171      * @param includeAllowableActions
172      *            <em>(optional)</em> if <code>true</code>, then the repository
173      *            must return the available actions for each object in the
174      *            result set (default is <code>false</code>)
175      * @param includeRelationships
176      *            <em>(optional)</em> indicates what relationships in which the
177      *            objects participate must be returned (default is
178      *            {@link IncludeRelationships#NONE})
179      * @param renditionFilter
180      *            <em>(optional)</em> indicates what set of renditions the
181      *            repository must return whose kind matches this filter (default
182      *            is <code>"cmis:none"</code>)
183      * @param includeRelativePathSegment
184      *            <em>(optional)</em> if <code>true</code>, returns a relative
185      *            path segment for each parent object for use in constructing
186      *            that object's path (default is <code>false</code>)
187      */
188     List<ObjectParentData> getObjectParents(String repositoryId, String objectId, String filter,
189             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
190             Boolean includeRelativePathSegment, ExtensionsData extension);
191 
192     /**
193      * Gets the parent folder object for the specified folder object.
194      * 
195      * @param repositoryId
196      *            the identifier for the repository
197      * @param folderId
198      *            the identifier for the folder
199      * @param filter
200      *            <em>(optional)</em> a comma-separated list of query names that
201      *            defines which properties must be returned by the repository
202      *            (default is repository specific)
203      */
204     ObjectData getFolderParent(String repositoryId, String folderId, String filter, ExtensionsData extension);
205 
206     /**
207      * Gets the list of documents that are checked out that the user has access
208      * to.
209      * 
210      * @param repositoryId
211      *            the identifier for the repository
212      * @param folderId
213      *            the identifier for the folder
214      * @param filter
215      *            <em>(optional)</em> a comma-separated list of query names that
216      *            defines which properties must be returned by the repository
217      *            (default is repository specific)
218      * @param orderBy
219      *            <em>(optional)</em> a comma-separated list of query names that
220      *            define the order of the result set. Each query name must be
221      *            followed by the ascending modifier "ASC" or the descending
222      *            modifier "DESC" (default is repository specific)
223      * @param includeAllowableActions
224      *            <em>(optional)</em> if <code>true</code>, then the repository
225      *            must return the available actions for each object in the
226      *            result set (default is <code>false</code>)
227      * @param includeRelationships
228      *            <em>(optional)</em> indicates what relationships in which the
229      *            objects participate must be returned (default is
230      *            {@link IncludeRelationships#NONE})
231      * @param renditionFilter
232      *            <em>(optional)</em> indicates what set of renditions the
233      *            repository must return whose kind matches this filter (default
234      *            is <code>"cmis:none"</code>)
235      * @param maxItems
236      *            <em>(optional)</em> the maximum number of items to return in a
237      *            response (default is repository specific)
238      * @param skipCount
239      *            <em>(optional)</em> number of potential results that the
240      *            repository MUST skip/page over before returning any results
241      *            (default is 0)
242      */
243     ObjectList getCheckedOutDocs(String repositoryId, String folderId, String filter, String orderBy,
244             Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter,
245             BigInteger maxItems, BigInteger skipCount, ExtensionsData extension);
246 }