Coverage Report - org.kuali.student.lum.lo.service.LearningObjectiveService
 
Classes in this File Line Coverage Branch Coverage Complexity
LearningObjectiveService
N/A
N/A
1
 
 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  
 }