View Javadoc

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 }