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 }