View Javadoc

1   /**
2    * Copyright 2010 The Kuali Foundation
3    *
4    * Licensed under the the Educational Community License, Version 1.0
5    * (the "License"); you may not use this file except in compliance
6    * with the License.  You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13   * implied.  See the License for the specific language governing
14   * permissions and limitations under the License.
15   */
16  
17  package org.kuali.student.enrollment.courseoffering.service;
18  
19  import org.kuali.rice.core.api.criteria.QueryByCriteria;
20  import org.kuali.student.enrollment.courseoffering.dto.AOClusterVerifyResultsInfo;
21  import org.kuali.student.enrollment.courseoffering.dto.ActivityOfferingClusterInfo;
22  import org.kuali.student.enrollment.courseoffering.dto.ActivityOfferingDisplayInfo;
23  import org.kuali.student.enrollment.courseoffering.dto.ActivityOfferingInfo;
24  import org.kuali.student.enrollment.courseoffering.dto.CourseOfferingDisplayInfo;
25  import org.kuali.student.enrollment.courseoffering.dto.CourseOfferingInfo;
26  import org.kuali.student.enrollment.courseoffering.dto.FormatOfferingInfo;
27  import org.kuali.student.enrollment.courseoffering.dto.RegistrationGroupInfo;
28  import org.kuali.student.enrollment.courseoffering.dto.SeatPoolDefinitionInfo;
29  import org.kuali.student.enrollment.courseofferingset.dto.SocRolloverResultItemInfo;
30  import org.kuali.student.r2.common.dto.BulkStatusInfo;
31  import org.kuali.student.r2.common.dto.ContextInfo;
32  import org.kuali.student.r2.common.dto.StatusInfo;
33  import org.kuali.student.r2.common.dto.TimeOfDayInfo;
34  import org.kuali.student.r2.common.dto.ValidationResultInfo;
35  import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
36  import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
37  import org.kuali.student.r2.common.exceptions.DependentObjectsExistException;
38  import org.kuali.student.r2.common.exceptions.DoesNotExistException;
39  import org.kuali.student.r2.common.exceptions.InvalidParameterException;
40  import org.kuali.student.r2.common.exceptions.MissingParameterException;
41  import org.kuali.student.r2.common.exceptions.OperationFailedException;
42  import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
43  import org.kuali.student.r2.common.exceptions.ReadOnlyException;
44  import org.kuali.student.r2.common.exceptions.VersionMismatchException;
45  import org.kuali.student.r2.common.util.constants.CourseOfferingServiceConstants;
46  import org.kuali.student.r2.core.class1.type.dto.TypeInfo;
47  import org.kuali.student.r2.core.scheduling.dto.TimeSlotInfo;
48  
49  import javax.jws.WebParam;
50  import javax.jws.WebService;
51  import javax.jws.soap.SOAPBinding;
52  import java.util.List;
53  
54  /**
55   * Course Offering is a class II service supporting the process of offering
56   * courses for student registration.
57   * <p/>
58   * Courses are offered for a specific term which is associated with a specific
59   * Academic Calendar. At the canonical level a course is defined by formats for
60   * which the course will be offered. Each format describes the activity types
61   * that comprise that format, e.g., lecture and lab.
62   * <p/>
63   * The purpose of multiple formats is to support different formats based on a
64   * term type, e.g., Fall versus Spring offering, or to offer multiple formats in
65   * the same term, e.g., in person (traditional) versus online. Offering a course
66   * is the process of creating specific instances of the course, and for each
67   * format to be offered in the selected term, creating a specified number of
68   * each activity type that comprises the format, e.g. five (5) lectures and ten
69   * (10) labs of Biology 101.
70   * <p/>
71   * Individual activity offerings correspond to events in a scheduling system,
72   * each with a meeting pattern. The term 'section' varies by institution, but
73   * refers to either the individual activity offering, or it refers to the
74   * combination of activity offerings, when the course has more than one activity
75   * type, that the student registers in as part of that course.
76   * <p/>
77   * To avoid confusion, this service introduces a new entity to capture the
78   * second definition of section. A registration group represents a valid
79   * combination of activity offerings, even if the number is one, in which a
80   * student registers. The design supports unrestricted matching, e.g., any
81   * lecture with any lab, as well as specific matching, e.g., lecture 1 with lab
82   * A or B, and lecture 2 with lab C or D.
83   * <p/>
84   * @version: 0.0.7
85   *
86   * @author Kuali Student Team (Kamal)
87   */
88  
89  @WebService(name = "CourseOfferingService", serviceName = "CourseOfferingService", portName = "CourseOfferingService", targetNamespace = CourseOfferingServiceConstants.NAMESPACE)
90  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
91  
92  public interface CourseOfferingService
93          extends CourseOfferingServiceBusinessLogic {
94  
95  
96      /**
97       * This method returns the TypeInfo for a given course offering type key.
98       *
99       * @param courseOfferingTypeKey the unique identifier for the type
100      * @param contextInfo           information containing the principalId and
101      *                              locale information about the caller of
102      *                              service operation
103      * @return the type requested
104      * @throws DoesNotExistException     courseOfferingTypeKey is not found
105      * @throws InvalidParameterException contextInfo is not valid
106      * @throws MissingParameterException courseOfferingTypeKey or contextInfo is
107      *                                   missing or null
108      * @throws OperationFailedException  unable to complete request
109      * @throws PermissionDeniedException an authorization failure occurred
110      */
111     public TypeInfo getCourseOfferingType(@WebParam(name = "courseOfferingTypeKey") String courseOfferingTypeKey,
112                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
113             throws DoesNotExistException,
114             InvalidParameterException,
115             MissingParameterException,
116             OperationFailedException,
117             PermissionDeniedException;
118 
119     /**
120      * This method returns the valid course offering types.
121      *
122      * @param contextInfo information containing the principalId and locale
123      *                    information about the caller of service operation
124      * @return a list of valid CourseOffering Types
125      * @throws InvalidParameterException contextInfo is not valid
126      * @throws MissingParameterException contextInfo is missing or null
127      * @throws OperationFailedException  unable to complete request
128      * @throws PermissionDeniedException an authorization failure occurred
129      */
130     public List<TypeInfo> getCourseOfferingTypes(@WebParam(name = "contextInfo") ContextInfo contextInfo)
131             throws InvalidParameterException,
132             MissingParameterException,
133             OperationFailedException,
134             PermissionDeniedException;
135 
136     /**
137      * This method returns the valid instructor (LPR) types for a CourseOffering
138      * type.
139      *
140      * @param courseOfferingTypeKey a unqiue identifier for a CourseOffering
141      *                              type
142      * @param contextInfo           information containing the principalId and
143      *                              locale information about the caller of
144      *                              service operation
145      * @return a list of valid instructor types
146      * @throws DoesNotExistException     deprecated
147      * @throws InvalidParameterException contextInfo is not valid
148      * @throws MissingParameterException courseOfferingTypeKey or contextInfo is
149      *                                   missing or null
150      * @throws OperationFailedException  unable to complete request
151      * @throws PermissionDeniedException an authorization failure occurred
152      */
153     public List<TypeInfo> getInstructorTypesForCourseOfferingType(@WebParam(name = "courseOfferingTypeKey") String courseOfferingTypeKey,
154                                                                   @WebParam(name = "contextInfo") ContextInfo contextInfo)
155             throws DoesNotExistException,
156             InvalidParameterException,
157             MissingParameterException,
158             OperationFailedException,
159             PermissionDeniedException;
160 
161     /**
162      * Retrieves a single CourseOffering by a CourseOffering Id.
163      *
164      * @param courseOfferingId the identifier for the CourseOffering to be
165      *                         retrieved
166      * @param contextInfo      information containing the principalId and locale
167      *                         information about the caller of service
168      *                         operation
169      * @throws DoesNotExistException     courseOfferingId is not found
170      * @throws InvalidParameterException contextInfo is not valid
171      * @throws MissingParameterException courseOfferingId or contextInfo is
172      *                                   missing or null
173      * @throws OperationFailedException  unable to complete request
174      * @throws PermissionDeniedException an authorization failure occurred
175      */
176     public CourseOfferingInfo getCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId,
177                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo)
178             throws DoesNotExistException,
179             InvalidParameterException,
180             MissingParameterException,
181             OperationFailedException,
182             PermissionDeniedException;
183 
184     /**
185      * Retrieves a single CourseOfferingDisplayInfo by a CourseOffering Id.
186      *
187      * @param courseOfferingId an identifier for a CourseOffering
188      * @param contextInfo      information containing the principalId and locale
189      *                         information about the caller of service
190      *                         operation
191      * @return the CourseOfferingDisplay requested
192      * @throws DoesNotExistException     courseOfferingId does not exist
193      * @throws InvalidParameterException contextInfo is not valid
194      * @throws MissingParameterException courseOfferingId or contextInfo is
195      *                                   missing or null
196      * @throws OperationFailedException  unable to complete request
197      * @throws PermissionDeniedException an authorization failure occurred
198      */
199     public CourseOfferingDisplayInfo getCourseOfferingDisplay(@WebParam(name = "courseOfferingId") String courseOfferingId,
200                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo)
201             throws DoesNotExistException,
202             InvalidParameterException,
203             MissingParameterException,
204             OperationFailedException,
205             PermissionDeniedException;
206 
207     /**
208      * Retrieves a list of CourseOfferings from a list of CourseOffering Ids.
209      * The returned list may be in any order and if duplicate Ids are supplied,
210      * a unique set may or may not be returned.
211      *
212      * @param courseOfferingIds a list of CourseOffering identifiers
213      * @param contextInfo       information containing the principalId and
214      *                          locale information about the caller of service
215      *                          operation
216      * @throws DoesNotExistException     a courseOfferingId in the list is not
217      *                                   found
218      * @throws InvalidParameterException contextInfo is not valid
219      * @throws MissingParameterException courseOfferingIds, an Id in the
220      *                                   courseOfferingIds, or contextInfo is
221      *                                   missing or null
222      * @throws OperationFailedException  unable to complete request
223      * @throws PermissionDeniedException an authorization failure occurred
224      */
225     public List<CourseOfferingInfo> getCourseOfferingsByIds(@WebParam(name = "courseOfferingIds") List<String> courseOfferingIds,
226                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
227             throws DoesNotExistException,
228             InvalidParameterException,
229             MissingParameterException,
230             OperationFailedException,
231             PermissionDeniedException;
232 
233     /**
234      * Retrieve a list of CourseOfferingDisplays corresponding to a list of
235      * CourseOfferingIds. The returned list may be in any order and if duplicate
236      * Ids are supplied, a unique set may or may not be returned.
237      *
238      * @param courseOfferingIds a list of CourseOffering identifiers
239      * @param contextInfo       information containing the principalId and
240      *                          locale information about the caller of service
241      *                          operation
242      * @return a list of CourseOfferingDisplays
243      * @throws DoesNotExistException     a courseOfferingId in the list not
244      *                                   found
245      * @throws InvalidParameterException contextInfo is not valid
246      * @throws MissingParameterException courseOfferingIds, an Id in
247      *                                   courseOfferingIds, or contextInfo is
248      *                                   missing or null
249      * @throws OperationFailedException  unable to complete request
250      * @throws PermissionDeniedException an authorization failure occurred
251      */
252     public List<CourseOfferingDisplayInfo> getCourseOfferingDisplaysByIds(@WebParam(name = "courseOfferingIds") List<String> courseOfferingIds,
253                                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
254             throws DoesNotExistException,
255             InvalidParameterException,
256             MissingParameterException,
257             OperationFailedException,
258             PermissionDeniedException;
259 
260     /**
261      * Retrieve a list of CourseOffering Ids by CourseOffering Type.
262      *
263      * @param courseOfferingTypeKey the identifier for a CourseOffering Type
264      * @param contextInfo           information containing the principalId and
265      *                              locale information about the caller of
266      *                              service operation
267      * @return a list of CourseOffering identifiers matching
268      *         courseOfferingTypeKey or an empty list if none found
269      * @throws DoesNotExistException     deprecated
270      * @throws InvalidParameterException contextInfo is not valid
271      * @throws MissingParameterException courseOfferingTypeKey or contextInfo is
272      *                                   missing or null
273      * @throws OperationFailedException  unable to complete request
274      * @throws PermissionDeniedException an authorization failure occurred
275      */
276     public List<String> getCourseOfferingIdsByType(@WebParam(name = "courseOfferingTypeKey") String courseOfferingTypeKey,
277                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
278             throws DoesNotExistException,
279             InvalidParameterException,
280             MissingParameterException,
281             OperationFailedException,
282             PermissionDeniedException;
283 
284     /**
285      * Retrieve CourseOfferings by canonical Course Id across all Terms.
286      *
287      * @param courseId    the identifier for a Course
288      * @param contextInfo information containing the principalId and locale
289      *                    information about the caller of service operation
290      * @return a list of CourseOfferings of the given Course or an empty list if
291      *         none found
292      * @throws DoesNotExistException     courseId is not found
293      * @throws InvalidParameterException contextInfo is not valid
294      * @throws MissingParameterException courseId orcontextInfo is missing or
295      *                                   null
296      * @throws OperationFailedException  unable to complete request
297      * @throws PermissionDeniedException an authorization failure occurred
298      */
299     public List<CourseOfferingInfo> getCourseOfferingsByCourse(@WebParam(name = "courseId") String courseId,
300                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
301             throws DoesNotExistException,
302             InvalidParameterException,
303             MissingParameterException,
304             OperationFailedException,
305             PermissionDeniedException;
306 
307     /**
308      * Retrieve a list of CourseOfferings by canonical Course Id and Term. There
309      * may be more than one CourseOffering for a Course in a single Term.
310      *
311      * @param courseId    the identifier for a Course
312      * @param termId      the identifier for a Term
313      * @param contextInfo information containing the principalId and locale
314      *                    information about the caller of service operation
315      * @return a list of CourseOfferings of the given Course offered in the
316      *         given Term or an empty list if none found
317      * @throws DoesNotExistException     courseId is not found
318      * @throws InvalidParameterException contextInfo is not valid
319      * @throws MissingParameterException courseId, termId, or contextInfo is
320      *                                   missing or null
321      * @throws OperationFailedException  unable to complete request
322      * @throws PermissionDeniedException an authorization failure occured
323      */
324     public List<CourseOfferingInfo> getCourseOfferingsByCourseAndTerm(@WebParam(name = "courseId") String courseId,
325                                                                       @WebParam(name = "termId") String termId,
326                                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo)
327             throws DoesNotExistException,
328             InvalidParameterException,
329             MissingParameterException,
330             OperationFailedException,
331             PermissionDeniedException;
332 
333     /**
334      * Retrieves a list of CourseOffering Ids for CourseOfferings offered in a
335      * given term. If useIncludedTerms is true, then include any CourseOfferings
336      * offered within child Terms of the given Term.
337      *
338      * @param termId          the identifier for a Term
339      * @param useIncludedTerm true to include CourseOfferings of child Terms of
340      *                        the given Term, false to include only
341      *                        CourseOfferings offered in the given Term
342      * @param contextInfo     information containing the principalId and locale
343      *                        information about the caller of service operation
344      * @return the list of CourseOffering Ids offered in the given Term or an
345      *         empty list if none found
346      * @throws DoesNotExistException     deprecated
347      * @throws InvalidParameterException contextInfo is not valid
348      * @throws MissingParameterException termId or contextInfo is missing or
349      *                                   null
350      * @throws OperationFailedException  unable to complete request
351      * @throws PermissionDeniedException an authorization failure occurred
352      */
353     public List<String> getCourseOfferingIdsByTerm(@WebParam(name = "termId") String termId,
354                                                    @WebParam(name = "useIncludedTerm") Boolean useIncludedTerm,
355                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
356             throws DoesNotExistException,
357             InvalidParameterException,
358             MissingParameterException,
359             OperationFailedException,
360             PermissionDeniedException;
361 
362     /**
363      * Retrieve a list of CourseOffering Ids for CourseOfferings of a given
364      * subject area offered in the given Term.
365      * <p/>
366      * A CourseOffering will have an official and "other" subject areas>
367      * CourseOfferrings with either official or other subject area that match
368      * are returned.
369      *
370      * @param termId      the identifier for a Term
371      * @param subjectArea a subject area
372      * @param contextInfo information containing the principalId and locale
373      *                    information about the caller of service operation
374      * @return a list of CourseOffering Ids for CourseOfferings matching the
375      *         give subject area and offered in the given Term or an empty list
376      *         if none found
377      * @throws DoesNotExistException     deprecated
378      * @throws InvalidParameterException contextInfo is not valid
379      * @throws MissingParameterException termId, subjectArea, or contextInfo is
380      *                                   missing or null
381      * @throws OperationFailedException  unable to complete request
382      * @throws PermissionDeniedException an authorization failure occurred
383      */
384     public List<String> getCourseOfferingIdsByTermAndSubjectArea(@WebParam(name = "termId") String termId,
385                                                                  @WebParam(name = "subjectArea") String subjectArea,
386                                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo)
387             throws DoesNotExistException,
388             InvalidParameterException,
389             MissingParameterException,
390             OperationFailedException,
391             PermissionDeniedException;
392 
393     /**
394      * Retrieves a list of CourseOfferings for a given Term and Instructor.
395      *
396      * @param termId       the identifier for a Term
397      * @param instructorId the Person Id for an instructor
398      * @param contextInfo  information containing the principalId and locale
399      *                     information about the caller of service operation
400      * @return a list of CourseOfferings for the given Term and instructor or an
401      *         empty list if none found
402      * @throws DoesNotExistException     deprecated
403      * @throws InvalidParameterException contextInfo is not valid
404      * @throws MissingParameterException termId, instructorId, or contextInfo is
405      *                                   missing or null
406      * @throws OperationFailedException  unable to complete request
407      * @throws PermissionDeniedException an authorization failure occurred
408      */
409     public List<CourseOfferingInfo> getCourseOfferingsByTermAndInstructor(@WebParam(name = "termId") String termId,
410                                                                           @WebParam(name = "instructorId") String instructorId,
411                                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
412             throws DoesNotExistException,
413             InvalidParameterException,
414             MissingParameterException,
415             OperationFailedException,
416             PermissionDeniedException;
417 
418     /**
419      * Retrieves a list of CourseOffering Ids for CourseOfferings offered in a
420      * given Term by a units content owner.
421      *
422      * @param termId              the identifier for a Term
423      * @param unitsContentOwnerId the Org Id of the units content owner
424      * @param contextInfo         information containing the principalId and
425      *                            locale information about the caller of service
426      *                            operation
427      * @return a list of CourseOffering Ids for CourseOfferings offered in the
428      *         given Term by the given Org
429      * @throws DoesNotExistException     deprecated
430      * @throws InvalidParameterException contextInfo is not valid
431      * @throws MissingParameterException termId, unisContentOwnerId, or
432      *                                   contextInfo is missing or null
433      * @throws OperationFailedException  unable to complete request
434      * @throws PermissionDeniedException an authorization failure occurred
435      */
436     public List<String> getCourseOfferingIdsByTermAndUnitsContentOwner(@WebParam(name = "termId") String termId,
437                                                                        @WebParam(name = "unitsContentOwnerId") String unitsContentOwnerId,
438                                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo)
439             throws DoesNotExistException,
440             InvalidParameterException,
441             MissingParameterException,
442             OperationFailedException,
443             PermissionDeniedException;
444 
445     /**
446      * Searches for CourseOfferings that meet the given search criteria.
447      *
448      * @param criteria    the search criteria
449      * @param contextInfo information containing the principalId and locale
450      *                    information about the caller of service operation
451      * @return a list of CourseOffering Ids matching the criteria
452      * @throws InvalidParameterException criteria or contextInfo is not valid
453      * @throws MissingParameterException criteria or contextInfo is missing or
454      *                                   null
455      * @throws OperationFailedException  unable to complete request
456      * @throws PermissionDeniedException an authorization failure occurred
457      */
458     public List<String> searchForCourseOfferingIds(@WebParam(name = "criteria") QueryByCriteria criteria,
459                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
460             throws InvalidParameterException,
461             MissingParameterException,
462             OperationFailedException,
463             PermissionDeniedException;
464 
465     /**
466      * Searches for CourseOfferings that meet the given search criteria.
467      *
468      * @param criteria    the search criteria
469      * @param contextInfo information containing the principalId and locale
470      *                    information about the caller of service operation
471      * @return a list of CourseOfferings matching the criteria
472      * @throws InvalidParameterException criteria or contextInfo is not valid
473      * @throws MissingParameterException criteria or contextInfo is missing or
474      *                                   null
475      * @throws OperationFailedException  unable to complete request
476      * @throws PermissionDeniedException an authorization failure occurred
477      */
478     public List<CourseOfferingInfo> searchForCourseOfferings(@WebParam(name = "criteria") QueryByCriteria criteria,
479                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
480             throws InvalidParameterException,
481             MissingParameterException,
482             OperationFailedException,
483             PermissionDeniedException;
484 
485     /**
486      * Get the valid options that can be specified to control canonical Course
487      * to CourseOffering operations.
488      * <p/>
489      * This can happen in several situations: (1) when creating a CourseOffering
490      * from scratch that copies data from the canonical Course
491      * <p/>
492      * (2) when a Course is rolled over and the "use canonical" option is
493      * specified in a rollover
494      * <p/>
495      * (3) when a CourseOffering is explicitly asked to be updated based on the
496      * canonical Course
497      * <p/>
498      * (4) when a course offering is explicitly asked to be validated against
499      * the canonical Course
500      * <p/>
501      * These may identify fields to be copied or not copied or special checks or
502      * comparisons to be made, such as comparing that the credits of the course
503      * are consistent with the specified classroom hours.
504      * <p/>
505      * TODO: The exact types that can be specified here have not yet been
506      * defined
507      *
508      * @param contextInfo information containing the principalId and locale
509      *                    information about the caller of service operation
510      * @return list of option keys used to to indicate the options to be used
511      *         when copying data
512      * @throws InvalidParameterException contextInfo is not valid
513      * @throws MissingParameterException contextInfo is missing or null
514      * @throws OperationFailedException  unable to complete request
515      * @throws PermissionDeniedException an authorization failure occurred
516      */
517     public List<String> getValidCanonicalCourseToCourseOfferingOptionKeys(@WebParam(name = "contextInfo") ContextInfo contextInfo)
518             throws InvalidParameterException,
519             MissingParameterException,
520             OperationFailedException,
521             PermissionDeniedException,
522             ReadOnlyException;
523 
524     /**
525      * Get the valid rollover option keys.
526      * <p/>
527      * This is the list of option keys supported by the rollover operation. Keys
528      * released with kuali student can be found here: https://wiki.kuali.org/display/STUDENT/Course+Offering+Set+Types+and+States#CourseOfferingSetTypesandStates-RolloverOptionKeys
529      *
530      * @param contextInfo information containing the principalId and locale
531      *                    information about the caller of service operation
532      * @return a list of option keys
533      * @throws InvalidParameterException contextInfo is not valid
534      * @throws MissingParameterException contextInfo is missing or null
535      * @throws OperationFailedException  unable to complete request
536      * @throws PermissionDeniedException an authorization failure occurred
537      */
538     public List<String> getValidRolloverOptionKeys(@WebParam(name = "contextInfo") ContextInfo contextInfo)
539             throws InvalidParameterException,
540             MissingParameterException,
541             OperationFailedException,
542             PermissionDeniedException,
543             ReadOnlyException;
544 
545     /**
546      * Validates a CourseOffering. Depending on the value of validationType,
547      * this validation could be limited to tests on just the current
548      * CourseOffering and its directly contained sub-objects or expanded to
549      * perform all tests related to this CourseOffering. If an identifier is
550      * present for the CourseOffering (and/or one of its contained sub-objects)
551      * and a record is found for that identifier, the validation checks if the
552      * CourseOffering can be updated to the new values. If an identifier is not
553      * present or a record does not exist, the validation checks if the object
554      * with the given data can be created.
555      *
556      * @param validationTypeKey     the identifier for the validation Type
557      * @param courseOfferingInfo    the CourseOffering to be validated
558      * @param contextInfo           information containing the principalId and
559      *                              locale information about the caller of
560      *                              service operation
561      * @return a list of validation results or an empty list if validation
562      *         succeeded
563      * @throws DoesNotExistException     validationTypeKey or courseOfferingTypeKey
564      *                                   is not found
565      * @throws InvalidParameterException courseOfferingInfo or contextInfo is
566      *                                   not valid
567      * @throws MissingParameterException validationTypeKey, courseOfferingTypeKey,
568      *                                   courseOfferingInfo, or contextInfo is
569      *                                   missing or null
570      * @throws OperationFailedException  unable to complete request
571      * @throws PermissionDeniedException authorization failure
572      */
573     public List<ValidationResultInfo> validateCourseOffering(@WebParam(name = "validationTypeKey") String validationTypeKey,
574                                                              @WebParam(name = "courseOfferingInfo") CourseOfferingInfo courseOfferingInfo,
575                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
576             throws DoesNotExistException,
577             InvalidParameterException,
578             MissingParameterException,
579             OperationFailedException,
580             PermissionDeniedException;
581 
582     /**
583      * Creates a new course offering from a canonical course.
584      * <p/>
585      * Fields in course offering will be initialized with data from the
586      * canonical.
587      *
588      * @param courseId   Canonical course Id of courseOffering Id that the
589      *                   ActivityOffering will belong to
590      * @param termId     Unique key of the term in which the course is being
591      *                   offered course offering
592      * @param optionKeys options to use when copying data from the canonical
593      * @param context    Context information containing the principalId and
594      *                   locale information about the caller of service
595      *                   operation
596      * @return newly created CourseOfferingInfo
597      * @throws DoesNotExistException        courseId not found
598      * @throws DataValidationErrorException One or more values invalid for this
599      *                                      operation
600      * @throws InvalidParameterException    One or more parameters invalid
601      * @throws MissingParameterException    One or more parameters missing
602      * @throws OperationFailedException     unable to complete request
603      * @throws PermissionDeniedException    authorization failure
604      */
605     public CourseOfferingInfo createCourseOffering(@WebParam(name = "courseId") String courseId,
606                                                    @WebParam(name = "termId") String termId,
607                                                    @WebParam(name = "courseOfferingTypeKey") String courseOfferingTypeKey,
608                                                    @WebParam(name = "courseOfferingInfo") CourseOfferingInfo courseOfferingInfo,
609                                                    @WebParam(name = "optionKeys") List<String> optionKeys,
610                                                    @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
611             DataValidationErrorException, InvalidParameterException,
612             MissingParameterException, OperationFailedException, PermissionDeniedException,
613             ReadOnlyException;
614 
615 
616     /**
617      * Creates a new course offering based on the source course offering.
618      * <p/>
619      * Fields in course offering will be initialized with data from the source
620      * course offering. .
621      *
622      * @param sourceCourseOfferingId The id of the course offering to be rolled
623      *                               over.
624      * @param targetTermId           Unique key of the term in which the course
625      *                               is rolled over into
626      * @param optionKeys             keys that control optional processing
627      * @param context                Context information containing the
628      *                               principalId and locale information about
629      *                               the caller of service operation
630      * @return newly created CourseOfferingInfo
631      * @throws DoesNotExistException        sourceCoId not found
632      * @throws AlreadyExistsException       if the course offering already
633      *                                      exists in the target term and skip
634      *                                      if already exists option is
635      *                                      specified
636      * @throws DataValidationErrorException data in system is not valid or not
637      *                                      valid for an option key specified
638      * @throws InvalidParameterException    One or more parameters invalid
639      * @throws MissingParameterException    One or more parameters missing
640      * @throws OperationFailedException     unable to complete request
641      * @throws PermissionDeniedException    authorization failure
642      */
643     @Override
644     public SocRolloverResultItemInfo rolloverCourseOffering(@WebParam(name = "sourceCourseOfferingId") String sourceCourseOfferingId, @WebParam(name = "targetTermId") String targetTermId, @WebParam(name = "optionKeys") List<String> optionKeys, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException,
645             DoesNotExistException, DataValidationErrorException,
646             InvalidParameterException, MissingParameterException,
647             OperationFailedException, PermissionDeniedException, ReadOnlyException;
648 
649     /**
650      * Updates an existing CourseOffering.
651      *
652      * @param courseOfferingId   Id of CourseOffering to be updated
653      * @param courseOfferingInfo Details of updates to the CourseOffering
654      * @param context            Context information containing the principalId
655      *                           and locale information about the caller of
656      *                           service operation
657      * @return updated CourseOffering
658      * @throws DataValidationErrorException One or more values invalid for this
659      *                                      operation
660      * @throws DoesNotExistException        the CourseOffering does not exist
661      * @throws InvalidParameterException    One or more parameters invalid
662      * @throws MissingParameterException    One or more parameters missing
663      * @throws OperationFailedException     unable to complete request
664      * @throws PermissionDeniedException    authorization failure
665      * @throws VersionMismatchException     The action was attempted on an out
666      *                                      of date version.
667      */
668     public CourseOfferingInfo updateCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "courseOfferingInfo") CourseOfferingInfo courseOfferingInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
669 
670     /**
671      * Changes the state of an existing CourseOffering into another state
672      * provided that it is valid to do so.
673      *
674      * @param courseOfferingId Id of the CourseOffering to be changed.
675      * @param nextStateKey     The State Key into which the identified
676      *                         courseOffering will be placed if the operation
677      *                         succeeds.
678      * @param contextInfo      Context information containing the principalId
679      *                         and locale information about the caller of
680      *                         service operation
681      * @return status of the operation (success, failed)
682      * @throws DoesNotExistException     the identified CourseOffering does not
683      *                                   exist
684      * @throws InvalidParameterException the contextInfo object is invalid
685      * @throws MissingParameterException One or more parameters missing
686      * @throws OperationFailedException  unable to complete request
687      * @throws PermissionDeniedException authorization failure
688      */
689     public StatusInfo changeCourseOfferingState(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "nextStateKey") String nextStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
690 
691     /**
692      * Updates an existing CourseOffering from its canonical. This should
693      * reinitialize and overwrite any changes to the course offering that were
694      * made since its creation with the defaults from the canonical course
695      *
696      * @param courseOfferingId Id of CourseOffering to be updated
697      * @param optionKeys       options to use when copying data from the
698      *                         canonical
699      * @param context          Context information containing the principalId
700      *                         and locale information about the caller of
701      *                         service operation
702      * @return updated CourseOffering
703      * @throws DataValidationErrorException One or more values invalid for this
704      *                                      operation
705      * @throws DoesNotExistException        the CourseOffering does not exist
706      * @throws InvalidParameterException    One or more parameters invalid
707      * @throws MissingParameterException    One or more parameters missing
708      * @throws OperationFailedException     unable to complete request
709      * @throws PermissionDeniedException    authorization failure
710      * @throws VersionMismatchException     The action was attempted on an out
711      *                                      of date version.
712      */
713     @Override
714     public CourseOfferingInfo updateCourseOfferingFromCanonical(@WebParam(name = "courseOfferingId") String courseOfferingId,
715                                                                 @WebParam(name = "optionKeys") List<String> optionKeys,
716                                                                 @WebParam(name = "context") ContextInfo context)
717             throws DataValidationErrorException, DoesNotExistException,
718             InvalidParameterException, MissingParameterException, OperationFailedException,
719             PermissionDeniedException, VersionMismatchException;
720 
721     /**
722      * Deletes an existing CourseOffering.
723      *
724      * @param courseOfferingId the Id of the ActivityOffering to be deleted
725      * @param context          Context information containing the principalId
726      *                         and locale information about the caller of
727      *                         service operation
728      * @return status of the operation (success, failed)
729      * @throws DoesNotExistException          the CourseOffering does not
730      *                                        exist
731      * @throws InvalidParameterException      One or more parameters invalid
732      * @throws MissingParameterException      One or more parameters missing
733      * @throws OperationFailedException       unable to complete request
734      * @throws PermissionDeniedException      authorization failure
735      * @throws DependentObjectsExistException When one or more Format Offering,
736      *                                        Activity Offering, Registration
737      *                                        Group or Seat Pool Definition
738      *                                        exist for course offering.
739      */
740     public StatusInfo deleteCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DependentObjectsExistException;
741 
742     /**
743      * Deletes an existing CourseOffering cascaded style. Deleting a course
744      * offering cascaded style would also delete all the format offering,
745      * activity offerings, registration groups and seat pool definitions within
746      * it. Cross listed course offerings should also be deleted along with
747      * passed in courseOfferingId.
748      *
749      * @param courseOfferingId the Id of the ActivityOffering to be deleted
750      * @param context          Context information containing the principalId
751      *                         and locale information about the caller of
752      *                         service operation
753      * @return status of the operation (success, failed)
754      * @throws DoesNotExistException     the CourseOffering does not exist
755      * @throws InvalidParameterException One or more parameters invalid
756      * @throws MissingParameterException One or more parameters missing
757      * @throws OperationFailedException  unable to complete request
758      * @throws PermissionDeniedException authorization failure
759      */
760     public StatusInfo deleteCourseOfferingCascaded(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
761 
762     /**
763      * Validates / Compares a course offering against it's canonical course.
764      *
765      * @param courseOfferingInfo the course offering information to be tested.
766      * @param context            Context information containing the principalId
767      *                           and locale information about the caller of
768      *                           service operation
769      * @return the results from performing the validation
770      * @throws DoesNotExistException     if the course associated with the
771      *                                   course offering does not exist
772      * @throws InvalidParameterException if a parameter is invalid
773      * @throws MissingParameterException if a parameter is missing
774      * @throws OperationFailedException  unable to complete request
775      * @throws PermissionDeniedException authorization failure
776      */
777     @Override
778     public List<ValidationResultInfo> validateCourseOfferingFromCanonical(@WebParam(name = "courseOfferingInfo") CourseOfferingInfo courseOfferingInfo,
779                                                                           @WebParam(name = "optionKeys") List<String> optionKeys,
780                                                                           @WebParam(name = "context") ContextInfo context)
781             throws DoesNotExistException, 
782             InvalidParameterException,
783             MissingParameterException, 
784             OperationFailedException,
785             PermissionDeniedException;
786 
787     /**
788      * Gets an format offering  based on Id.
789      *
790      * @param formatOfferingId The  Format Offering  identifier
791      * @param context            Context information containing the principalId
792      *                           and locale information about the caller of
793      *                           service operation
794      * @return the FormatOffering identified by the identifier
795      * @throws DoesNotExistException     The Format Offering doesn't exist
796      * @throws InvalidParameterException Invalid formatOfferingId
797      * @throws MissingParameterException Missing formatOfferingId
798      * @throws OperationFailedException  unable to complete request
799      */
800     public FormatOfferingInfo getFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
801 
802     /**
803      * Gets a list of format offering by a course offering id they belong to.
804      *
805      * @param courseOfferingId Course offering identifier
806      * @param context            Context information containing the principalId
807      *                           and locale information about the caller of
808      *                           service operation
809      * @return a list of FormatOffering by course offering
810      * @throws DoesNotExistException     The course offering  doesn't exist
811      * @throws InvalidParameterException Invalid course offering id
812      * @throws MissingParameterException Missing course offering id
813      * @throws OperationFailedException  unable to complete request
814      * @throws PermissionDeniedException authorization failure
815      */
816     public List<FormatOfferingInfo> getFormatOfferingsByCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
817 
818     /**
819      * Creates an  Format Offering  for a course offering
820      *
821      * @param courseOfferingId   Course offering that the  Format Offering
822      *                           belongs to
823      * @param formatId          the identifier for the FormatOffering
824      * @param formatOfferingType the type key of the  Format Offering  template
825      * @param formatOfferingInfo The Format Offering  info object
826      * @return the information about the FormatOffering created
827      * @throws DataValidationErrorException
828      * @throws DoesNotExistException        if courseOfferingId or formatId does
829      *                                      not exist for the course in the
830      *                                      course offering
831      * @throws InvalidParameterException    Invalid course offering id
832      * @throws MissingParameterException    Missing course offering id,
833      *                                      formatOfferingTemplate  or
834      *                                      formatOfferingType
835      * @throws OperationFailedException     unable to complete request
836      * @throws PermissionDeniedException
837      */
838     public FormatOfferingInfo createFormatOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "formatId") String formatId, @WebParam(name = "formatOfferingType") String formatOfferingType, @WebParam(name = "formatOfferingInfo") FormatOfferingInfo formatOfferingInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
839 
840     /**
841      * Update a  Format Offering
842      *
843      * @param formatOfferingId   The  Id formatOffering to be updated
844      * @param formatOfferingInfo The new formatOffering Info
845      * @param context            Context information containing the principalId
846      *                           and locale information about the caller of
847      *                           service operation
848      * @return the updated information about the FormatOffering updated.
849      * @throws DataValidationErrorException One or more values invalid for this
850      *                                      operation
851      * @throws DoesNotExistException        The formatOfferingId doesn't exist
852      * @throws InvalidParameterException    Invalid  formatOfferingId or
853      *                                      formatOffering
854      * @throws MissingParameterException    Missing formatOffering or
855      *                                      formatOfferingId
856      * @throws OperationFailedException     unable to complete request
857      * @throws PermissionDeniedException    authorization failure
858      * @throws VersionMismatchException     stale version being updated
859      */
860     public FormatOfferingInfo updateFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "formatOfferingInfo") FormatOfferingInfo formatOfferingInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
861 
862 
863     /**
864      * Changes the state of an existing FormatOffering to another state provided
865      * that it is valid to do so.
866      *
867      * @param formatOfferingId Id of the FormatOffering to be changed.
868      * @param nextStateKey     The State Key into which the identified
869      *                         FormatOffering will be placed if the operation
870      *                         succeeds.
871      * @param contextInfo      Context information containing the principalId
872      *                         and locale information about the caller of
873      *                         service operation
874      * @return status of the operation (success, failed)
875      * @throws DoesNotExistException     the identified FormatOffering does not
876      *                                   exist
877      * @throws InvalidParameterException the contextInfo object is invalid
878      * @throws MissingParameterException One or more parameters missing
879      * @throws OperationFailedException  unable to complete request
880      * @throws PermissionDeniedException authorization failure
881      */
882     public StatusInfo changeFormatOfferingState(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "nextStateKey") String nextStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
883 
884     /**
885      * Validates a format offering. Depending on the value of validationType,
886      * this validation could be limited to tests on just the current object and
887      * its directly contained sub-objects or expanded to perform all tests
888      * related to this object.
889      *
890      * @param validationType     Identifier of the extent of validation
891      * @param formatOfferingInfo the format offering information to be tested.
892      * @param context            Context information containing the principalId
893      *                           and locale information about the caller of
894      *                           service operation
895      * @return the results from performing the validation
896      * @throws DoesNotExistException     validationTypeKey not found
897      * @throws InvalidParameterException invalid validationTypeKey, formatOfferingInfo
898      * @throws MissingParameterException missing validationTypeKey, formatOfferingInfo
899      * @throws OperationFailedException  unable to complete request
900      * @throws PermissionDeniedException authorization failure
901      */
902     public List<ValidationResultInfo> validateFormatOffering(@WebParam(name = "validationType") String validationType, 
903             @WebParam(name = "formatOfferingInfo") FormatOfferingInfo formatOfferingInfo, 
904             @WebParam(name = "context") ContextInfo context) 
905             throws DoesNotExistException, 
906             InvalidParameterException, 
907             MissingParameterException, 
908             OperationFailedException,
909             PermissionDeniedException;
910 
911 
912     /**
913      * Deletes an  Format Offering
914      *
915      * @param formatOfferingId The  Id formatOffering to be deleted
916      * @param context            Context information containing the principalId
917      *                           and locale information about the caller of
918      *                           service operation
919      * @return status of the operation (success, failed)
920      * @throws DoesNotExistException          The formatOfferingId doesn't
921      *                                        exist
922      * @throws InvalidParameterException      Invalid  formatOfferingId
923      * @throws MissingParameterException      Missing  formatOfferingId
924      * @throws OperationFailedException       unable to complete request
925      * @throws PermissionDeniedException      authorization failure
926      * @throws DependentObjectsExistException When one or more Activity
927      *                                        Offering, Registration Group or
928      *                                        Seat Pool Definition exist for the
929      *                                        format offering.
930      */
931     public StatusInfo deleteFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DependentObjectsExistException;
932 
933 
934     /**
935      * Deletes an  Format Offering with dependent Activity Offering and
936      * Registration group
937      *
938      * @param formatOfferingId The  Id formatOffering to be deleted
939      * @param context            Context information containing the principalId
940      *                           and locale information about the caller of
941      *                           service operation
942      * @return the status of the operation (success/fail)
943      * @throws DoesNotExistException     The formatOfferingId doesn't exist
944      * @throws InvalidParameterException Invalid  formatOfferingId
945      * @throws MissingParameterException Missing  formatOfferingId
946      * @throws OperationFailedException  unable to complete request
947      * @throws PermissionDeniedException authorization failure
948      */
949 
950     public StatusInfo deleteFormatOfferingCascaded(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
951 
952 
953     /**
954      * Searches for FormatOfferings that meet the given search criteria.
955      *
956      * @param criteria    the search criteria
957      * @param contextInfo information containing the principalId and locale
958      *                    information about the caller of service operation
959      * @return a list of CourseOffering Ids matching the criteria
960      * @throws InvalidParameterException criteria or contextInfo is not valid
961      * @throws MissingParameterException criteria or contextInfo is missing or
962      *                                   null
963      * @throws OperationFailedException  unable to complete request
964      * @throws PermissionDeniedException an authorization failure occurred
965      */
966     public List<String> searchForFormatOfferingIds(@WebParam(name = "criteria") QueryByCriteria criteria,
967                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
968             throws InvalidParameterException,
969             MissingParameterException,
970             OperationFailedException,
971             PermissionDeniedException;
972 
973     /**
974      * Searches for FormatOfferings that meet the given search criteria.
975      *
976      * @param criteria    the search criteria
977      * @param contextInfo information containing the principalId and locale
978      *                    information about the caller of service operation
979      * @return a list of CourseOfferings matching the criteria
980      * @throws InvalidParameterException criteria or contextInfo is not valid
981      * @throws MissingParameterException criteria or contextInfo is missing or
982      *                                   null
983      * @throws OperationFailedException  unable to complete request
984      * @throws PermissionDeniedException an authorization failure occurred
985      */
986     public List<FormatOfferingInfo> searchForFormatOfferings(@WebParam(name = "criteria") QueryByCriteria criteria,
987                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
988             throws InvalidParameterException,
989             MissingParameterException,
990             OperationFailedException,
991             PermissionDeniedException;
992 
993     
994     
995     /**
996      * This method returns the TypeInfo for a given activity offering type key.
997      *
998      * @param activityOfferingTypeKey Key of the type
999      * @param context                 Context information containing the
1000      *                                principalId and locale information about
1001      *                                the caller of service operation
1002      * @return Information about the Type
1003      * @throws DoesNotExistException     activityOfferingTypeKey not found
1004      * @throws InvalidParameterException invalid activityOfferingTypeKey
1005      * @throws MissingParameterException missing activityOfferingTypeKey
1006      * @throws OperationFailedException  unable to complete request
1007      * @throws PermissionDeniedException authorization failure
1008      */
1009     public TypeInfo getActivityOfferingType(@WebParam(name = "activityOfferingTypeKey") String activityOfferingTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1010 
1011     /**
1012      * This method returns the valid activity offering types.
1013      *
1014      * @param context Context information containing the principalId and locale
1015      *                information about the caller of service operation
1016      * @return a list of valid activity offering Types
1017      * @throws InvalidParameterException invalid context
1018      * @throws MissingParameterException missing context
1019      * @throws OperationFailedException  unable to complete request
1020      * @throws PermissionDeniedException authorization failure
1021      */
1022     public List<TypeInfo> getActivityOfferingTypes(@WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1023 
1024     /**
1025      * This method returns the valid activity offering types for a given
1026      * canonical activity type
1027      *
1028      * @param activityTypeKey Key of the canonical activity type
1029      * @param context         Context information containing the principalId and
1030      *                        locale information about the caller of service
1031      *                        operation
1032      * @return a list of valid activity offering Types
1033      * @throws DoesNotExistException     activityOfferingTypeKey not found
1034      * @throws InvalidParameterException invalid context
1035      * @throws MissingParameterException missing context
1036      * @throws OperationFailedException  unable to complete request
1037      * @throws PermissionDeniedException authorization failure
1038      */
1039     public List<TypeInfo> getActivityOfferingTypesForActivityType(@WebParam(name = "activityTypeKey") String activityTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1040 
1041     /**
1042      * This method returns the valid instructor (lpr) types for an activity
1043      * offering type.
1044      *
1045      * @param activityOfferingTypeKey a key for an activity offering type
1046      * @param context                 information containing the principalId and
1047      *                                locale information about the caller of
1048      *                                service operation
1049      * @return a list of valid instructor types
1050      * @throws DoesNotExistException     activityOfferingTypeKey not found
1051      * @throws InvalidParameterException context is not valud
1052      * @throws MissingParameterException activityOfferingTypeKey or contextInfo
1053      *                                   is missing or null
1054      * @throws OperationFailedException  unable to complete request
1055      * @throws PermissionDeniedException an authorization failure occurred
1056      */
1057     public List<TypeInfo> getInstructorTypesForActivityOfferingType(@WebParam(name = "activityOfferingTypeKey") String activityOfferingTypeKey, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1058 
1059     /**
1060      * Retrieve information about an ActivityOffering
1061      *
1062      * @param activityOfferingId Unique Id of the ActivityOffering
1063      * @param context            Context information containing the principalId
1064      *                           and locale information about the caller of
1065      *                           service operation
1066      * @return ActivityOffering associated with the passed in Id
1067      * @throws DoesNotExistException     ActivityOffering with activityOfferingId not found
1068      * @throws InvalidParameterException invalid activityOfferingId
1069      * @throws MissingParameterException missing activityOfferingId
1070      * @throws OperationFailedException  unable to complete request
1071      * @throws PermissionDeniedException authorization failure
1072      */
1073     public ActivityOfferingInfo getActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1074 
1075     /**
1076      * Retrieves a single ActivityOfferingDisplay by a ActivityOffering Id.
1077      *
1078      * @param activityOfferingId an identifier for an ActivityOffering
1079      * @param contextInfo        information containing the principalId and
1080      *                           locale information about the caller of service
1081      *                           operation
1082      * @return the ActivityOfferingDisplay requested
1083      * @throws DoesNotExistException     activityOfferingId does not exist
1084      * @throws InvalidParameterException contextInfo is not valid
1085      * @throws MissingParameterException activityOfferingId or contextInfo is
1086      *                                   missing or null
1087      * @throws OperationFailedException  unable to complete request
1088      * @throws PermissionDeniedException an authorization failure occurred
1089      */
1090     public ActivityOfferingDisplayInfo getActivityOfferingDisplay(@WebParam(name = "activityOfferingId") String activityOfferingId,
1091                                                                   @WebParam(name = "contextInfo") ContextInfo contextInfo)
1092             throws DoesNotExistException,
1093             InvalidParameterException,
1094             MissingParameterException,
1095             OperationFailedException,
1096             PermissionDeniedException;
1097 
1098     /**
1099      * Retrieves a list of activity offerings by id list.
1100      *
1101      * @param activityOfferingIds List of unique Ids of ActivityCourseOffering
1102      * @param context             Context information containing the principalId
1103      *                            and locale information about the caller of
1104      *                            service operation
1105      * @return Activity offering list
1106      * @throws DoesNotExistException     activityOfferingId in the list not
1107      *                                   found
1108      * @throws InvalidParameterException invalid activityOfferingIds
1109      * @throws MissingParameterException missing activityOfferingIds
1110      * @throws OperationFailedException  unable to complete request
1111      * @throws PermissionDeniedException authorization failure
1112      */
1113     public List<ActivityOfferingInfo> getActivityOfferingsByIds(@WebParam(name = "activityOfferingIds") List<String> activityOfferingIds, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1114 
1115 
1116     /**
1117      * Retrieve a list of ActivitAOfferingAdminDisplays corresponding to a list
1118      * of ActivityOffering Ids. The returned list may be in any order and if
1119      * duplicate Ids are supplied, a unique set may or may not be returned.
1120      *
1121      * @param activityOfferingIds a list of ActivityOffering identifiers
1122      * @param contextInfo         information containing the principalId and
1123      *                            locale information about the caller of service
1124      *                            operation
1125      * @return a list of ActivityOfferingDisplays
1126      * @throws DoesNotExistException     an activityOfferingId in the list not
1127      *                                   found
1128      * @throws InvalidParameterException contextInfo is not valid
1129      * @throws MissingParameterException activityOfferingIds, an Id in
1130      *                                   activityOfferingId, or contextInfo is
1131      *                                   missing or null
1132      * @throws OperationFailedException  unable to complete request
1133      * @throws PermissionDeniedException an authorization failure occurred
1134      */
1135     public List<ActivityOfferingDisplayInfo> getActivityOfferingDisplaysByIds(@WebParam(name = "activityOfferingIds") List<String> activityOfferingIds,
1136                                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo)
1137             throws DoesNotExistException,
1138             InvalidParameterException,
1139             MissingParameterException,
1140             OperationFailedException,
1141             PermissionDeniedException;
1142 
1143     /**
1144      * Retrieves a list of ActivityOffering records that belongs to a
1145      * CourseOffering.
1146      *
1147      * @param courseOfferingId Unique Id of the CourseOffering
1148      * @param context          Context information containing the principalId
1149      *                         and locale information about the caller of
1150      *                         service operation
1151      * @return List of ActivityOffering
1152      * @throws DoesNotExistException     courseOfferingId not found
1153      * @throws InvalidParameterException invalid courseOfferingId
1154      * @throws MissingParameterException missing courseOfferingId
1155      * @throws OperationFailedException  unable to complete request
1156      * @throws PermissionDeniedException authorization failure
1157      */
1158     public List<ActivityOfferingInfo> getActivityOfferingsByCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1159 
1160     /**
1161      * Retrieve a list of ActivityOfferingDisplays corresponding to a
1162      * CourseOffering Id. Activity Offerings for all FormatOfferings within the
1163      * given CourseOffering are used to assemble this administrative view.
1164      *
1165      * @param courseOfferingId the identifier for a CourseOffering
1166      * @param contextInfo      information containing the principalId and locale
1167      *                         information about the caller of service
1168      *                         operation
1169      * @return a list of ActivityOfferingDisplayInfos
1170      * @throws DoesNotExistException     courseOfferingId is not found
1171      * @throws InvalidParameterException contextInfo is not valid
1172      * @throws MissingParameterException courseOfferingId or contextInfo is
1173      *                                   missing or null
1174      * @throws OperationFailedException  unable to complete request
1175      * @throws PermissionDeniedException an authorization failure occurred
1176      */
1177     public List<ActivityOfferingDisplayInfo> getActivityOfferingDisplaysForCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId,
1178                                                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
1179             throws DoesNotExistException,
1180             InvalidParameterException,
1181             MissingParameterException,
1182             OperationFailedException,
1183             PermissionDeniedException;
1184 
1185     /**
1186      * Retrieves a list of ActivityOffering records that belongs to an
1187      * ActivityOfferingCluster.
1188      *
1189      * @param activityOfferingClusterId Unique Id of the ActivityOfferingCluster
1190      * @param contextInfo               Context information containing the
1191      *                                  principalId and locale information about
1192      *                                  the caller of service operation
1193      * @return List of ActivityOfferings
1194      * @throws DoesNotExistException     activityOfferingClusterId not found
1195      * @throws InvalidParameterException invalid contextInfo
1196      * @throws MissingParameterException activityOfferingClusterId or
1197      *                                   contextInfo is missing or null
1198      * @throws OperationFailedException  unable to complete request
1199      * @throws PermissionDeniedException authorization failure
1200      */
1201     public List<ActivityOfferingInfo> getActivityOfferingsByCluster(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1202 
1203     /**
1204      * Retrieves a list of ActivityOffering records that belongs to a
1205      * CourseOffering.
1206      *
1207      * @param formatOfferingId Unique Id of the CourseOffering
1208      * @param context          Context information containing the principalId
1209      *                         and locale information about the caller of
1210      *                         service operation
1211      * @return List of ActivityOffering
1212      * @throws DoesNotExistException     formatOfferingId not found
1213      * @throws InvalidParameterException invalid courseOfferingId
1214      * @throws MissingParameterException missing courseOfferingId
1215      * @throws OperationFailedException  unable to complete request
1216      * @throws PermissionDeniedException authorization failure
1217      */
1218     public List<ActivityOfferingInfo> getActivityOfferingsByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1219 
1220 
1221     /**
1222      * Retrieves a list of ActivityOffering records that belongs to a
1223      * FormatOffering that are not associated with a cluster
1224      *
1225      * @param formatOfferingId Id of the CourseOffering
1226      * @param contextInfo      Context information containing the principalId
1227      *                         and locale information about the caller of
1228      *                         service operation
1229      * @return List of ActivityOfferings without cluster association
1230      * @throws DoesNotExistException     formatOfferingId not found
1231      * @throws InvalidParameterException invalid formatOfferingId
1232      * @throws MissingParameterException formatOfferingId or contextInfo is
1233      *                                   missing or null
1234      * @throws OperationFailedException  unable to complete request
1235      * @throws PermissionDeniedException an authorization failure occurred
1236      */
1237     public List<ActivityOfferingInfo> getActivityOfferingsWithoutClusterByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1238 
1239     /**
1240      * Retrieves the Activity Offerings by actvity offering template id which
1241      * don't have registration groups created for them yet.
1242      *
1243      * @param formatOfferingId The Id of the format offering
1244      * @param context            Context information containing the principalId
1245      *                           and locale information about the caller of
1246      *                           service operation
1247      * @return List of ActivityOfferings by format offering that don't have reg groups yet.
1248      * @throws DoesNotExistException     The formatOfferingId does not exist
1249      * @throws InvalidParameterException Invalid formatOfferingId
1250      * @throws MissingParameterException Missing formatOfferingId
1251      * @throws OperationFailedException  unable to complete request
1252      * @throws PermissionDeniedException authorization failure
1253      */
1254     public List<ActivityOfferingInfo> getActivityOfferingsByFormatOfferingWithoutRegGroup(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1255 
1256 
1257     /**
1258      * Retrieves a list of allowed time slots Ids for an activity offering
1259      *
1260      * @param activityOfferingId identifier for an activity offering
1261      * @param contextInfo     Context information containing the principalId and
1262      *                        locale information about the caller of service
1263      *                        operation
1264      * @return a list of TimeSlots allowed for activityOfferingId or an
1265      *         empty list if none found
1266      * @throws DoesNotExistException     activityOfferingId does not exist
1267      * @throws InvalidParameterException invalid contextInfo
1268      * @throws MissingParameterException activityOfferingId or contextInfo is
1269      *                                   missing or null
1270      * @throws OperationFailedException  unable to complete request
1271      * @throws PermissionDeniedException an authorization failure occurred
1272      */
1273     public List<String> getAllowedTimeSlotIdsForActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId,
1274                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
1275             throws DoesNotExistException,
1276             InvalidParameterException,
1277             MissingParameterException,
1278             OperationFailedException,
1279             PermissionDeniedException;
1280 
1281 
1282     /**
1283      * Retrieves a list of allowed time slots for an activity offering
1284      *
1285      * @param activityOfferingId identifier for an activity offering
1286      * @param contextInfo     Context information containing the principalId and
1287      *                        locale information about the caller of service
1288      *                        operation
1289      * @return a list of TimeSlots allowed for activityOfferingId or an
1290      *         empty list if none found
1291      * @throws DoesNotExistException     activityOfferingId does not exist
1292      * @throws InvalidParameterException invalid contextInfo
1293      * @throws MissingParameterException activityOfferingId or contextInfo is
1294      *                                   missing or null
1295      * @throws OperationFailedException  unable to complete request
1296      * @throws PermissionDeniedException an authorization failure occurred
1297      */
1298     public List<TimeSlotInfo> getAllowedTimeSlotsForActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId,
1299                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
1300             throws DoesNotExistException,
1301             InvalidParameterException,
1302             MissingParameterException,
1303             OperationFailedException,
1304             PermissionDeniedException;
1305 
1306     /**
1307      * Retrieves a list of allowed time slots for given days, startTime
1308      * and for an activity offering
1309      *
1310      * @param activityOfferingId identifier for an activity offering
1311      * @param daysOfWeek      days of the week of interest
1312      * @param startTime       start time of interest
1313      * @param contextInfo     Context information containing the principalId and
1314      *                        locale information about the caller of service
1315      *                        operation
1316      * @return a list of TimeSlots allowed for activityOfferingId, days,
1317      *                        startTime or an empty list if none found
1318      * @throws DoesNotExistException     activityOfferingId does not exist
1319      * @throws InvalidParameterException invalid daysOfWeek, startTime or contextInfo
1320      * @throws MissingParameterException activityOfferingId, daysOfWeek, startTime or contextInfo is
1321      *                                   missing or null
1322      * @throws OperationFailedException  unable to complete request
1323      * @throws PermissionDeniedException an authorization failure occurred
1324      */
1325     public List<TimeSlotInfo> getAllowedTimeSlotsByDaysAndStartTimeForActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId,
1326                                                                                        @WebParam(name = "daysOfWeek") List<Integer> daysOfWeek,
1327                                                                                        @WebParam(name = "startTime") TimeOfDayInfo startTime,
1328                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo)
1329             throws DoesNotExistException,
1330             InvalidParameterException,
1331             MissingParameterException,
1332             OperationFailedException,
1333             PermissionDeniedException;
1334 
1335     /**
1336      * Searches for ActivityOfferings that meet the given search criteria.
1337      *
1338      * @param criteria    the search criteria
1339      * @param contextInfo context information containing the principalId and
1340      *                    locale information about the caller of service
1341      *                    operation
1342      * @return a list of ActivityOffering Ids matching the criteria
1343      * @throws InvalidParameterException criteria or contextInfo is not valid
1344      * @throws MissingParameterException criteria or contextInfo is missing or
1345      *                                   null
1346      * @throws OperationFailedException  unable to complete request
1347      * @throws PermissionDeniedException an authorization failure occurred
1348      */
1349     public List<String> searchForActivityOfferingIds(@WebParam(name = "criteria") QueryByCriteria criteria,
1350                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo)
1351             throws InvalidParameterException,
1352             MissingParameterException,
1353             OperationFailedException,
1354             PermissionDeniedException;
1355 
1356     /**
1357      * Searches for ActivityOfferings that meet the given search criteria.
1358      *
1359      * @param criteria    the search criteria
1360      * @param contextInfo context information containing the principalId and
1361      *                    locale information about the caller of service
1362      *                    operation
1363      * @return a list of ActivityOfferings matching the criteria
1364      * @throws InvalidParameterException criteria or contextInfo is not valid
1365      * @throws MissingParameterException criteria or contextInfo is missing or
1366      *                                   null
1367      * @throws OperationFailedException  unable to complete request
1368      * @throws PermissionDeniedException an authorization failure occurred
1369      */
1370     public List<ActivityOfferingInfo> searchForActivityOfferings(@WebParam(name = "criteria") QueryByCriteria criteria,
1371                                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo)
1372             throws InvalidParameterException,
1373             MissingParameterException,
1374             OperationFailedException,
1375             PermissionDeniedException;
1376 
1377     /**
1378      * Creates a new Activity Offering for a format offering.
1379      *
1380      * @param formatOfferingId     courseOffering that the ActivityOffering
1381      *                             belongs to
1382      * @param activityId           the canonical activity this is associated
1383      *                             with
1384      * @param activityOfferingInfo Details of the ActivityOffering to be
1385      *                             created
1386      * @param context              Context information containing the
1387      *                             principalId and locale information about the
1388      *                             caller of service operation
1389      * @return newly created ActivityOffering
1390      * @throws DoesNotExistException        if the format offering does not
1391      *                                      exist
1392      * @throws DataValidationErrorException One or more values invalid for this
1393      *                                      operation
1394      * @throws InvalidParameterException    One or more parameters invalid
1395      * @throws MissingParameterException    One or more parameters missing
1396      * @throws OperationFailedException     unable to complete request
1397      * @throws PermissionDeniedException    authorization failure
1398      */
1399     public ActivityOfferingInfo createActivityOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "activityId") String activityId, @WebParam(name = "activityOfferingTypeKey") String activityOfferingTypeKey, @WebParam(name = "activityOfferingInfo") ActivityOfferingInfo activityOfferingInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
1400 
1401     /**
1402      * Creates a new Activity Offering from another activity offering, the
1403      * generated activity offering is the same format offering, type and
1404      * canonical activity as the source activity fofering
1405      *
1406      * @param activityOfferingId the  activity offering used as source
1407      * @param context            Context information containing the principalId
1408      *                           and locale information about the caller of
1409      *                           service operation
1410      * @return newly created ActivityOffering
1411      * @throws DoesNotExistException        if the format offering does not
1412      *                                      exist
1413      * @throws DataValidationErrorException One or more values invalid for this
1414      *                                      operation
1415      * @throws InvalidParameterException    One or more parameters invalid
1416      * @throws MissingParameterException    One or more parameters missing
1417      * @throws OperationFailedException     unable to complete request
1418      * @throws PermissionDeniedException    authorization failure
1419      */
1420     public ActivityOfferingInfo copyActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
1421 
1422     /**
1423      * Generates activity offerings based on a format offering.
1424      *
1425      * @param formatOfferingId the identifier for the FormatOffering.
1426      * @param activityOfferingType a key for an activity offering type
1427      * @param quantity           quantity of the activity offerings of that type
1428      * @param context            Context information containing the principalId
1429      *                           and locale information about the caller of
1430      *                           service operation
1431      * @return activity offerings based on format offering
1432      * @throws InvalidParameterException formatOfferingId invalid
1433      * @throws MissingParameterException Missing formatOfferingId in the input
1434      * @throws OperationFailedException  unable to complete request
1435      * @throws PermissionDeniedException authorization failure
1436      */
1437     List<ActivityOfferingInfo> generateActivityOfferings(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "activityOfferingType") String activityOfferingType, @WebParam(name = "quantity") Integer quantity, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1438 
1439     /**
1440      * Updates an existing ActivityOffering.
1441      *
1442      * @param activityOfferingId   Id of ActivitOffering to be updated
1443      * @param activityOfferingInfo Details of updates to the ActivityOffering
1444      * @param context              Context information containing the
1445      *                             principalId and locale information about the
1446      *                             caller of service operation
1447      * @return updated ActivityOffering
1448      * @throws DataValidationErrorException One or more values invalid for this
1449      *                                      operation
1450      * @throws DoesNotExistException        the ActivityOffering does not exist
1451      * @throws InvalidParameterException    One or more parameters invalid
1452      * @throws MissingParameterException    One or more parameters missing
1453      * @throws OperationFailedException     unable to complete request
1454      * @throws PermissionDeniedException    authorization failure
1455      * @throws VersionMismatchException     The action was attempted on an out
1456      *                                      of date version.
1457      */
1458     public ActivityOfferingInfo updateActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "activityOfferingInfo") ActivityOfferingInfo activityOfferingInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, VersionMismatchException, ReadOnlyException;
1459 
1460 
1461     /**
1462      * Changes the state of an existing ActivityOffering to another state
1463      * provided that it is valid to do so.
1464      *
1465      * @param activityOfferingId Id of the ActivityOffering to be changed.
1466      * @param nextStateKey       The State Key into which the identified
1467      *                           ActivityOffering will be placed if the
1468      *                           operation succeeds.
1469      * @param contextInfo        Context information containing the principalId
1470      *                           and locale information about the caller of
1471      *                           service operation
1472      * @return status of the operation (success, failed)
1473      * @throws DoesNotExistException     the identified ActivityOffering does
1474      *                                   not exist
1475      * @throws InvalidParameterException the contextInfo object is invalid
1476      * @throws MissingParameterException One or more parameters missing
1477      * @throws OperationFailedException  unable to complete request
1478      * @throws PermissionDeniedException authorization failure
1479      */
1480     public StatusInfo changeActivityOfferingState(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "nextStateKey") String nextStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1481 
1482     /**
1483      * Deletes an existing ActivityOffering. Deleting an activity will also
1484      * delete any relation it has with course offerings. An activity offering
1485      * cannot be deleted if it is being referenced in a registration group and
1486      * will be DependentObjectsExistException. The registration group needs to
1487      * be updated to drop the activity offering references before the activity
1488      * offering can be deleted. The difference in behavior is because of the
1489      * relationship nature is different between course offering to activity
1490      * offering and registration group to activity offering. Course offering
1491      * contains activity offering, so deleting an activity offering can be
1492      * logically interpreted as removing the containing relationship.
1493      * Registration group only references existing activity offerings and hence
1494      * deleting an activity offering will leave the registration group in
1495      * inconsistent state and updating registration group automatically will
1496      * lead to unintended side effects.
1497      *
1498      * @param activityOfferingId the Id of the ActivityOffering to be deleted
1499      * @param context            Context information containing the principalId
1500      *                           and locale information about the caller of
1501      *                           service operation
1502      * @return status of the operation (success, failed)
1503      * @throws DoesNotExistException          the identified ActivityOffering
1504      *                                        does not exist
1505      * @throws InvalidParameterException      One or more parameters invalid
1506      * @throws MissingParameterException      One or more parameters missing
1507      * @throws OperationFailedException       unable to complete request
1508      * @throws PermissionDeniedException      authorization failure
1509      * @throws DependentObjectsExistException when one or more Registration
1510      *                                        Group and/or Seat Pool Definitions
1511      *                                        dependencies exist.
1512      */
1513     public StatusInfo deleteActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DependentObjectsExistException;
1514 
1515     /**
1516      * Deletes an existing ActivityOffering cascaded style. Deleting an activity
1517      * offering cascaded style would also delete all the registration groups and
1518      * seat pools associated with it.
1519      *
1520      * @param activityOfferingId the Id of the ActivityOffering to be deleted
1521      * @param context            Context information containing the principalId
1522      *                           and locale information about the caller of
1523      *                           service operation
1524      * @return status of the operation (success, failed)
1525      * @throws DoesNotExistException     the identified Activity o does not
1526      *                                   exist
1527      * @throws InvalidParameterException One or more parameters invalid
1528      * @throws MissingParameterException One or more parameters missing
1529      * @throws OperationFailedException  unable to complete request
1530      * @throws PermissionDeniedException authorization failure
1531      */
1532     public StatusInfo deleteActivityOfferingCascaded(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1533 
1534     /**
1535      * Attempt to schedule a single Activity Offering using the Scheduling
1536      * Service.
1537      * <p/>
1538      * This is designed to be used for one-off scheduling of activity offerings
1539      * created after the mass scheduling event.
1540      * <p/>
1541      * The expectation is that this method is synchronous (i.e. it will block
1542      * until the request is completed or fails).
1543      * <p/>
1544      * We also assume that the underlying scheduling service call will not take
1545      * an unbounded amount of time to solve but rather a quick one-off that will
1546      * return in a short amount of time.
1547      *
1548      * @param activityOfferingId Id of the Activity Offering to be scheduled.
1549      * @param contextInfo        Context information containing the principalId
1550      *                           and locale information about the caller of
1551      *                           service operation
1552      * @return status of the starting the scheduling process for the
1553      *         activityOffering (success, failed)
1554      * @throws DoesNotExistException     the identified activity offering does
1555      *                                   not exist.
1556      * @throws InvalidParameterException the contextInfo parameter object is
1557      *                                   invalid.
1558      * @throws MissingParameterException one or more of the method parameter's
1559      *                                   is missing.
1560      * @throws OperationFailedException  unable to complete request
1561      * @throws PermissionDeniedException authorization failure
1562      */
1563     public StatusInfo scheduleActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1564 
1565     /**
1566      * Validates an activity offering. Depending on the value of validationType,
1567      * this validation could be limited to tests on just the current object and
1568      * its directly contained sub-objects or expanded to perform all tests
1569      * related to this object. If an identifier is present for the academic
1570      * calendar and a record is found for that identifier, the validation checks
1571      * if the academic calendar can be shifted to the new values. If a record
1572      * cannot be found for the identifier, it is assumed that the record does
1573      * not exist and as such, the checks performed will be much shallower,
1574      * typically mimicking those performed by setting the validationType to the
1575      * current object. This is a slightly different pattern from the standard
1576      * validation as the caller provides the identifier in the create statement
1577      * instead of the server assigning an identifier.
1578      *
1579      * @param validationType       Identifier of the extent of validation
1580      * @param activityOfferingInfo the activity offering information to be
1581      *                             tested.
1582      * @param context              Context information containing the
1583      *                             principalId and locale information about the
1584      *                             caller of service operation
1585      * @return the results from performing the validation
1586      * @throws DoesNotExistException     validationTypeKey not found
1587      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
1588      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
1589      * @throws OperationFailedException  unable to complete request
1590      * @throws PermissionDeniedException authorization failure
1591      */
1592     public List<ValidationResultInfo> validateActivityOffering(@WebParam(name = "validationType") String validationType, 
1593             @WebParam(name = "activityOfferingInfo") ActivityOfferingInfo activityOfferingInfo, 
1594             @WebParam(name = "context") ContextInfo context) 
1595             throws DoesNotExistException, 
1596             InvalidParameterException, 
1597             MissingParameterException, 
1598             OperationFailedException,
1599             PermissionDeniedException;
1600 
1601     /**
1602      * When/for how long does the offering meet in class during the term.
1603      * Calculated by system based on meeting times and term length; may be
1604      * validated against CLU.
1605      *
1606      * @param activityOfferingId the Id of the ActivityOffering to be used for
1607      *                           contact hour calculation
1608      * @param context            Context information containing the principalId
1609      *                           and locale information about the caller of
1610      *                           service operation
1611      * @return in class contact hours for the term
1612      * @throws DoesNotExistException     the ActivityOffering with activityOfferingId does not exist
1613      * @throws InvalidParameterException One or more parameters invalid
1614      * @throws MissingParameterException One or more parameters missing
1615      * @throws OperationFailedException  unable to complete request
1616      * @throws PermissionDeniedException authorization failure
1617      */
1618     public Float calculateInClassContactHoursForTerm(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1619 
1620     /**
1621      * When/for how long does the offering meet out of class during the term.
1622      * Calculated by system based on meeting times and term length; may be
1623      * validated against CLU.
1624      *
1625      * @param activityOfferingId the Id of the ActivityOffering to be used for
1626      *                           contact hour calculation
1627      * @param context            Context information containing the principalId
1628      *                           and locale information about the caller of
1629      *                           service operation
1630      * @return out of class contact hours for the term
1631      * @throws DoesNotExistException     the ActivityOffering with activityOfferingId does not exist
1632      * @throws InvalidParameterException One or more parameters invalid
1633      * @throws MissingParameterException One or more parameters missing
1634      * @throws OperationFailedException  unable to complete request
1635      * @throws PermissionDeniedException authorization failure
1636      */
1637     public Float calculateOutofClassContactHoursForTerm(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1638 
1639     /**
1640      * When/for how long does the offering meet in total during the term.
1641      * Calculated by system based on meeting times and term length; may be
1642      * validated against CLU.
1643      *
1644      * @param activityOfferingId the Id of the ActivityOffering to be used for
1645      *                           contact hour calculation
1646      * @param context            Context information containing the principalId
1647      *                           and locale information about the caller of
1648      *                           service operation
1649      * @return total class contact hours for the term
1650      * @throws DoesNotExistException     the ActivityOffering with activityOfferingId does not exist
1651      * @throws InvalidParameterException One or more parameters invalid
1652      * @throws MissingParameterException One or more parameters missing
1653      * @throws OperationFailedException  unable to complete request
1654      * @throws PermissionDeniedException authorization failure
1655      */
1656     public Float calculateTotalContactHoursForTerm(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1657 
1658     /**
1659      * Retrieve  a RegistrationGroup   based on id
1660      *
1661      * @param registrationGroupId Unique Id of the RegistrationGroup
1662      * @param context             Context information containing the principalId
1663      *                            and locale information about the caller of
1664      *                            service operation
1665      * @return RegistrationGroup associated with the passed in Id
1666      * @throws DoesNotExistException     registrationGroupId not found
1667      * @throws InvalidParameterException invalid registrationGroupId
1668      * @throws MissingParameterException missing registrationGroupId
1669      * @throws OperationFailedException  unable to complete request
1670      * @throws PermissionDeniedException authorization failure
1671      */
1672     public RegistrationGroupInfo getRegistrationGroup(@WebParam(name = "registrationGroupId") String registrationGroupId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1673 
1674     /**
1675      * Retrieves a list of registration group by id list.
1676      *
1677      * @param registrationGroupIds List of unique Ids of RegistrationGroup
1678      * @param context              Context information containing the
1679      *                             principalId and locale information about the
1680      *                             caller of service operation
1681      * @return Registration Group list
1682      * @throws DoesNotExistException     registrationGroupId in the list not
1683      *                                   found
1684      * @throws InvalidParameterException invalid registrationGroupIds
1685      * @throws MissingParameterException missing registrationGroupIds
1686      * @throws OperationFailedException  unable to complete request
1687      * @throws PermissionDeniedException authorization failure
1688      */
1689     public List<RegistrationGroupInfo> getRegistrationGroupsByIds(@WebParam(name = "registrationGroupIds") List<String> registrationGroupIds, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1690 
1691     /**
1692      * Retrieves a list of RegistrationGroup records that belongs to a
1693      * CourseOffering
1694      *
1695      * @param courseOfferingId Unique Id of the CourseOffering
1696      * @param context          Context information containing the principalId
1697      *                         and locale information about the caller of
1698      *                         service operation
1699      * @return List of RegistrationGroups
1700      * @throws DoesNotExistException     courseOfferingId not found
1701      * @throws InvalidParameterException invalid courseOfferingId
1702      * @throws MissingParameterException missing courseOfferingId
1703      * @throws OperationFailedException  unable to complete request
1704      * @throws PermissionDeniedException authorization failure
1705      */
1706     public List<RegistrationGroupInfo> getRegistrationGroupsForCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1707 
1708     /**
1709      * Retrieves a list of RegistrationGroup records that contain all the
1710      * activity offerings in the input list.
1711      *
1712      * @param activityOfferingIds List of activityOffering Identifiers
1713      * @param context            Context information containing the principalId
1714      *                           and locale information about the caller of
1715      *                           service operation
1716      * @return a list of RegistrationGroup records that contain all the
1717      *         activity offerings in the input list.
1718      * @throws DoesNotExistException     One or more of the activityOfferingIds
1719      *                                   doesn't exist
1720      * @throws InvalidParameterException One or more invalid activityOfferingIds
1721      * @throws MissingParameterException Missing activityOfferingIds
1722      * @throws OperationFailedException  unable to complete request
1723      * @throws PermissionDeniedException authorization failure
1724      */
1725     public List<RegistrationGroupInfo> getRegistrationGroupsWithActivityOfferings(@WebParam(name = "activityOfferingIds") List<String> activityOfferingIds, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1726 
1727     /**
1728      * Returns all registration groups that contain activityOfferingId in the list of AOs associated with
1729      * the registration group.  A variant of getRegistrationGroupsWithActivityOfferings with only a single
1730      * activity offering.
1731      * @param activityOfferingId An activity offering id.
1732      * @param context            Context information containing the principalId
1733      *                           and locale information about the caller of
1734      *                           service operation
1735      * @return a list of RegistrationGroup records that contain all the
1736      *         activity offerings in the input list.
1737      * @throws DoesNotExistException     One or more of the activityOfferingIds
1738      *                                   doesn't exist
1739      * @throws InvalidParameterException One or more invalid activityOfferingIds
1740      * @throws MissingParameterException Missing activityOfferingIds
1741      * @throws OperationFailedException  unable to complete request
1742      * @throws PermissionDeniedException authorization failure
1743      */
1744     public List<RegistrationGroupInfo> getRegistrationGroupsByActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1745 
1746     /**
1747      * Retrieves a list of RegistrationGroup records that belongs to a
1748      * CourseOffering for a given canonical format type
1749      *
1750      * @param formatOfferingId Unique Id of the CourseOffering
1751      * @param context          information containing the principalId and locale
1752      *                         information about the caller of service
1753      *                         operation
1754      * @return List of RegistrationGroups
1755      * @throws DoesNotExistException     courseOfferingId or formatTypeKey not
1756      *                                   found
1757      * @throws InvalidParameterException invalid courseOfferingId or
1758      *                                   formatTypeKey
1759      * @throws MissingParameterException missing courseOfferingId or
1760      *                                   formatTypeKey
1761      * @throws OperationFailedException  unable to complete request
1762      * @throws PermissionDeniedException authorization failure
1763      */
1764     public List<RegistrationGroupInfo> getRegistrationGroupsByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1765 
1766     /**
1767      * Retrieves a list of RegistrationGroup records that belongs to a specified
1768      * ActivityOfferingCluster.
1769      *
1770      * @param activityOfferingClusterId Unique Id of the ActivityOfferingCluster
1771      * @param contextInfo               information containing the principalId
1772      *                                  and locale information about the caller
1773      *                                  of service operation
1774      * @return List of RegistrationGroups
1775      * @throws DoesNotExistException     No ActivityOfferingCluster exists for
1776      *                                   the specified activityOfferingClusterId.
1777      * @throws InvalidParameterException invalid contextInfo object
1778      * @throws MissingParameterException one or more method parameters are
1779      *                                   missing.
1780      * @throws OperationFailedException  unable to complete request
1781      * @throws PermissionDeniedException authorization failure
1782      */
1783     public List<RegistrationGroupInfo> getRegistrationGroupsByActivityOfferingCluster(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1784 
1785     /**
1786      * Searches for RegistrationGroups that meet the given search criteria.
1787      *
1788      * @param criteria    the search criteria
1789      * @param contextInfo context information containing the principalId and
1790      *                    locale information about the caller of service
1791      *                    operation
1792      * @return a list of RegistrationGroup Ids matching the criteria
1793      * @throws InvalidParameterException criteria or contextInfo is not valid
1794      * @throws MissingParameterException criteria or contextInfo is missing or
1795      *                                   null
1796      * @throws OperationFailedException  unable to complete request
1797      * @throws PermissionDeniedException an authorization failure occurred
1798      */
1799     public List<String> searchForRegistrationGroupIds(@WebParam(name = "criteria") QueryByCriteria criteria,
1800                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo)
1801             throws InvalidParameterException,
1802             MissingParameterException,
1803             OperationFailedException,
1804             PermissionDeniedException;
1805 
1806     /**
1807      * Searches for RegistrationGroups that meet the given search criteria.
1808      *
1809      * @param criteria    the search criteria
1810      * @param contextInfo context information containing the principalId and
1811      *                    locale information about the caller of service
1812      *                    operation
1813      * @return a list of RegistrationGroups matching the criteria
1814      * @throws InvalidParameterException criteria or contextInfo is not valid
1815      * @throws MissingParameterException criteria or contextInfo is missing or
1816      *                                   null
1817      * @throws OperationFailedException  unable to complete request
1818      * @throws PermissionDeniedException an authorization failure occurred
1819      */
1820     public List<RegistrationGroupInfo> searchForRegistrationGroups(@WebParam(name = "criteria") QueryByCriteria criteria,
1821                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
1822             throws InvalidParameterException,
1823             MissingParameterException,
1824             OperationFailedException,
1825             PermissionDeniedException;
1826 
1827     /**
1828      * Validates a registration group. Depending on the value of validationType,
1829      * this validation could be limited to tests on just the current object and
1830      * its directly contained subobjects or expanded to perform all tests
1831      * related to this object. If an identifier is present for the academic
1832      * calendar and a record is found for that identifier, the validation checks
1833      * if the academic calendar can be shifted to the new values. If a record
1834      * cannot be found for the identifier, it is assumed that the record does
1835      * not exist and as such, the checks performed will be much shallower,
1836      * typically mimicking those performed by setting the validationType to the
1837      * current object. This is a slightly different pattern from the standard
1838      * validation as the caller provides the identifier in the create statement
1839      * instead of the server assigning an identifier.
1840      *
1841      * @param validationType            Identifier of the extent of validation
1842      * @param activityOfferingClusterId Unique Id of the ActivityOfferingCluster
1843      * @param registrationGroupType     the identifier for the RegistrationGroup
1844      *                                  type
1845      * @param registrationGroupInfo     the registrationGroup information to be
1846      *                                  tested.
1847      * @param contextInfo               Context information containing the
1848      *                                  principalId and locale information about
1849      *                                  the caller of service operation
1850      * @return a list of validation results or an empty list if validation
1851      *         succeeded
1852      * @throws DoesNotExistException     validationTypeKey not found
1853      * @throws InvalidParameterException invalid validationTypeKey, academicCalendarInfo
1854      * @throws MissingParameterException missing validationTypeKey, academicCalendarInfo
1855      * @throws OperationFailedException  unable to complete request
1856      * @throws PermissionDeniedException authorization failure
1857      */
1858     public List<ValidationResultInfo> validateRegistrationGroup(@WebParam(name = "validationType") String validationType,
1859                                                                 @WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId,
1860                                                                 @WebParam(name = "registrationGroupType") String registrationGroupType,
1861                                                                 @WebParam(name = "registrationGroupInfo") RegistrationGroupInfo registrationGroupInfo,
1862                                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo)
1863             throws DoesNotExistException,
1864             InvalidParameterException, 
1865             MissingParameterException, 
1866             OperationFailedException,
1867             PermissionDeniedException;
1868 
1869     /**
1870      * Creates a new Registration Group.
1871      *
1872      * @param formatOfferingId          formatOfferingId that the  RegistrationGroup
1873      *                                  is based on
1874      * @param activityOfferingClusterId Unique Id of the ActivityOfferingCluster
1875      * @param registrationGroupType     the identifier for the RegistrationGroup
1876      *                                  type
1877      * @param registrationGroupInfo     Details of the RegistrationGroup to be
1878      *                                  created
1879      * @param context                   Context information containing the
1880      *                                  principalId and locale information about
1881      *                                  the caller of service operation
1882      * @return newly created registrationGroup
1883      * @throws DoesNotExistException        courseOfferingId not found
1884      * @throws DataValidationErrorException One or more values invalid for this
1885      *                                      operation
1886      * @throws InvalidParameterException    One or more parameters invalid
1887      * @throws MissingParameterException    One or more parameters missing
1888      * @throws OperationFailedException     unable to complete request
1889      * @throws PermissionDeniedException    authorization failure
1890      */
1891     public RegistrationGroupInfo createRegistrationGroup(@WebParam(name = "formatOfferingId") String formatOfferingId,
1892                                                          @WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId,
1893                                                          @WebParam(name = "registrationGroupType") String registrationGroupType,
1894                                                          @WebParam(name = "registrationGroupInfo") RegistrationGroupInfo registrationGroupInfo,
1895                                                          @WebParam(name = "context") ContextInfo context)
1896             throws DoesNotExistException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
1897 
1898     /**
1899      * Updates an existing RegistrationGroup.
1900      *
1901      * @param registrationGroupId   Id of RegistrationGroup to be updated
1902      * @param registrationGroupInfo Details of updates to the RegistrationGroup
1903      * @param context               Context information containing the
1904      *                              principalId and locale information about the
1905      *                              caller of service operation
1906      * @return updated RegistrationGroup
1907      * @throws DataValidationErrorException One or more values invalid for this
1908      *                                      operation
1909      * @throws DoesNotExistException        the registrationGroupId does not
1910      *                                      exist
1911      * @throws InvalidParameterException    One or more parameters invalid
1912      * @throws MissingParameterException    One or more parameters missing
1913      * @throws OperationFailedException     unable to complete request
1914      * @throws PermissionDeniedException    authorization failure
1915      * @throws VersionMismatchException     The action was attempted on an out
1916      *                                      of date version.
1917      */
1918     public RegistrationGroupInfo updateRegistrationGroup(@WebParam(name = "registrationGroupId") String registrationGroupId, @WebParam(name = "registrationGroupInfo") RegistrationGroupInfo registrationGroupInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
1919 
1920     /**
1921      * Changes the state of an existing RegistrationGroup to another state
1922      * provided that it is valid to do so.
1923      *
1924      * @param registrationGroupId Id of the RegistrationGroup to be changed.
1925      * @param nextStateKey        The State Key into which the identified
1926      *                            RegistrationGroup will be placed if the
1927      *                            operation succeeds.
1928      * @param contextInfo         Context information containing the principalId
1929      *                            and locale information about the caller of
1930      *                            service operation
1931      * @return status of the operation (success, failed)
1932      * @throws DoesNotExistException     the identified RegsitrationGroup does
1933      *                                   not exist
1934      * @throws InvalidParameterException the contextInfo object is invalid
1935      * @throws MissingParameterException One or more parameters missing
1936      * @throws OperationFailedException  unable to complete request
1937      * @throws PermissionDeniedException authorization failure
1938      */
1939     public StatusInfo changeRegistrationGroupState(@WebParam(name = "registrationGroupId") String registrationGroupId, @WebParam(name = "nextStateKey") String nextStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1940 
1941     /**
1942      * Deletes an existing Registration Group. Removes the relationship to the
1943      * course offering and activity offering. The activity offerings are not
1944      * automatically deleted
1945      *
1946      * @param registrationGroupId the Id of the RegistrationGroup to be deleted
1947      * @param context             Context information containing the principalId
1948      *                            and locale information about the caller of
1949      *                            service operation
1950      * @throws DoesNotExistException     the RegistrationGroup does not exist
1951      * @throws InvalidParameterException One or more parameters invalid
1952      * @throws MissingParameterException One or more parameters missing
1953      * @throws OperationFailedException  unable to complete request
1954      * @throws PermissionDeniedException authorization failure
1955      */
1956     public StatusInfo deleteRegistrationGroup(@WebParam(name = "registrationGroupId") String registrationGroupId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1957 
1958     /**
1959      * Deletes all Registration Groups for a Format Offering.
1960      *
1961      * @param formatOfferingId the Id of the FormatOffering
1962      * @param context          Context information containing the principalId
1963      *                         and locale information about the caller of
1964      *                         service operation
1965      * @throws InvalidParameterException One or more parameters invalid
1966      * @throws MissingParameterException One or more parameters missing
1967      * @throws OperationFailedException  unable to complete request
1968      * @throws PermissionDeniedException authorization failure
1969      */
1970     public List<BulkStatusInfo> deleteRegistrationGroupsByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1971 
1972     /**
1973      * Deletes all generated Registration Groups for a Format Offering. A
1974      * generated registration group is one whose isGenerated() flag is true.
1975      *
1976      * @param formatOfferingId the Id of the FormatOffering
1977      * @param context          Context information containing the principalId
1978      *                         and locale information about the caller of
1979      *                         service operation
1980      * @throws InvalidParameterException One or more parameters invalid
1981      * @throws MissingParameterException One or more parameters missing
1982      * @throws OperationFailedException  unable to complete request
1983      * @throws PermissionDeniedException authorization failure
1984      */
1985     public List<BulkStatusInfo> deleteGeneratedRegistrationGroupsByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1986 
1987     /**
1988      * Deletes all Registration Groups associated with an Activity Offering
1989      * Cluster
1990      *
1991      * @param activityOfferingClusterId the Id of the FormatOffering
1992      * @param contextInfo               Context information containing the
1993      *                                  principalId and locale information about
1994      *                                  the caller of service operation
1995      * @return status of the operation (success, failed)
1996      * @throws InvalidParameterException invalid contextInfo
1997      * @throws MissingParameterException activityOfferingClusterId or
1998      *                                   contextInfo is missing or null
1999      * @throws OperationFailedException  unable to complete request
2000      * @throws PermissionDeniedException an authorization failure has occurred
2001      */
2002     public List<BulkStatusInfo> deleteRegistrationGroupsForCluster(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2003 
2004     /**
2005      * Verifies a Registration Group applying rules such as: 
2006      * <ol>
2007      * <li>Registration Group has one ActivityOffering for each Format Offering
2008      *  activityOfferingType</li>
2009      * <li>ActivityOffering's don't have any time conflicts (if scheduling
2010      * has already happened)</li>
2011      * <li>ActivityOffering's are all offered at the same campus</li>
2012      * <li>ActivityOffering's don't have conflicting seatpool/enrollment 
2013      * restrictions</li>
2014      * </ol>
2015      * <p></p>
2016      * The distinction between <b>validateRegistrationGroup</b> and this 
2017      * method is that <b>validate</b> checks if its OK to save the object where
2018      * as <b>verify</b> checks a saved object and its relation to other saved objects.
2019      * <p></p>
2020      * <b>validate</b> is called for every <b>create</b> and <b>update</b> and 
2021      * needs to execute quickly where as this method can take longer to 
2022      * accurately evaluate the specified RegistrationGroup.
2023      * 
2024      * @param registrationGroupId the registrationGroup information to be
2025      *                            tested.
2026      * @param contextInfo         Context information containing the principalId
2027      *                            and locale information about the caller of
2028      *                            service operation
2029      * @return a list of validation results or an empty list if validation
2030      *         succeeded
2031      * @throws DoesNotExistException     contextInfo not found
2032      * @throws InvalidParameterException invalid registrationGroupId or
2033      *                                   contextInfo
2034      * @throws MissingParameterException registrationGroupId or contextInfo is
2035      *                                   missing or null
2036      * @throws OperationFailedException  unable to complete request
2037      */
2038     public List<ValidationResultInfo> verifyRegistrationGroup(@WebParam(name = "registrationGroupId") String registrationGroupId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException;
2039 
2040 
2041     /**
2042      * Gets an Activity Offering Cluster based on the Identifier
2043      *
2044      * @param activityOfferingClusterId Identifier of the Activity Offering
2045      *                                  Cluster
2046      * @param contextInfo               Context information containing the
2047      *                                  principalId and locale information about
2048      *                                  the caller of service operation
2049      * @return ActivityOfferingCluster
2050      * @throws DoesNotExistException     activityOfferingClusterId does not
2051      *                                   exist
2052      * @throws InvalidParameterException Invalid contextInfo
2053      * @throws MissingParameterException activityOfferingClusterId or
2054      *                                   contextInfo is missing or null
2055      * @throws OperationFailedException  unable to complete request
2056      * @throws PermissionDeniedException an authorization failure occurred
2057      */
2058     public ActivityOfferingClusterInfo getActivityOfferingCluster(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2059 
2060 
2061     /**
2062      * Retrieves a list of activity offering clusters using the given id list.
2063      * The returned list may be in any order and if duplicate Ids are supplied, a unique set may or may not be returned.
2064      *
2065      * @param activityOfferingClusterIds List of unique Ids of ActivityOfferingClusters
2066      * @param contextInfo            Context information containing the principalId
2067      *                            and locale information about the caller of
2068      *                            service operation
2069      * @return Activity offering cluster list
2070      * @throws DoesNotExistException     activityOfferingClusterId in the list not
2071      *                                   found
2072      * @throws InvalidParameterException invalid activityOfferingClusterIds
2073      * @throws MissingParameterException missing activityOfferingClusterIds
2074      * @throws OperationFailedException  unable to complete request
2075      * @throws PermissionDeniedException authorization failure
2076      */
2077     public List<ActivityOfferingClusterInfo> getActivityOfferingClustersByIds(@WebParam(name = "activityOfferingClusterIds") List<String> activityOfferingClusterIds, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2078 
2079     /**
2080      * Retrieves a list of ActivityOfferingClusters associated with a
2081      * FormatOffering
2082      *
2083      * @param formatOfferingId Id of the FormatOffering
2084      * @param contextInfo      Context information containing the principalId
2085      *                         and locale information about the caller of
2086      *                         service operation
2087      * @return List of ActivityOffering
2088      * @throws DoesNotExistException     courseOfferingId not found
2089      * @throws InvalidParameterException invalid contextInfo
2090      * @throws MissingParameterException formatOfferingId or contextInfo is
2091      *                                   missing or null
2092      * @throws OperationFailedException  unable to complete request
2093      * @throws PermissionDeniedException an authorization failure occurred
2094      */
2095     public List<ActivityOfferingClusterInfo> getActivityOfferingClustersByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2096 
2097     /**
2098      * Retrieves a list of ActivityOfferingCluster Id's associated with a
2099      * FormatOffering
2100      *
2101      * @param formatOfferingId Id of the FormatOffering
2102      * @param contextInfo      Context information containing the principalId
2103      *                         and locale information about the caller of
2104      *                         service operation
2105      * @return List of ActivityOffering Id's
2106      * @throws DoesNotExistException     courseOfferingId not found
2107      * @throws InvalidParameterException invalid contextInfo
2108      * @throws MissingParameterException formatOfferingId or contextInfo is
2109      *                                   missing or null
2110      * @throws OperationFailedException  unable to complete request
2111      * @throws PermissionDeniedException an authorization failure occurred
2112      */
2113     public List<String> getActivityOfferingClustersIdsByFormatOffering(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2114 
2115     /**
2116      * Validates an Activity Offering Cluster. Depending on the value of
2117      * validationTypeKey, this validation could be limited to tests on just the
2118      * current object and its directly contained sub-objects or expanded to
2119      * perform all tests related to this object. If an identifier is present for
2120      * the academic calendar and a record is found for that identifier, the
2121      * validation checks if the academic calendar can be shifted to the new
2122      * values. If a record cannot be found for the identifier, it is assumed
2123      * that the record does not exist and as such, the checks performed will be
2124      * much shallower, typically mimicking those performed by setting the
2125      * validationTypeKey to the current object. This is a slightly different
2126      * pattern from the standard validation as the caller provides the
2127      * identifier in the create statement instead of the server assigning an
2128      * identifier.
2129      *
2130      * @param validationTypeKey           Identifier of the extent of
2131      *                                    validation
2132      * @param formatOfferingId            Format Offering identifier
2133      * @param activityOfferingClusterInfo the Activity Offering Cluster
2134      *                                    information to be validated.
2135      * @param contextInfo                 Context information containing the
2136      *                                    principalId and locale information
2137      *                                    about the caller of service operation
2138      * @return the results from performing the validation
2139      * @throws DoesNotExistException     validationTypeKey or activityOfferingClusterTypeKey
2140      *                                   not found
2141      * @throws InvalidParameterException invalid activityOfferingClusterInfo or
2142      *                                   contextInfo
2143      * @throws MissingParameterException validationTypeKey, activityOfferingClusterTypeKey,
2144      *                                   activityOfferingClusterInfo or
2145      *                                   contextInfo is missing or null
2146      * @throws OperationFailedException  unable to complete request
2147      * @throws PermissionDeniedException authorization failure
2148      */
2149     public List<ValidationResultInfo> validateActivityOfferingCluster(@WebParam(name = "validationTypeKey") String validationTypeKey, 
2150             @WebParam(name = "formatOfferingId") String formatOfferingId, 
2151             @WebParam(name = "activityOfferingClusterInfo") ActivityOfferingClusterInfo activityOfferingClusterInfo, 
2152             @WebParam(name = "contextInfo") ContextInfo contextInfo) 
2153             throws DoesNotExistException, 
2154             InvalidParameterException, 
2155             MissingParameterException, 
2156             OperationFailedException,
2157             PermissionDeniedException;
2158 
2159     /**
2160      * Creates a new Activity Offering Cluster from the given Format Offering
2161      *
2162      * @param formatOfferingId               Format Offering identifier
2163      * @param activityOfferingClusterTypeKey Activity Offering Cluster type
2164      * @param activityOfferingClusterInfo    Details of the ActivityOfferingCluster
2165      *                                       to be created
2166      * @param contextInfo                    Context information containing the
2167      *                                       principalId and locale information
2168      *                                       about the caller of service
2169      *                                       operation
2170      * @return newly created ActivityOfferingCluster
2171      * @throws DataValidationErrorException supplied data is invalid
2172      * @throws DoesNotExistException        validationTypeKey or activityOfferingClusterTypeKey
2173      *                                      not found
2174      * @throws InvalidParameterException    invalid activityOfferingClusterInfo
2175      *                                      or contextInfo
2176      * @throws MissingParameterException    validationTypeKey, activityOfferingClusterTypeKey
2177      *                                      or activityOfferingClusterInfo is
2178      *                                      missing or null
2179      * @throws OperationFailedException     unable to complete request
2180      * @throws PermissionDeniedException    an authorization failure has
2181      *                                      occurred
2182      * @throws ReadOnlyException            an attempt at supplying information
2183      *                                      designated as read only
2184      */
2185     public ActivityOfferingClusterInfo createActivityOfferingCluster(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "activityOfferingClusterTypeKey") String activityOfferingClusterTypeKey, @WebParam(name = "activityOfferingClusterInfo") ActivityOfferingClusterInfo activityOfferingClusterInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
2186 
2187     /**
2188      * Updates an ActivityOfferingCluster based on the info object
2189      *
2190      * @param formatOfferingId            Format Offering identifier
2191      * @param activityOfferingClusterId   Identifier of the Activity Offering
2192      *                                    Cluster
2193      * @param activityOfferingClusterInfo ActivityOfferingCluster with new
2194      *                                    information
2195      * @param contextInfo                 Context information containing the
2196      *                                    principalId and locale information
2197      *                                    about the caller of service operation
2198      * @return updated ActivityOfferingCluster
2199      * @throws DataValidationErrorException supplied data is invalid
2200      * @throws DoesNotExistException        activityOfferingClusterId does not
2201      *                                      exist
2202      * @throws InvalidParameterException    Invalid activityOfferingClusterInfo
2203      * @throws MissingParameterException    activityOfferingClusterId or
2204      *                                      activityOfferingClusterInfo is
2205      *                                      missing or null
2206      * @throws OperationFailedException     unable to complete request
2207      * @throws PermissionDeniedException    an authorization failure has
2208      *                                      occurred
2209      * @throws ReadOnlyException            an attempt at supplying information
2210      *                                      designated as read only
2211      * @throws VersionMismatchException     optimistic locking failure or the
2212      *                                      action was attempted on an out of
2213      *                                      date version
2214      */
2215     public ActivityOfferingClusterInfo updateActivityOfferingCluster(@WebParam(name = "formatOfferingId") String formatOfferingId, @WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "activityOfferingClusterInfo") ActivityOfferingClusterInfo activityOfferingClusterInfo, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
2216 
2217     /**
2218      * Changes the state of an existing ActivityOfferingCluster to another state
2219      * provided that it is valid to do so.
2220      *
2221      * @param activityOfferingClusterId Id of the ActivityOfferingCluster to be
2222      *                                  changed.
2223      * @param nextStateKey              The State Key into which the identified
2224      *                                  ActivityOfferingCluster will be placed
2225      *                                  if the operation succeeds.
2226      * @param contextInfo               Context information containing the
2227      *                                  principalId and locale information about
2228      *                                  the caller of service operation
2229      * @return status of the operation (success, failed)
2230      * @throws DoesNotExistException     the identified ActivityOfferingCluster
2231      *                                   does not exist
2232      * @throws InvalidParameterException the contextInfo object is invalid
2233      * @throws MissingParameterException One or more parameters missing
2234      * @throws OperationFailedException  unable to complete request
2235      * @throws PermissionDeniedException authorization failure
2236      */
2237     public StatusInfo changeActivityOfferingClusterState(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "nextStateKey") String nextStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2238 
2239     /**
2240      * Deletes an activity offering cluster  based on the identifier
2241      *
2242      * @param activityOfferingClusterId Identifier of the Activity Offering
2243      *                                  Cluster
2244      * @param contextInfo               Context information containing the
2245      *                                  principalId and locale information about
2246      *                                  the caller of service operation
2247      * @return status of the operation (success, failed)
2248      * @throws DoesNotExistException          activityOfferingClusterId does not
2249      *                                        exist
2250      * @throws InvalidParameterException      Invalid contextInfo
2251      * @throws MissingParameterException      activityOfferingClusterId or
2252      *                                        contextInfo is missing or null
2253      * @throws OperationFailedException       unable to complete request
2254      * @throws PermissionDeniedException      an authorization failure has
2255      *                                        occurred
2256      * @throws DependentObjectsExistException Registration Groups exist for this
2257      *                                        cluster which prevents the delete
2258      *                                        from occuring.
2259      */
2260     public StatusInfo deleteActivityOfferingCluster(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DependentObjectsExistException;
2261 
2262     /**
2263      * Deletes an existing ActivityOfferingCluster cascaded style. Deleting an
2264      * activity offering cluster cascaded style would also delete all the
2265      * registration groups associated with it.
2266      *
2267      * @param activityOfferingClusterId the Id of the ActivityOfferingCluster to
2268      *                                  be deleted
2269      * @param contextInfo               Context information containing the
2270      *                                  principalId and locale information about
2271      *                                  the caller of service operation
2272      * @return status of the operation (success, failed)
2273      * @throws DoesNotExistException     the identified Activity o does not
2274      *                                   exist
2275      * @throws InvalidParameterException One or more parameters invalid
2276      * @throws MissingParameterException One or more parameters missing
2277      * @throws OperationFailedException  unable to complete request
2278      * @throws PermissionDeniedException authorization failure
2279      */
2280     public StatusInfo deleteActivityOfferingClusterCascaded(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2281 
2282     /**
2283      * Verifies an Activity Offering Cluster's completeness for the generation
2284      * of Registration Group's.
2285      * 
2286      * The distinction between <b>validateActivityOfferingCluster</b> and this 
2287      * method is that <b>validate</b> checks if its OK to save the object where
2288      * as <b>verify</b> checks a saved object in relation to other saved objects.
2289      * 
2290      * <p></p>
2291      * <b>validate</b> is called for every <b>create</b> and <b>update</b> and 
2292      * needs to execute quickly where as this method can take longer to 
2293      * accurately evaluate the specified Activity Offering Cluster.
2294      * 
2295      * @param activityOfferingClusterId Activity Offering Cluster to be
2296      *                                  verified
2297      * @param contextInfo               Context information containing the
2298      *                                  principalId and locale information about
2299      *                                  the caller of service operation
2300      * @return Information gleaned from verifying the ActivityOfferingCluster
2301      * @throws DoesNotExistException     activityOfferingClusterId not found
2302      * @throws InvalidParameterException invalid contextInfo
2303      * @throws MissingParameterException activityOfferingClusterId or
2304      *                                   contextInfo is missing or null
2305      * @throws OperationFailedException  unable to complete request
2306      * @throws PermissionDeniedException authorization failure
2307      * @impl See https://wiki.kuali.org/display/STUDENT/Reg+Group+Verification
2308      */
2309     public AOClusterVerifyResultsInfo verifyActivityOfferingClusterForGeneration(@WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2310 
2311     /**
2312      * Searches for Activity Offering Clusters that meet the given search criteria.
2313      *
2314      * @param criteria    the search criteria
2315      * @param contextInfo information containing the principalId and locale
2316      *                    information about the caller of service operation
2317      * @return a list of CourseOffering Ids matching the criteria
2318      * @throws InvalidParameterException criteria or contextInfo is not valid
2319      * @throws MissingParameterException criteria or contextInfo is missing or
2320      *                                   null
2321      * @throws OperationFailedException  unable to complete request
2322      * @throws PermissionDeniedException an authorization failure occurred
2323      */
2324     public List<String> searchForActivityOfferingClusterIds(@WebParam(name = "criteria") QueryByCriteria criteria,
2325                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
2326             throws InvalidParameterException,
2327             MissingParameterException,
2328             OperationFailedException,
2329             PermissionDeniedException;
2330 
2331     /**
2332      * Searches for Activity Offering Clusters that meet the given search criteria.
2333      *
2334      * @param criteria    the search criteria
2335      * @param contextInfo information containing the principalId and locale
2336      *                    information about the caller of service operation
2337      * @return a list of CourseOfferings matching the criteria
2338      * @throws InvalidParameterException criteria or contextInfo is not valid
2339      * @throws MissingParameterException criteria or contextInfo is missing or
2340      *                                   null
2341      * @throws OperationFailedException  unable to complete request
2342      * @throws PermissionDeniedException an authorization failure occurred
2343      */
2344     public List<ActivityOfferingClusterInfo> searchForActivityOfferingClusters(@WebParam(name = "criteria") QueryByCriteria criteria,
2345                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
2346             throws InvalidParameterException,
2347             MissingParameterException,
2348             OperationFailedException,
2349             PermissionDeniedException;    
2350     
2351     /**
2352      * Retrieve information about a SeatPoolDefinition
2353      *
2354      * @param seatPoolDefinitionId Unique Id of the SeatPoolDefinition
2355      * @param context              Context information containing the
2356      *                             principalId and locale information about the
2357      *                             caller of service operation
2358      * @return SeatPoolDefinition associated with the passed in Id
2359      * @throws DoesNotExistException     seatPoolDefinitionId not found
2360      * @throws InvalidParameterException invalid seatPoolDefinitionId
2361      * @throws MissingParameterException missing seatPoolDefinitionId
2362      * @throws OperationFailedException  unable to complete request
2363      * @throws PermissionDeniedException authorization failure
2364      */
2365     public SeatPoolDefinitionInfo getSeatPoolDefinition(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2366 
2367     /**
2368      * Retrieves a list of SeatPoolDefinitions records that belongs to an
2369      * ActivityOffering. This should return SeatPoolDefinitions that apply
2370      * globally across all RegistrationGroups in the ActivityOffering.
2371      *
2372      * @param activityOfferingId Unique Id of the ActivityOffering
2373      * @param context            Context information containing the principalId
2374      *                           and locale information about the caller of
2375      *                           service operation
2376      * @return List of SeatPoolDefinitions
2377      * @throws DoesNotExistException     No ActivityOffering found for the specified activityOfferingId
2378      * @throws InvalidParameterException context is null
2379      * @throws MissingParameterException one or more missing parameters
2380      * @throws OperationFailedException  unable to complete request
2381      * @throws PermissionDeniedException authorization failure
2382      */
2383     public List<SeatPoolDefinitionInfo> getSeatPoolDefinitionsForActivityOffering(@WebParam(name = "activityOfferingId") String activityOfferingId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2384 
2385     /**
2386      * Retrieves a list of ActivityOffering records that are associated to a specific
2387      * SeatPoolDefinition. 
2388      *
2389      * @param seatPoolDefinitionId Unique Id of the SeatPoolDefinition
2390      * @param context            Context information containing the principalId
2391      *                           and locale information about the caller of
2392      *                           service operation
2393      * @return List of ActivityOfferings
2394      * @throws DoesNotExistException     no seat pool exists for seatPoolDefinitionId
2395      * @throws InvalidParameterException contextInfo is null.
2396      * @throws MissingParameterException missing seatPoolDefinitionId
2397      * @throws OperationFailedException  unable to complete request
2398      * @throws PermissionDeniedException authorization failure
2399      */
2400     public List<ActivityOfferingInfo> getActivityOfferingsForSeatPoolDefinition(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2401 
2402     /**
2403      * Searches for SeatPoolDefinitions that meet the given search criteria.
2404      *
2405      * @param criteria    the search criteria
2406      * @param contextInfo context information containing the principalId and
2407      *                    locale information about the caller of service
2408      *                    operation
2409      * @return a list of SeatPoolDefinition Ids matching the criteria
2410      * @throws InvalidParameterException criteria or contextInfo is not valid
2411      * @throws MissingParameterException criteria or contextInfo is missing or
2412      *                                   null
2413      * @throws OperationFailedException  unable to complete request
2414      * @throws PermissionDeniedException an authorization failure occurred
2415      */
2416     public List<String> searchForSeatpoolDefinitionIds(@WebParam(name = "criteria") QueryByCriteria criteria,
2417                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo)
2418             throws InvalidParameterException,
2419             MissingParameterException,
2420             OperationFailedException,
2421             PermissionDeniedException;
2422 
2423     /**
2424      * Searches for SeatPoolDefinitions that meet the given search criteria.
2425      *
2426      * @param criteria    the search criteria
2427      * @param contextInfo context information containing the principalId and
2428      *                    locale information about the caller of service
2429      *                    operation
2430      * @return a list of SeatPoolDefinitions matching the criteria
2431      * @throws InvalidParameterException criteria or contextInfo is not valid
2432      * @throws MissingParameterException criteria or contextInfo is missing or
2433      *                                   null
2434      * @throws OperationFailedException  unable to complete request
2435      * @throws PermissionDeniedException an authorization failure occurred
2436      */
2437     public List<SeatPoolDefinitionInfo> searchForSeatpoolDefinitions(@WebParam(name = "criteria") QueryByCriteria criteria,
2438                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo)
2439             throws InvalidParameterException,
2440             MissingParameterException,
2441             OperationFailedException,
2442             PermissionDeniedException;
2443 
2444     /**
2445      * Creates a new Seat Pool
2446      *
2447      * @param seatPoolDefinitionInfo Details of the SeatPoolDefinition to be
2448      *                               created
2449      * @param context                Context information containing the
2450      *                               principalId and locale information about
2451      *                               the caller of service operation
2452      * @return newly created SeatPoolDefinition
2453      * @throws DataValidationErrorException One or more values invalid for this
2454      *                                      operation
2455      * @throws InvalidParameterException    One or more parameters invalid
2456      * @throws MissingParameterException    One or more parameters missing
2457      * @throws OperationFailedException     unable to complete request
2458      * @throws PermissionDeniedException    authorization failure
2459      */
2460     public SeatPoolDefinitionInfo createSeatPoolDefinition(@WebParam(name = "seatPoolDefinitionInfo") SeatPoolDefinitionInfo seatPoolDefinitionInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException;
2461 
2462     /**
2463      * Updates an existing SeatPoolDefinition.
2464      *
2465      * @param seatPoolDefinitionId   Id of SeatPoolDefinition to be updated
2466      * @param seatPoolDefinitionInfo Details of updates to the SeatPoolDefinition
2467      * @param context                Context information containing the
2468      *                               principalId and locale information about
2469      *                               the caller of service operation
2470      * @return updated SeatPoolDefinition
2471      * @throws DataValidationErrorException One or more values invalid for this
2472      *                                      operation
2473      * @throws DoesNotExistException        the SeatPoolDefinition does not
2474      *                                      exist
2475      * @throws InvalidParameterException    One or more parameters invalid
2476      * @throws MissingParameterException    One or more parameters missing
2477      * @throws OperationFailedException     unable to complete request
2478      * @throws PermissionDeniedException    authorization failure
2479      * @throws VersionMismatchException     The action was attempted on an out
2480      *                                      of date version.
2481      */
2482     public SeatPoolDefinitionInfo updateSeatPoolDefinition(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId, @WebParam(name = "seatPoolDefinitionInfo") SeatPoolDefinitionInfo seatPoolDefinitionInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, ReadOnlyException, VersionMismatchException;
2483 
2484     /**
2485      * Changes the state of an existing SeatPoolDefinition to another state
2486      * provided that it is valid to do so.
2487      *
2488      * @param seatPoolDefinitionId Id of the SeatPoolDefinition to be changed.
2489      * @param nextStateKey         The State Key into which the identified
2490      *                             SeatPoolDefinition will be placed if the
2491      *                             operation succeeds.
2492      * @param contextInfo          Context information containing the
2493      *                             principalId and locale information about the
2494      *                             caller of service operation
2495      * @return status of the operation (success, failed)
2496      * @throws DoesNotExistException     the identified SeatPoolDefinition does
2497      *                                   not exist
2498      * @throws InvalidParameterException the contextInfo object is invalid
2499      * @throws MissingParameterException One or more parameters missing
2500      * @throws OperationFailedException  unable to complete request
2501      * @throws PermissionDeniedException authorization failure
2502      */
2503     public StatusInfo changeSeatPoolDefinitionState(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId, @WebParam(name = "nextStateKey") String nextStateKey, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2504 
2505     /**
2506      * Validate a seat pool definition
2507      *
2508      * @param validationTypeKey * @param seatPoolDefinitionInfo
2509      * @param context              Context information containing the
2510      *                             principalId and locale information about the
2511      *                             caller of service operation
2512      * @throws DoesNotExistException if validation type key is not found
2513      * @throws InvalidParameterException the context or object is invalid
2514      * @throws MissingParameterException One or more parameters missing
2515      * @throws OperationFailedException unable to complete request
2516      * @throws PermissionDeniedException authorization failure
2517      */
2518     public List<ValidationResultInfo> validateSeatPoolDefinition(@WebParam(name = "validationTypeKey") String validationTypeKey, 
2519             @WebParam(name = "seatPoolDefinitionInfo") SeatPoolDefinitionInfo seatPoolDefinitionInfo, 
2520             @WebParam(name = "context") ContextInfo context) 
2521             throws DoesNotExistException, 
2522             InvalidParameterException, 
2523             MissingParameterException, 
2524             OperationFailedException, 
2525             PermissionDeniedException;
2526 
2527     /**
2528      * Deletes an existing SeatPoolDefinition.
2529      *
2530      * @param seatPoolDefinitionId the Id of the SeatPoolDefinition to be
2531      *                             deleted
2532      * @param context              Context information containing the
2533      *                             principalId and locale information about the
2534      *                             caller of service operation
2535      * @throws DoesNotExistException     the SeatPoolDefinition does not exist
2536      * @throws InvalidParameterException One or more parameters invalid
2537      * @throws MissingParameterException One or more parameters missing
2538      * @throws OperationFailedException  unable to complete request
2539      * @throws PermissionDeniedException authorization failure
2540      */
2541     public StatusInfo deleteSeatPoolDefinition(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2542 
2543     /**
2544      * Add a SeatPoolDefinition to an ActivityOffering
2545      *
2546      * @param seatPoolDefinitionId a unique identifier for a SeatPoolDefinition
2547      * @param activityOfferingId   a unique identifier for an ActivityOffering
2548      * @param contextInfo          Context information containing the
2549      *                             principalId and locale information about the
2550      *                             caller of service operation
2551      * @return status
2552      * @throws AlreadyExistsException    seatPoolDefinitionId already related to
2553      *                                   activityOfferingId
2554      * @throws DoesNotExistException     seatPoolDefinitionId or activityOfferingId
2555      *                                   not found
2556      * @throws InvalidParameterException invalid seatPoolDefinitionId,
2557      *                                   activityOfferingId, or contextInfo
2558      * @throws MissingParameterException missing seatPoolDefinitionId,
2559      *                                   activityOfferingId, or contextInfo
2560      * @throws OperationFailedException  unable to complete request
2561      * @throws PermissionDeniedException authorization failure
2562      */
2563     public StatusInfo addSeatPoolDefinitionToActivityOffering(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId,
2564                                                               @WebParam(name = "activityOfferingId") String activityOfferingId,
2565                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo)
2566             throws AlreadyExistsException,
2567             DoesNotExistException,
2568             InvalidParameterException,
2569             MissingParameterException,
2570             OperationFailedException,
2571             PermissionDeniedException;
2572 
2573     /**
2574      * Removes a SeatPoolDefinition from an ActivityOffering.
2575      *
2576      * @param seatPoolDefinitionId a unique identifier for a SeatPoolDefinition
2577      * @param activityOfferingId   a unique identifier for an ActivityOffering
2578      * @param contextInfo          Context information containing the
2579      *                             principalId and locale information about the
2580      *                             caller of service operation
2581      * @return status
2582      * @throws DoesNotExistException     seatPoolDefinitionId or activityOfferingId
2583      *                                   not found
2584      * @throws InvalidParameterException invalid seatPoolDefinitionId,
2585      *                                   activityOfferingId, or contextInfo
2586      * @throws MissingParameterException missing seatPoolDefinitionId,
2587      *                                   activityOfferingId, or contextInfo
2588      * @throws OperationFailedException  unable to complete request
2589      * @throws PermissionDeniedException authorization failure
2590      */
2591     public StatusInfo removeSeatPoolDefinitionFromActivityOffering(@WebParam(name = "seatPoolDefinitionId") String seatPoolDefinitionId,
2592                                                                    @WebParam(name = "activityOfferingId") String activityOfferingId,
2593                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
2594             throws DoesNotExistException,
2595             InvalidParameterException,
2596             MissingParameterException,
2597             OperationFailedException,
2598             PermissionDeniedException;
2599 
2600 
2601 
2602     /**
2603      * This is a bulk create method for generateRegistrationGroupsForAOC().  Instead of working on a single Activity Offering Cluster it will
2604      * work on all of the AOC's of the format offering specified.
2605      * 
2606      * @param formatOfferingId The identifier of the format offering to generate registration groups for.
2607      * @param contextInfo Context information containing the principalId and locale information about the caller of service operation 
2608      * @return status of the operation (success, failed) for each Registration Group created. 
2609      * @throws DoesNotExistException The formatOfferingId does not refer to an existing FormatOffering.
2610      * @throws InvalidParameterException The formatOfferingId or context is invalid.
2611      * @throws MissingParameterException the formatOfferingId or context is missing.
2612      * @throws OperationFailedException unable to complete request, can also occur when verification of any AOC in the format offering fails.
2613      * @throws PermissionDeniedException authorization failure
2614      * @throws DataValidationErrorException verification of any of the underlying Activity Offering Cluster's failed.
2615      */
2616     public List<BulkStatusInfo> generateRegistrationGroupsForFormatOffering(@WebParam (name="formatOfferingId")
2617             String formatOfferingId,  @WebParam(name = "contextInfo") ContextInfo contextInfo)
2618             throws DoesNotExistException, InvalidParameterException,
2619             MissingParameterException, OperationFailedException,
2620             PermissionDeniedException, DataValidationErrorException;
2621     
2622     /**
2623      * Generates all possible registration groups for the Activity Offering
2624      * Cluster
2625      *
2626      * @param activityOfferingClusterId identifier of the Activity Offering
2627      *                                  Cluster
2628      * @param contextInfo               Context information containing the
2629      *                                  principalId and locale information about
2630      *                                  the caller of service operation
2631      * @return status of the operation (success, failed) for each Registration Group created.
2632      * @throws DoesNotExistException     activityOfferingClusterId does not
2633      *                                   exist
2634      * @throws DataValidationErrorException verification of the Activity Offering Cluster failed.
2635      * @throws InvalidParameterException invalid contextInfo
2636      * @throws MissingParameterException activityOfferingClusterId or
2637      *                                   contextInfo is missing or null
2638      * @throws OperationFailedException  unable to complete request
2639      * @throws PermissionDeniedException an authorization failure has occurred
2640      * @impl Does 'delta' generation: Creates only new RGs
2641      */
2642     public List<BulkStatusInfo> generateRegistrationGroupsForCluster( @WebParam(name = "activityOfferingClusterId") String activityOfferingClusterId,  @WebParam(name = "contextInfo") ContextInfo contextInfo) throws DoesNotExistException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
2643 
2644 }