View Javadoc

1   /**
2    * Copyright 2013 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   * Created by Mezba Mahtab (mezba.mahtab@utoronto.ca) on 2/15/13
16   */
17  package org.kuali.student.enrollment.examoffering.service;
18  
19  import org.kuali.rice.core.api.criteria.QueryByCriteria;
20  import org.kuali.student.enrollment.examoffering.dto.ExamOfferingInfo;
21  import org.kuali.student.enrollment.examoffering.dto.ExamOfferingRelationInfo;
22  import org.kuali.student.r2.common.dto.ContextInfo;
23  import org.kuali.student.r2.common.dto.StatusInfo;
24  import org.kuali.student.r2.common.dto.ValidationResultInfo;
25  import org.kuali.student.r2.common.exceptions.*;
26  import org.kuali.student.r2.common.util.constants.ExamOfferingServiceConstants;
27  
28  import javax.jws.WebParam;
29  import javax.jws.WebService;
30  import javax.jws.soap.SOAPBinding;
31  import java.util.List;
32  
33  /**
34   * This class represents a service to manage an offering of an exam.
35   *
36   * @author Mezba Mahtab (mezba.mahtab@utoronto.ca)
37   */
38  @WebService(name = "ExamOfferingService", serviceName = "ExamOfferingService", portName = "ExamOfferingService", targetNamespace = ExamOfferingServiceConstants.NAMESPACE)
39  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
40  public interface ExamOfferingService {
41  
42      /**
43       * Retrieves information about an exam offering.
44       *
45       * @param examOfferingId    the id of the exam
46       * @param contextInfo       Context information containing the principalId and locale
47       *                          information about the caller of service operation
48       * @return an exam offering whose id matches the given id
49       * @throws DoesNotExistException if the exam offering does not exist
50       * @throws InvalidParameterException contextInfo is invalid
51       * @throws MissingParameterException examOfferingId or contextInfo are absent (missing or null)
52       * @throws OperationFailedException unable to complete request
53       * @throws PermissionDeniedException an authorization failure occured
54       */
55      public ExamOfferingInfo getExamOffering(@WebParam(name = "examOfferingId") String examOfferingId,
56                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
57              throws DoesNotExistException,
58              InvalidParameterException,
59              MissingParameterException,
60              OperationFailedException,
61              PermissionDeniedException;
62  
63      /**
64       * Retrieves the information for the specified list of ExamOfferings (that match the given Ids).
65       *
66       * @param examOfferingIds   List of identifiers for exam offerings
67       * @param contextInfo       Context information containing the principalId and locale
68       *                          information about the caller of service operation
69       * @return List of exam offerings matching the given ids
70       * @throws DoesNotExistException     One or more examOfferingIds not found
71       * @throws InvalidParameterException contextInfo is invalid
72       * @throws MissingParameterException examOfferingIds or contextInfo are absent (missing or null)
73       * @throws OperationFailedException  unable to complete request
74       * @throws PermissionDeniedException authorization failure
75       */
76      public List<ExamOfferingInfo> getExamOfferingsByIds (@WebParam(name = "examOfferingIds") List<String> examOfferingIds,
77                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
78              throws DoesNotExistException,
79              InvalidParameterException,
80              MissingParameterException,
81              OperationFailedException,
82              PermissionDeniedException;
83  
84      /**
85       * Retrieve a list of ExamOffering Ids by Exam Type.
86       *
87       * @param examTypeKey   the identifier for an exam Type
88       * @param contextInfo   information containing the principalId and
89       *                      locale information about the caller of
90       *                      service operation
91       * @return a list of exam offering identifiers matching
92       *         examTypeKey or an empty list if none found
93       * @throws InvalidParameterException contextInfo is not valid
94       * @throws MissingParameterException examTypeKey or contextInfo is
95       *                                   missing or null
96       * @throws OperationFailedException  unable to complete request
97       * @throws PermissionDeniedException an authorization failure occurred
98       */
99      public List<String> getExamOfferingIdsByType(@WebParam(name = "examTypeKey") String examTypeKey,
100                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo)
101             throws InvalidParameterException,
102             MissingParameterException,
103             OperationFailedException,
104             PermissionDeniedException;
105 
106     /**
107      * Searches for ExamOfferings that meet the given search criteria.
108      *
109      * @param criteria    the search criteria
110      * @param contextInfo information containing the principalId and locale
111      *                    information about the caller of service operation
112      * @return a list of ExamOffering Ids matching the criteria
113      * @throws InvalidParameterException criteria or contextInfo is not valid
114      * @throws MissingParameterException criteria or contextInfo is missing or
115      *                                   null
116      * @throws OperationFailedException  unable to complete request
117      * @throws PermissionDeniedException an authorization failure occurred
118      */
119     public List<String> searchForExamOfferingIds(@WebParam(name = "criteria") QueryByCriteria criteria,
120                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo)
121             throws InvalidParameterException,
122             MissingParameterException,
123             OperationFailedException,
124             PermissionDeniedException;
125 
126     /**
127      * Searches for ExamOfferings that meet the given search criteria.
128      *
129      * @param criteria    the search criteria
130      * @param contextInfo information containing the principalId and locale
131      *                    information about the caller of service operation
132      * @return a list of ExamOfferings matching the criteria
133      * @throws InvalidParameterException criteria or contextInfo is not valid
134      * @throws MissingParameterException criteria or contextInfo is missing or
135      *                                   null
136      * @throws OperationFailedException  unable to complete request
137      * @throws PermissionDeniedException an authorization failure occurred
138      */
139     public List<ExamOfferingInfo> searchForExamOfferings (@WebParam(name = "criteria") QueryByCriteria criteria,
140                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
141             throws InvalidParameterException,
142             MissingParameterException,
143             OperationFailedException,
144             PermissionDeniedException;
145 
146     /**
147      * Validates an ExamOffering. Depending on the value of validationType,
148      * this validation could be limited to tests on just the current
149      * exam offering and its directly contained sub-objects or expanded to
150      * perform all tests related to this exam offering. If an identifier is
151      * present for the exam offering and a record is found for that identifier, the validation
152      * checks if the exam can be updated to the new values. If an identifier is not
153      * present or a record does not exist, the validation checks if the object
154      * with the given data can be created.
155      *
156      * @param termId    Unique key of the term for which the exam offering is being
157      *                  validated
158      * @param examId    Unique key of the canonical exam for which the exam offering is being
159      *                  validated
160      * @param examTypeKey           the identifier for the exam type to be validated
161      * @param validationTypeKey     the identifier for the validation Type
162      * @param examOfferingInfo      the exam offering to be validated
163      * @param contextInfo           information containing the principalId and
164      *                              locale information about the caller of
165      *                              service operation
166      * @return a list of validation results or an empty list if validation
167      *         succeeded
168      * @throws DoesNotExistException        validationTypeKey or examTypeKey is not found
169      * @throws InvalidParameterException    examOfferingInfo or contextInfo is not valid
170      * @throws MissingParameterException    validationTypeKey, examTypeKey, examOfferingInfo, or
171      *                                      contextInfo is missing or null
172      * @throws OperationFailedException     unable to complete request
173      * @throws PermissionDeniedException    authorization failure
174      */
175     public List<ValidationResultInfo> validateExamOffering(@WebParam(name = "termId") String termId,
176                                                            @WebParam(name = "examId") String examId,
177                                                            @WebParam(name = "examTypeKey") String examTypeKey,
178                                                            @WebParam(name = "validationTypeKey") String validationTypeKey,
179                                                            @WebParam(name = "examOfferingInfo") ExamOfferingInfo examOfferingInfo,
180                                                            @WebParam(name = "contextInfo") ContextInfo contextInfo)
181             throws DoesNotExistException,
182             InvalidParameterException,
183             MissingParameterException,
184             OperationFailedException,
185             PermissionDeniedException;
186 
187     /**
188      * Creates a new Exam Offering.
189      *
190      * @param termId    Unique key of the term for which the exam offering is being
191      *                  created
192      * @param examId    Unique key of the canonical exam for which the exam offering is being
193      *                  created
194      * @param examTypeKey       a unique identifier for the Type of the new exam
195      * @param examOfferingInfo  the data with which to create the exam
196      * @param contextInfo       information containing the principalId and locale
197      *                          information about the caller of service operation
198      * @return the new exam offering created
199      * @throws DataValidationErrorException supplied data is invalid
200      * @throws DoesNotExistException examTypeKey does not exist or is not supported
201      * @throws InvalidParameterException examOfferingInfo or contextInfo is not valid
202      * @throws MissingParameterException examTypeKey, examOfferingInfo, or
203      *         contextInfo is missing or null
204      * @throws OperationFailedException unable to complete request
205      * @throws PermissionDeniedException an authorization failure occurred
206      * @throws ReadOnlyException an attempt at supplying information designated as read only
207      */
208     public ExamOfferingInfo createExamOffering(@WebParam(name = "termId") String termId,
209                                                @WebParam(name = "examId") String examId,
210                                                @WebParam(name = "examTypeKey") String examTypeKey,
211                                                @WebParam(name = "examOfferingInfo") ExamOfferingInfo examOfferingInfo,
212                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
213             throws DataValidationErrorException,
214             DoesNotExistException,
215             InvalidParameterException,
216             MissingParameterException,
217             OperationFailedException,
218             PermissionDeniedException,
219             ReadOnlyException;
220 
221     /**
222      * Updates an existing exam offering.
223      *
224      * @param examOfferingId        the identifier for the exam offering to be updated
225      * @param examOfferingInfo      the new data for the exam offering
226      * @param contextInfo   information containing the principalId and locale
227      *        information about the caller of service operation
228      * @return the updated object
229      * @throws DataValidationErrorException supplied data is invalid (xml)
230      * @throws DoesNotExistException examOfferingId is not found
231      * @throws InvalidParameterException examOfferingInfo or contextInfo is not valid
232      * @throws MissingParameterException examOfferingId, examOfferingInfo or
233      *         contextInfo is missing or null
234      * @throws OperationFailedException unable to complete request
235      * @throws PermissionDeniedException an authorization failure occurred
236      * @throws ReadOnlyException an attempt was made to change information designated as read only
237      * @throws VersionMismatchException an optimistic locking failure or the action was attempted on an out
238      * of data version
239      */
240     public ExamOfferingInfo updateExamOffering (@WebParam(name = "examOfferingId") String examOfferingId,
241                                                 @WebParam(name = "examOfferingInfo") ExamOfferingInfo examOfferingInfo,
242                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo)
243             throws DataValidationErrorException,
244             DoesNotExistException,
245             InvalidParameterException,
246             MissingParameterException,
247             OperationFailedException,
248             PermissionDeniedException,
249             ReadOnlyException,
250             VersionMismatchException;
251 
252     /**
253      * Deletes an existing exam offering.
254      *
255      * @param examOfferingId    the identifier for the exam offering to be deleted
256      * @param contextInfo       information containing the principalId and locale
257      *                          information about the caller of service operation
258      * @return the status of the operation
259 
260      * @throws DoesNotExistException examOfferingId is not found
261      * @throws InvalidParameterException contextInfo is not valid
262      * @throws MissingParameterException examOfferingId, or
263      *         contextInfo is missing or null
264      * @throws OperationFailedException unable to complete request
265      * @throws PermissionDeniedException an authorization failure occurred
266      */
267     public StatusInfo deleteExamOffering(@WebParam(name = "examOfferingId") String examOfferingId,
268                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
269             throws DoesNotExistException,
270             InvalidParameterException,
271             MissingParameterException,
272             OperationFailedException,
273             PermissionDeniedException;
274 
275     /**
276      * Change the state of an exam offering.
277      *
278      * @param examOfferingId    the identifier for the exam offering whose state is to be changed
279      * @param stateKey          the state to change to
280      * @param contextInfo       information containing the principalId and locale
281      *                          information about the caller of service operation
282      * @return the status of the operation
283 
284      * @throws DoesNotExistException examOfferingId is not found
285      * @throws InvalidParameterException contextInfo is not valid
286      * @throws MissingParameterException examOfferingId, or
287      *         contextInfo is missing or null
288      * @throws OperationFailedException unable to complete request
289      * @throws PermissionDeniedException an authorization failure occurred
290      */
291     public StatusInfo changeExamOfferingState(@WebParam(name = "examOfferingId") String examOfferingId,
292                                               @WebParam(name = "stateKey") String stateKey,
293                                               @WebParam(name = "contextInfo") ContextInfo contextInfo)
294             throws DoesNotExistException,
295             InvalidParameterException,
296             MissingParameterException,
297             OperationFailedException,
298             PermissionDeniedException;
299 
300     /**
301      * Retrieves a list of ExamOfferings that are associated with a specified ExamPeriod id.
302      *
303      * @param examPeriodId      The id of the ExamPeriod these ExamOfferings are associated with
304      * @param contextInfo       Context information containing the principalId and locale
305      *                          information about the caller of service operation
306      * @return List of exam offerings associated with the ExamPeriod that match the given examPeriodId
307      * @throws DoesNotExistException     One or more examOfferingIds not found
308      * @throws InvalidParameterException contextInfo is invalid
309      * @throws MissingParameterException examPeriodId or contextInfo are absent (missing or null)
310      * @throws OperationFailedException  unable to complete request
311      * @throws PermissionDeniedException authorization failure
312      */
313     public List<ExamOfferingInfo> getExamOfferingsByExamPeriod (@WebParam(name = "examPeriodId") String examPeriodId,
314                                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo)
315             throws DoesNotExistException,
316             InvalidParameterException,
317             MissingParameterException,
318             OperationFailedException,
319             PermissionDeniedException;
320 
321     /**
322      * Validates an ExamOfferingRelation.
323      *
324      * @param formatOfferingId  Unique key of the FormatOffering for which the relation is being validated
325      * @param examOfferingId    Unique key of the ExamOffering for which the relation is being validated
326      * @param examOfferingTypeKey         the identifier of the ExamOfferingRelation type to be validated
327      * @param validationTypeKey                         the identifier for the validation Type
328      * @param examOfferingRelationInfo    the ExamOfferingRelation record to be validated
329      * @param contextInfo                               information containing the principalId and
330      *                                                  locale information about the caller of
331      *                                                  service operation
332      * @return a list of validation results or an empty list if validation succeeded
333      * @throws DoesNotExistException        validationTypeKey or examOfferingTypeKey is not found
334      * @throws InvalidParameterException    examOfferingRelationInfo or contextInfo is not valid
335      * @throws MissingParameterException    validationTypeKey, examOfferingTypeKey, examOfferingRelationInfo, or
336      *                                      contextInfo is missing or null
337      * @throws OperationFailedException     unable to complete request
338      * @throws PermissionDeniedException    authorization failure
339      */
340     public List<ValidationResultInfo> validateExamOfferingRelation(@WebParam(name = "formatOfferingId") String formatOfferingId,
341                                                                    @WebParam(name = "examOfferingId") String examOfferingId,
342                                                                    @WebParam(name = "examOfferingTypeKey") String examOfferingTypeKey,
343                                                                    @WebParam(name = "validationTypeKey") String validationTypeKey,
344                                                                    @WebParam(name = "examOfferingRelationInfo") ExamOfferingRelationInfo examOfferingRelationInfo,
345                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
346             throws DoesNotExistException,
347             InvalidParameterException,
348             MissingParameterException,
349             OperationFailedException,
350             PermissionDeniedException;
351 
352     /**
353      * Creates a new ExamOfferingRelation.
354      *
355      * @param formatOfferingId  Unique key of the FormatOffering for which the relation is being created
356      * @param examOfferingId    Unique key of the ExamOffering for which the relation is being created
357      * @param examOfferingTypeKey         a unique identifier for the Type of the new ExamOfferingRelation
358      * @param examOfferingRelationInfo    the data with which to create the ExamOfferingRelation
359      * @param contextInfo                               information containing the principalId and locale
360      *                                                  information about the caller of service operation
361      * @return the new ExamOfferingRelation created
362      * @throws DataValidationErrorException supplied data is invalid
363      * @throws DoesNotExistException examOfferingTypeKey does not exist or is not supported
364      * @throws InvalidParameterException examOfferingRelationInfo or contextInfo is not valid
365      * @throws MissingParameterException examOfferingTypeKey, examOfferingRelationInfo, or
366      *         contextInfo is missing or null
367      * @throws OperationFailedException unable to complete request
368      * @throws PermissionDeniedException an authorization failure occurred
369      * @throws ReadOnlyException an attempt at supplying information designated as read only
370      */
371     public ExamOfferingRelationInfo createExamOfferingRelation(@WebParam(name = "formatOfferingId") String formatOfferingId,
372                                                                @WebParam(name = "examOfferingId") String examOfferingId,
373                                                                @WebParam(name = "examOfferingTypeKey") String examOfferingTypeKey,
374                                                                @WebParam(name = "examOfferingRelationInfo") ExamOfferingRelationInfo examOfferingRelationInfo,
375                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
376             throws DataValidationErrorException,
377             DoesNotExistException,
378             InvalidParameterException,
379             MissingParameterException,
380             OperationFailedException,
381             PermissionDeniedException,
382             ReadOnlyException;
383 
384     /**
385      * Updates an existing ExamOfferingRelation.
386      *
387      * @param examOfferingRelationId      the identifier for the ExamOfferingRelation to be updated
388      * @param examOfferingRelationInfo    the new data for the ExamOffering
389      * @param contextInfo   information containing the principalId and locale
390      *        information about the caller of service operation
391      * @return the updated object
392      * @throws DataValidationErrorException supplied data is invalid (xml)
393      * @throws DoesNotExistException examOfferingRelationId is not found
394      * @throws InvalidParameterException examOfferingRelationInfo or contextInfo is not valid
395      * @throws MissingParameterException examOfferingRelationId, examOfferingRelationInfo or
396      *         contextInfo is missing or null
397      * @throws OperationFailedException unable to complete request
398      * @throws PermissionDeniedException an authorization failure occurred
399      * @throws ReadOnlyException an attempt was made to change information designated as read only
400      * @throws VersionMismatchException an optimistic locking failure or the action was attempted on an out
401      * of data version
402      */
403     public ExamOfferingRelationInfo updateExamOfferingRelation (@WebParam(name = "examOfferingRelationId") String examOfferingRelationId,
404                                                                 @WebParam(name = "examOfferingRelationInfo") ExamOfferingRelationInfo examOfferingRelationInfo,
405                                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo)
406             throws DataValidationErrorException,
407             DoesNotExistException,
408             InvalidParameterException,
409             MissingParameterException,
410             OperationFailedException,
411             PermissionDeniedException,
412             ReadOnlyException,
413             VersionMismatchException;
414 
415     /**
416      * Deletes an existing ExamOfferingRelation.
417      *
418      * @param examOfferingRelationId  the identifier for the ExamOfferingRelation to be deleted
419      * @param contextInfo                           information containing the principalId and locale
420      *                                              information about the caller of service operation
421      * @return the status of the operation
422      *
423      * @throws DoesNotExistException examId is not found
424      * @throws InvalidParameterException contextInfo is not valid
425      * @throws MissingParameterException examOfferingRelationId, or
426      *         contextInfo is missing or null
427      * @throws OperationFailedException unable to complete request
428      * @throws PermissionDeniedException an authorization failure occurred
429      */
430     public StatusInfo deleteExamOfferingRelation(@WebParam(name = "examOfferingRelationId") String examOfferingRelationId,
431                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo)
432             throws DoesNotExistException,
433             InvalidParameterException,
434             MissingParameterException,
435             OperationFailedException,
436             PermissionDeniedException;
437 
438     /**
439      * Retrieves information about a ExamOfferingRelation relationship object.
440      *
441      * @param examOfferingRelationId  the id of the relationship.
442      * @param contextInfo                           Context information containing the principalId and locale
443      *                                              information about the caller of service operation
444      * @return a ExamOfferingRelation relationship whose id matches the given id
445      * @throws DoesNotExistException if the relationship does not exist
446      * @throws InvalidParameterException contextInfo is invalid
447      * @throws MissingParameterException examOfferingRelationId or contextInfo are absent
448      * (missing or null)
449      * @throws OperationFailedException unable to complete request
450      * @throws PermissionDeniedException an authorization failure occurred
451      */
452     public ExamOfferingRelationInfo getExamOfferingRelation(@WebParam(name = "examOfferingRelationId") String examOfferingRelationId,
453                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
454             throws DoesNotExistException,
455             InvalidParameterException,
456             MissingParameterException,
457             OperationFailedException,
458             PermissionDeniedException;
459 
460     /**
461      * Retrieves a list of ExamOfferingRelations from a list of ids. The returned list may be in any order and
462      * if duplicates ids are supplied, a unique set may or may not be returned.
463      *
464      * @param examOfferingRelationIds the relationship ids.
465      * @param contextInfo                           Context information containing the principalId and locale
466      *                                              information about the caller of service operation
467      * @return a list of ExamOfferingRelations
468      * @throws DoesNotExistException a relationshipId in the list was not found
469      * @throws InvalidParameterException contextInfo is invalid
470      * @throws MissingParameterException  	relationshipIds, a relationshipId in the relationshipIds, or
471      * contextInfo is missing or null
472      * @throws OperationFailedException unable to complete request
473      * @throws PermissionDeniedException an authorization failure occurred
474      */
475     public List<ExamOfferingRelationInfo> getExamOfferingRelationsByIds(@WebParam(name = "examOfferingRelationIds") List<String> examOfferingRelationIds,
476                                                                         @WebParam(name = "contextInfo") ContextInfo contextInfo)
477             throws DoesNotExistException,
478             InvalidParameterException,
479             MissingParameterException,
480             OperationFailedException,
481             PermissionDeniedException;
482 
483     /**
484      * Retrieves a list of ExamOfferingRelation Ids by relation type.
485      *
486      * @param relationshipTypeKey   an identifier for a ExamOfferingRelation Type
487      * @param contextInfo           Context information containing the principalId and locale
488      *                              information about the caller of service operation
489      * @return a list of ExamOfferingRelation identifiers matching relationshipTypeKey or an empty list if none found
490      * @throws InvalidParameterException contextInfo is invalid
491      * @throws MissingParameterException relationshipTypeKey or contextInfo is missing or null
492      * @throws OperationFailedException unable to complete request
493      * @throws PermissionDeniedException an authorization failure occurred
494      */
495     public List<String> getExamOfferingRelationIdsByType(@WebParam(name = "relationshipTypeKey") String relationshipTypeKey,
496                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
497             throws InvalidParameterException,
498             MissingParameterException,
499             OperationFailedException,
500             PermissionDeniedException;
501 
502     /**
503      * Retrieves a list of ExamOfferingRelations to the given FormatOffering.
504      *
505      * @param formatOfferingId the identifier for the FormatOffering
506      * @param contextInfo  Context information containing the principalId and locale information about the caller of service operation
507      * @return the ExamOfferingRelations to the given FormatOffering or an empty list if none found
508      * @throws InvalidParameterException contextInfo is invalid
509      * @throws MissingParameterException formatOfferingId or contextInfo is missing or null
510      * @throws OperationFailedException unable to complete request
511      * @throws PermissionDeniedException an authorization failure occurred
512      */
513     public List<ExamOfferingRelationInfo> getExamOfferingRelationsByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId,
514                                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
515             throws InvalidParameterException,
516             MissingParameterException,
517             OperationFailedException,
518             PermissionDeniedException;
519 
520     /**
521      * Retrieves a list of ExamOfferingRelations to the given ExamOffering.
522      *
523      * @param examOfferingId the identifier for the ExamOffering
524      * @param contextInfo  Context information containing the principalId and locale information about the caller of service operation
525      * @return the ExamOfferingRelations to the given ExamOffering or an empty list if none found
526      * @throws InvalidParameterException contextInfo is invalid
527      * @throws MissingParameterException examOfferingId or contextInfo is missing or null
528      * @throws OperationFailedException unable to complete request
529      * @throws PermissionDeniedException an authorization failure occurred
530      */
531     public List<ExamOfferingRelationInfo> getExamOfferingRelationsByExamOffering(@WebParam(name = "examOfferingId") String examOfferingId,
532                                                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo)
533             throws InvalidParameterException,
534             MissingParameterException,
535             OperationFailedException,
536             PermissionDeniedException;
537 
538     /**
539      * Retrieves a list of ExamOfferingRelations Ids that are associated with an ActivityOffering id.
540      *
541      * @param activityOfferingId the identifier for the ActivityOffering
542      * @param contextInfo  Context information containing the principalId and locale information about the caller of service operation
543      * @return the Ids of the ExamOfferingRelations for the given ActivityOffering Id or an empty list if none found
544      * @throws InvalidParameterException contextInfo is invalid
545      * @throws MissingParameterException activityOfferingId or contextInfo is missing or null
546      * @throws OperationFailedException unable to complete request
547      * @throws PermissionDeniedException an authorization failure occurred
548      */
549     public List<String> getExamOfferingRelationIdsByActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId,
550                                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo)
551             throws InvalidParameterException,
552             MissingParameterException,
553             OperationFailedException,
554             PermissionDeniedException;
555 
556     /**
557      * Searches for ExamOfferingRelations that meet the given search criteria.
558      *
559      * @param criteria    the search criteria
560      * @param contextInfo information containing the principalId and locale
561      *                    information about the caller of service operation
562      * @return a list of ExamOfferingRelation Ids matching the criteria
563      * @throws InvalidParameterException criteria or contextInfo is not valid
564      * @throws MissingParameterException criteria or contextInfo is missing or
565      *                                   null
566      * @throws OperationFailedException  unable to complete request
567      * @throws PermissionDeniedException an authorization failure occurred
568      */
569     public List<String> searchForExamOfferingRelationIds(@WebParam(name = "criteria") QueryByCriteria criteria,
570                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
571             throws InvalidParameterException,
572             MissingParameterException,
573             OperationFailedException,
574             PermissionDeniedException;
575 
576     /**
577      * Searches for ExamOfferingRelations that meet the given search criteria.
578      *
579      * @param criteria    the search criteria
580      * @param contextInfo information containing the principalId and locale
581      *                    information about the caller of service operation
582      * @return a list of ExamOfferingRelations matching the criteria
583      * @throws InvalidParameterException criteria or contextInfo is not valid
584      * @throws MissingParameterException criteria or contextInfo is missing or
585      *                                   null
586      * @throws OperationFailedException  unable to complete request
587      * @throws PermissionDeniedException an authorization failure occurred
588      */
589     public List<ExamOfferingRelationInfo> searchForExamOfferingRelations (@WebParam(name = "criteria") QueryByCriteria criteria,
590                                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
591             throws InvalidParameterException,
592             MissingParameterException,
593             OperationFailedException,
594             PermissionDeniedException;
595 
596 }