1 /** 2 * Copyright 2010 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package org.kuali.student.lum.lo.service; 17 18 import java.util.List; 19 20 import javax.jws.WebParam; 21 import javax.jws.WebService; 22 import javax.jws.soap.SOAPBinding; 23 24 import org.kuali.student.common.dictionary.service.DictionaryService; 25 import org.kuali.student.common.dto.StatusInfo; 26 import org.kuali.student.common.exceptions.AlreadyExistsException; 27 import org.kuali.student.common.exceptions.CircularRelationshipException; 28 import org.kuali.student.common.exceptions.DataValidationErrorException; 29 import org.kuali.student.common.exceptions.DependentObjectsExistException; 30 import org.kuali.student.common.exceptions.DoesNotExistException; 31 import org.kuali.student.common.exceptions.InvalidParameterException; 32 import org.kuali.student.common.exceptions.MissingParameterException; 33 import org.kuali.student.common.exceptions.OperationFailedException; 34 import org.kuali.student.common.exceptions.PermissionDeniedException; 35 import org.kuali.student.common.exceptions.UnsupportedActionException; 36 import org.kuali.student.common.exceptions.VersionMismatchException; 37 import org.kuali.student.common.search.service.SearchService; 38 import org.kuali.student.common.validation.dto.ValidationResultInfo; 39 import org.kuali.student.lum.lo.dto.LoCategoryInfo; 40 import org.kuali.student.lum.lo.dto.LoCategoryTypeInfo; 41 import org.kuali.student.lum.lo.dto.LoInfo; 42 import org.kuali.student.lum.lo.dto.LoLoRelationInfo; 43 import org.kuali.student.lum.lo.dto.LoLoRelationTypeInfo; 44 import org.kuali.student.lum.lo.dto.LoRepositoryInfo; 45 import org.kuali.student.lum.lo.dto.LoTypeInfo; 46 47 /** 48 * 49 * @Author KSContractMojo 50 * @Author jimt 51 * @Since Tue Dec 08 10:00:55 PST 2009 52 * @See <a href="https://test.kuali.org/confluence/display/KULSTU/Learning+Objective+Service+v1.0-rc3">LearningObjectiveService</> 53 * 54 */ 55 @WebService(name = "LearningObjectiveService", targetNamespace = "http://student.kuali.org/wsdl/lo") 56 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 57 public interface LearningObjectiveService extends DictionaryService, SearchService { 58 /** 59 * Retrieves the list of learning objective repositories known by this service. 60 * @return list of learning objective repository information 61 * @throws OperationFailedException unable to complete request 62 */ 63 public List<LoRepositoryInfo> getLoRepositories() throws OperationFailedException; 64 65 /** 66 * Retrieves information about a particular learning objective repository. 67 * @param loRepositoryKey learning objective repository identifier 68 * @return information about a learning objective repository 69 * @throws DoesNotExistException specified learning objective repository not found 70 * @throws InvalidParameterException invalid loRepositoryKey 71 * @throws MissingParameterException loRepositoryKey not specified 72 * @throws OperationFailedException unable to complete request 73 */ 74 public LoRepositoryInfo getLoRepository(@WebParam(name="loRepositoryKey")String loRepositoryKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 75 76 /** 77 * Retrieves the list of learning objective category types known by this service. 78 * @return list of learning objective category type information 79 * @throws OperationFailedException unable to complete request 80 */ 81 public List<LoCategoryTypeInfo> getLoCategoryTypes() throws OperationFailedException; 82 83 /** 84 * Retrieves information about a particular learning objective category type. 85 * @param loCategoryTypeKey learning objective category type identifier 86 * @return information about a learning objective category type 87 * @throws DoesNotExistException specified learning objective category type not found 88 * @throws InvalidParameterException invalid loCategoryTypeKey 89 * @throws MissingParameterException loCategoryTypeKey not specified 90 * @throws OperationFailedException unable to complete request 91 */ 92 public LoCategoryTypeInfo getLoCategoryType(@WebParam(name="loCategoryTypeKey")String loCategoryTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 93 94 /** 95 * Retrieves the list of learning objective types known by this service. 96 * @return list of learning objective type information 97 * @throws OperationFailedException unable to complete request 98 */ 99 public List<LoTypeInfo> getLoTypes() throws OperationFailedException; 100 101 /** 102 * Retrieves information about a particular learning objective type. 103 * @param loTypeKey learning objective type identifier 104 * @return information about a learning objective type 105 * @throws DoesNotExistException specified learning objective type not found 106 * @throws InvalidParameterException invalid loTypeKey 107 * @throws MissingParameterException loTypeKey not specified 108 * @throws OperationFailedException unable to complete request 109 */ 110 public LoTypeInfo getLoType(@WebParam(name="loTypeKey")String loTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 111 112 /** 113 * Retrieves the complete list of LO to LO relation types 114 * @return list of LO to LO relation type information 115 * @throws OperationFailedException unable to complete request 116 */ 117 public List<LoLoRelationTypeInfo> getLoLoRelationTypes() throws OperationFailedException; 118 119 /** 120 * Retrieves the LO to LO relation type 121 * @param loLoRelationTypeKey Key of the LO to LO Relation Type 122 * @return LO to LO relation type information 123 * @throws OperationFailedException unable to complete request 124 * @throws MissingParameterException 125 * @throws DoesNotExistException 126 */ 127 public LoLoRelationTypeInfo getLoLoRelationType(@WebParam(name="loLoRelationTypeKey")String loLoRelationTypeKey) throws OperationFailedException, MissingParameterException, DoesNotExistException; 128 129 /** 130 * Retrieves the list of allowed relation types between the two specified LO Types 131 * @param loTypeKey Key of the first LO Type 132 * @param relatedLoTypeKey Key of the second LO Type 133 * @return list of LO to LO relation types 134 * @throws DoesNotExistException loTypeKey, relatedLoTypeKey not found 135 * @throws InvalidParameterException invalid loTypeKey, relatedLoTypeKey 136 * @throws MissingParameterException missing loTypeKey, relatedLoTypeKey 137 * @throws OperationFailedException unable to complete request 138 */ 139 public List<String> getAllowedLoLoRelationTypesForLoType(@WebParam(name="loTypeKey")String loTypeKey, @WebParam(name="relatedLoTypeKey")String relatedLoTypeKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 140 141 /** 142 * Retrieves information about all the learning objective categories in a given learning objective repository. 143 * @param loRepositoryKey loRepository identifier 144 * @return list of learning objective category information 145 * @throws DoesNotExistException loRepositoryKey not found 146 * @throws InvalidParameterException invalid loRepositoryKey 147 * @throws MissingParameterException missing loRepositoryKey 148 * @throws OperationFailedException unable to complete request 149 */ 150 public List<LoCategoryInfo> getLoCategories(@WebParam(name="loRepositoryKey")String loRepositoryKey) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 151 152 /** 153 * Retrieves information about an learning objective category. 154 * @param loCategoryId loCategory identifier 155 * @return LoCategory 156 * @throws DoesNotExistException loCategoryId not found 157 * @throws InvalidParameterException invalid loCategoryId 158 * @throws MissingParameterException missing loCategoryId 159 * @throws OperationFailedException unable to complete request 160 */ 161 public LoCategoryInfo getLoCategory(@WebParam(name="loCategoryId")String loCategoryId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 162 163 /** 164 * Retrieves information on a single learning objective. 165 * @param loId learning objective identifier 166 * @return information about a single learning objective 167 * @throws DoesNotExistException loId not found 168 * @throws InvalidParameterException invalid loId 169 * @throws MissingParameterException missing loId 170 * @throws OperationFailedException unable to complete request 171 */ 172 public LoInfo getLo(@WebParam(name="loId")String loId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 173 174 /** 175 * Retrieves information on multiple learning objectives. 176 * @param loId list of learning objective identifiers 177 * @return list of learning objective information 178 * @throws InvalidParameterException invalid loIdList 179 * @throws MissingParameterException missing loIdList 180 * @throws OperationFailedException unable to complete request 181 */ 182 public List<LoInfo> getLoByIdList(@WebParam(name="loId")List<String> loId) throws InvalidParameterException, MissingParameterException, OperationFailedException; 183 184 /** 185 * Retrieves learning objectives from a given repository of a given type and state. 186 * @param loRepositoryKey repository identifier 187 * @param loTypeKey learning objective type identifier 188 * @param loStateKey learning objective state identifier 189 * @return list of learning objectives 190 * @throws InvalidParameterException one or more parameters invalid 191 * @throws MissingParameterException one or more missing parameters missing 192 * @throws OperationFailedException unable to complete request 193 */ 194 public List<LoInfo> getLosByRepository(@WebParam(name="loRepositoryKey")String loRepositoryKey, @WebParam(name="loTypeKey")String loTypeKey, @WebParam(name="loStateKey")String loStateKey) throws InvalidParameterException, MissingParameterException, OperationFailedException; 195 196 /** 197 * Retrieves a list of learning objective categories for a specific learning objective. 198 * @param loId learning objective identifier 199 * @return list of learning objective category information 200 * @throws DoesNotExistException loCategoryId not found 201 * @throws InvalidParameterException invalid loId 202 * @throws MissingParameterException missing loId 203 * @throws OperationFailedException unable to complete request 204 */ 205 public List<LoCategoryInfo> getLoCategoriesForLo(@WebParam(name="loId")String loId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 206 207 /** 208 * Retrieves a list of learning objectives that have a specific learning objective category. 209 * @param loCategoryId learning objective category identifier 210 * @return list of learning objective information 211 * @throws DoesNotExistException loCategoryId not found 212 * @throws InvalidParameterException invalid loCategoryId 213 * @throws MissingParameterException missing loCategoryId 214 * @throws OperationFailedException unable to complete request 215 */ 216 public List<LoInfo> getLosByLoCategory(@WebParam(name="loCategoryId")String loCategoryId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 217 218 /** 219 * Retrieves the list of LO information for the LOs related to a specified LO Id with a certain LU to LU relation type (getRelatedLosByLoId from the other direction) 220 * @param relatedLoId identifier of the LO 221 * @param loLoRelationType the LO to LO relation type 222 * @return list of LO information 223 * @throws DoesNotExistException relatedLoId, loLoRelationType not found 224 * @throws InvalidParameterException invalid relatedLoId, loLoRelationType 225 * @throws MissingParameterException missing relatedLoId, loLoRelationType 226 * @throws OperationFailedException unable to complete request 227 */ 228 public List<LoInfo> getLosByRelatedLoId(@WebParam(name="relatedLoId")String relatedLoId, @WebParam(name="loLoRelationType")String loLoRelationType) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 229 230 /** 231 * Retrieves the list of related LO information for the specified LO Id and LU to LU relation type (getLosByRelatedLoId from the other direction) 232 * @param loId identifier of the LO 233 * @param loLoRelationType the LO to LO relation type 234 * @return list of LO information 235 * @throws DoesNotExistException loId, loLoRelationType not found 236 * @throws InvalidParameterException invalid loId, loLoRelationType 237 * @throws MissingParameterException missing loId, loLoRelationType 238 * @throws OperationFailedException unable to complete request 239 */ 240 public List<LoInfo> getRelatedLosByLoId(@WebParam(name="loId")String loId, @WebParam(name="loLoRelationType")String loLoRelationType) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 241 242 /** 243 * Retrieves the relationship information between LOs for a particular relationship identifier 244 * @param loLoRelationId identifier of the LO to LO relationship 245 * @return information on the relation between two LOs 246 * @throws DoesNotExistException loLoRelationId not found 247 * @throws InvalidParameterException invalid loLoRelationId 248 * @throws MissingParameterException missing loLoRelationId 249 * @throws OperationFailedException unable to complete request 250 */ 251 public LoLoRelationInfo getLoLoRelation(@WebParam(name="loLoRelationId")String loLoRelationId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 252 253 /** 254 * Retrieves the relationship information between LOs for a particular LO. 255 * @param loId identifier of the LO 256 * @return all relations (both directions) from an LO 257 * @throws DoesNotExistException loId not found 258 * @throws InvalidParameterException invalid loId 259 * @throws MissingParameterException missing loId 260 * @throws OperationFailedException unable to complete request 261 */ 262 public List<LoLoRelationInfo> getLoLoRelationsByLoId(@WebParam(name="loId")String loId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 263 264 /** 265 * Validates a learning objective category. Depending on the value of validationType, this validation could be limited to tests on just the current object and its directly contained sub-objects or expanded to perform all tests related to this object. If an identifier is present for the learning objective category (and/or one of its contained sub-objects) and a record is found for that identifier, the validation checks if the learning objective category can be shifted to the new values. If an identifier is not present or a record cannot be found for the identifier, it is assumed that the record does not exist and as such, the checks performed will be much shallower, typically mimicking those performed by setting the validationType to the current object. 266 * @param validationType identifier of the extent of validation 267 * @param loCategoryInfo learning objective category information to be tested. 268 * @return results from performing the validation 269 * @throws DoesNotExistException validationTypeKey not found 270 * @throws InvalidParameterException invalid validationTypeKey, loCategoryInfo 271 * @throws MissingParameterException missing validationTypeKey, loCategoryInfo 272 * @throws OperationFailedException unable to complete request 273 */ 274 public List<ValidationResultInfo> validateLoCategory(@WebParam(name="validationType")String validationType, @WebParam(name="loCategoryInfo")LoCategoryInfo loCategoryInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 275 276 /** 277 * Create a learning objective category in a particular learning objective repository. 278 * @param loRepositoryKey identifier of the learning objective repository 279 * @param loCategoryTypeKey identifier of the learning objective category type 280 * @param loCategoryInfo information to create the learning objective category 281 * @return information on the created learning objective category 282 * @throws DataValidationErrorException One or more values invalid for this operation 283 * @throws DoesNotExistException loRepositoryKey, loCategoryTypeKey not found 284 * @throws InvalidParameterException invalid loRepositoryKey, loCategoryTypeKey, loCategoryInfo 285 * @throws MissingParameterException missing loRepositoryKey, loCategoryTypeKey, loCategoryInfo 286 * @throws OperationFailedException unable to complete request 287 * @throws PermissionDeniedException authorization failure 288 */ 289 public LoCategoryInfo createLoCategory(@WebParam(name="loRepositoryKey")String loRepositoryKey, @WebParam(name="loCategoryTypeKey")String loCategoryTypeKey, @WebParam(name="loCategoryInfo")LoCategoryInfo loCategoryInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 290 291 /** 292 * Updates a learning objective category in a particular learning objective repository. 293 * @param loCategoryId the learning objective category identifier 294 * @param loCategoryInfo information to create the learning objective category 295 * @return information on the uppdated learning objective category 296 * @throws DataValidationErrorException One or more values invalid for this operation 297 * @throws DoesNotExistException loCategoryId not found 298 * @throws InvalidParameterException invalid loCategoryId, loCategoryInfo 299 * @throws MissingParameterException missing loCategoryId, loCategoryInfo 300 * @throws OperationFailedException unable to complete request 301 * @throws PermissionDeniedException authorization failure 302 * @throws VersionMismatchException action was attempted on an out of date version. 303 */ 304 public LoCategoryInfo updateLoCategory(@WebParam(name="loCategoryId")String loCategoryId, @WebParam(name="loCategoryInfo")LoCategoryInfo loCategoryInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 305 306 /** 307 * Deletes a learning objective category. 308 * @param loCategoryId learning objective category identifier 309 * @return status of the operation (success/failure) 310 * @throws DependentObjectsExistException learning objective category is still attached to one or more learning objectives 311 * @throws DoesNotExistException loCategoryId not found 312 * @throws InvalidParameterException invalid loCategoryId 313 * @throws MissingParameterException missing loCategoryId 314 * @throws OperationFailedException unable to complete request 315 * @throws PermissionDeniedException authorization failure 316 */ 317 public StatusInfo deleteLoCategory(@WebParam(name="loCategoryId")String loCategoryId) throws DependentObjectsExistException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 318 319 /** 320 * Validates a learning objective. Depending on the value of validationType, this validation could be limited to tests on just the current object and its directly contained sub-objects or expanded to perform all tests related to this object. If an identifier is present for the learning objective (and/or one of its contained sub-objects) and a record is found for that identifier, the validation checks if the learning objective can be shifted to the new values. If an identifier is not present or a record cannot be found for the identifier, it is assumed that the record does not exist and as such, the checks performed will be much shallower, typically mimicking those performed by setting the validationType to the current object. 321 * @param validationType identifier of the extent of validation 322 * @param loInfo learning objective information to be tested. 323 * @return results from performing the validation 324 * @throws DoesNotExistException validationTypeKey not found 325 * @throws InvalidParameterException invalid validationTypeKey, loInfo 326 * @throws MissingParameterException missing validationTypeKey, loInfo 327 * @throws OperationFailedException unable to complete request 328 */ 329 public List<ValidationResultInfo> validateLo(@WebParam(name="validationType")String validationType, @WebParam(name="loInfo")LoInfo loInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 330 331 /** 332 * Create a learning objective. 333 * @param loRepositoryKey identifier of the learning objective repository 334 * @param loType type for the learning objective 335 * @param loInfo information to create the learning objective 336 * @return information on the created learning objective 337 * @throws DataValidationErrorException One or more values invalid for this operation 338 * @throws DoesNotExistException loRepositoryKey, loType not found 339 * @throws InvalidParameterException invalid loRepositoryKey, loType, loInfo 340 * @throws MissingParameterException missing loRepositoryKey, loType, loInfo 341 * @throws OperationFailedException unable to complete request 342 * @throws PermissionDeniedException authorization failure 343 */ 344 public LoInfo createLo(@WebParam(name="loRepositoryKey")String loRepositoryKey, @WebParam(name="loType")String loType, @WebParam(name="loInfo")LoInfo loInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 345 346 /** 347 * Update a learning objective. 348 * @param loId identifier of the learning objective to update 349 * @param loInfo updated information on the learning objective 350 * @return information on the updated learning objective 351 * @throws DataValidationErrorException One or more values invalid for this operation 352 * @throws DoesNotExistException loId not found 353 * @throws InvalidParameterException invalid loId, loInfo 354 * @throws MissingParameterException missing loId, loInfo 355 * @throws OperationFailedException unable to complete request 356 * @throws PermissionDeniedException authorization failure 357 * @throws VersionMismatchException action was attempted on an out of date version. 358 */ 359 public LoInfo updateLo(@WebParam(name="loId")String loId, @WebParam(name="loInfo")LoInfo loInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 360 361 /** 362 * Delete a learning objective. 363 * @param loId identifier of the learning objective to delete 364 * @return status of the operation (success or failure) 365 * @throws DependentObjectsExistException removing the learning objective will orphan one or more child learning objectives 366 * @throws DoesNotExistException loId not found 367 * @throws InvalidParameterException invalid loId 368 * @throws MissingParameterException missing loId 369 * @throws OperationFailedException unable to complete request 370 * @throws PermissionDeniedException authorization failure 371 */ 372 public StatusInfo deleteLo(@WebParam(name="loId")String loId) throws DependentObjectsExistException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 373 374 /** 375 * Add a existing learning objective category to an existing learning objective in the same repository. 376 * @param loCategoryId identifier of the learning objective category to add 377 * @param loId identifier of the learning objective 378 * @return status of the operation (success or failure) 379 * @throws AlreadyExistsException loCategoryId is already set as a category of the LoId 380 * @throws DoesNotExistException loId, loCategoryId not found 381 * @throws InvalidParameterException invalid loId, loCategoryId 382 * @throws MissingParameterException missing loId, loCategoryId 383 * @throws OperationFailedException unable to complete request 384 * @throws PermissionDeniedException authorization failure 385 * @throws UnsupportedActionException loId, loCategoryId are not in the same repository 386 */ 387 public StatusInfo addLoCategoryToLo(@WebParam(name="loCategoryId")String loCategoryId, @WebParam(name="loId")String loId) throws AlreadyExistsException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, UnsupportedActionException; 388 389 /** 390 * Remove a existing learning objective category from an existing learning objective in the same repository. 391 * @param loCategoryId identifier of the learning objective category to remove 392 * @param loId identifier of the learning objective 393 * @return status of the operation (success or failure) 394 * @throws DoesNotExistException loId, loCategoryId not found 395 * @throws InvalidParameterException invalid loId, loCategoryId 396 * @throws MissingParameterException missing loId, loCategoryId 397 * @throws OperationFailedException unable to complete request 398 * @throws PermissionDeniedException authorization failure 399 * @throws UnsupportedActionException loId, loCategoryId are not in the same repository 400 */ 401 public StatusInfo removeLoCategoryFromLo(@WebParam(name="loCategoryId")String loCategoryId, @WebParam(name="loId")String loId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, UnsupportedActionException; 402 403 /** 404 * Validates a loLoRelation. Depending on the value of validationType, this validation could be limited to tests on just the current object and its directly contained sub-objects or expanded to perform all tests related to this object. If an identifier is present for the loLoRelation (and/or one of its contained sub-objects) and a record is found for that identifier, the validation checks if the relationship can be shifted to the new values. If an identifier is not present or a record cannot be found for the identifier, it is assumed that the record does not exist and as such, the checks performed will be much shallower, typically mimicking those performed by setting the validationType to the current object. 405 * @param validationType identifier of the extent of validation 406 * @param loLoRelationInfo loLoRelation information to be tested. 407 * @return results from performing the validation 408 * @throws DoesNotExistException validationTypeKey not found 409 * @throws InvalidParameterException invalid validationTypeKey, loLoRelationInfo 410 * @throws MissingParameterException missing validationTypeKey, loLoRelationInfo 411 * @throws OperationFailedException unable to complete request 412 */ 413 public List<ValidationResultInfo> validateLoLoRelation(@WebParam(name="validationType")String validationType, @WebParam(name="loLoRelationInfo")LoLoRelationInfo loLoRelationInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException; 414 415 /** 416 * Create a directional relationship between two LOs 417 * @param loId identifier of the first LO in the relationship - The From or Parent of the relation 418 * @param relatedLoId identifier of the second LO in the relationship to be related to - the To or Child of the Relation 419 * @param loLoRelationType the type of the LO to LO relationship 420 * @param loLoRelationInfo information about the relationship between the two LOs 421 * @return the created LO to LO relation information 422 * @throws AlreadyExistsException relationship already exists 423 * @throws CircularRelationshipException Relation would create a loop (with ancestor Lo) 424 * @throws DataValidationErrorException One or more values invalid for this operation 425 * @throws DoesNotExistException loId, relatedLoId, luLuRelationType not found 426 * @throws InvalidParameterException invalid loId, relatedLoId, luluRelationType, loLoRelationInfo 427 * @throws MissingParameterException missing loId, relatedLoId, luluRelationType, loLoRelationInfo 428 * @throws OperationFailedException unable to complete request 429 * @throws PermissionDeniedException authorization failure 430 */ 431 public LoLoRelationInfo createLoLoRelation(@WebParam(name="loId")String loId, @WebParam(name="relatedLoId")String relatedLoId, @WebParam(name="loLoRelationType")String loLoRelationType, @WebParam(name="loLoRelationInfo")LoLoRelationInfo loLoRelationInfo) throws AlreadyExistsException, CircularRelationshipException, DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 432 433 /** 434 * Updates a relationship between two LOs 435 * @param loLoRelationId identifier of the LO to LO relation to be updated 436 * @param loLoRelationInfo changed information about the LO to LO relationship 437 * @return the updated LO to LO relation information 438 * @throws DataValidationErrorException One or more values invalid for this operation 439 * @throws DoesNotExistException loLoRelationId not found 440 * @throws InvalidParameterException invalid loLoRelationId, loLoRelationInfo 441 * @throws MissingParameterException missing loLoRelationId, loLoRelationInfo 442 * @throws OperationFailedException unable to complete request 443 * @throws PermissionDeniedException authorization failure 444 * @throws VersionMismatchException The action was attempted on an out of date version. 445 */ 446 public LoLoRelationInfo updateLoLoRelation(@WebParam(name="loLoRelationId")String loLoRelationId, @WebParam(name="loLoRelationInfo")LoLoRelationInfo loLoRelationInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException; 447 448 /** 449 * Deletes a relationship between two LOs 450 * @param loLoRelationId identifier of LO to LO relationship to delete 451 * @return status of the operation (success or failure) 452 * @throws DoesNotExistException loLoRelationId not found 453 * @throws InvalidParameterException invalid loLoRelationId 454 * @throws MissingParameterException missing loLoRelationId 455 * @throws OperationFailedException unable to complete request 456 * @throws PermissionDeniedException authorization failure 457 * @throws DependentObjectsExistException 458 */ 459 public StatusInfo deleteLoLoRelation(@WebParam(name="loLoRelationId")String loLoRelationId) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException; 460 461 }