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 }