View Javadoc
1   /*
2    * Copyright 2011 The Kuali Foundation 
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the
5    * "License"); you may not use this file except in compliance with the
6    * License. You may obtain a copy of the License at
7    *
8    * http://www.osedu.org/licenses/ECL-2.0
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.courseregistration.service;
18  
19  import org.kuali.rice.core.api.criteria.QueryByCriteria;
20  import org.kuali.student.enrollment.courseoffering.dto.RegistrationGroupInfo;
21  import org.kuali.student.enrollment.courseregistration.dto.ActivityRegistrationInfo;
22  import org.kuali.student.enrollment.courseregistration.dto.CourseRegistrationInfo;
23  import org.kuali.student.enrollment.courseregistration.dto.CreditLoadInfo;
24  import org.kuali.student.enrollment.courseregistration.dto.RegistrationRequestInfo;
25  import org.kuali.student.enrollment.courseregistration.dto.RegistrationRequestItemInfo;
26  import org.kuali.student.enrollment.courseregistration.infc.RegistrationRequestItem;
27  import org.kuali.student.r2.common.dto.ContextInfo;
28  import org.kuali.student.r2.common.dto.StatusInfo;
29  import org.kuali.student.r2.common.dto.ValidationResultInfo;
30  import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
31  import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
32  import org.kuali.student.r2.common.exceptions.DoesNotExistException;
33  import org.kuali.student.r2.common.exceptions.InvalidParameterException;
34  import org.kuali.student.r2.common.exceptions.MissingParameterException;
35  import org.kuali.student.r2.common.exceptions.OperationFailedException;
36  import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
37  import org.kuali.student.r2.common.exceptions.ReadOnlyException;
38  import org.kuali.student.r2.common.exceptions.VersionMismatchException;
39  import org.kuali.student.r2.common.util.constants.CourseRegistrationServiceConstants;
40  
41  import javax.jws.WebParam;
42  import javax.jws.WebService;
43  import javax.jws.soap.SOAPBinding;
44  import java.util.List;
45  
46  /**
47   * The Course Registration Service is a Class II service supporting
48   * the process of registering a student in course(s) for a term. The
49   * service provides operations for creating and validating
50   * registration requests, registering for a course, and dropping a
51   * course. 
52   *
53   * This service supports the concept of registration cart in the
54   * application and all of the transactional requests for registration
55   * are made through this service. As part of negotiating the student's
56   * registration, operations are provided to manage related exceptions
57   * and holds related to registration.
58   * 
59   * @version 0.0.7
60   * @author Kuali Student Team (sambit)
61   */
62  
63  @WebService(name = "CourseRegistrationService", targetNamespace = CourseRegistrationServiceConstants.NAMESPACE)
64  @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
65  public interface CourseRegistrationService  {
66  
67      // CourseRegistration methods
68  
69      /**
70       * Retrieves a single CourseRegistration by a CourseRegistration Id.
71       *
72       * @param courseRegistrationId the identifier for the
73       *        CourseRegistration to be retrieved
74       * @param contextInfo information containing the principalId and
75       *        locale information about the caller of the service
76       *        operation
77       * @return the CourseRegistration requested
78       * @throws DoesNotExistException courseRegistrationId is not found
79       * @throws InvalidParameterException contextInfo is not valid
80       * @throws MissingParameterException courseRegistrationId or
81       *         contextInfo is missing or null
82       * @throws OperationFailedException unable to complete request
83       * @throws PermissionDeniedException an authorization failure occurred
84       */
85      public CourseRegistrationInfo getCourseRegistration(@WebParam(name = "courseRegistrationId") String courseRegistrationId,
86                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
87          throws DoesNotExistException, 
88                 InvalidParameterException,
89                 MissingParameterException, 
90                 OperationFailedException, 
91                 PermissionDeniedException;
92  
93      /**
94       * Retrieve a list of CourseRegistrations from a list of
95       * CourseRegistration Ids. The returned list may be in any order
96       * and if duplicate Ids are supplied, a unique set may or may not
97       * ber returned.
98       *
99       * @param courseRegistrationIds a list of CourseRegistration identifiers
100      * @param contextInfo information containing the principalId and
101      *        locale information about the caller of the service
102      *        operation
103      * @return a list of CourseRegistrations
104      * @throws DoesNotExistException a courseRegistrationId in the
105      *         list was not found
106      * @throws InvalidParameterException contextInfo is not valid
107      * @throws MissingParameterException courseRegistrationIds, an Id
108      *         in courseRegistrationIds, or contextInfo is missing or
109      *         null
110      * @throws OperationFailedException unable to complete request
111      * @throws PermissionDeniedException an authorization failure occurred
112      */
113     public List<CourseRegistrationInfo> getCourseRegistrationsByIds(@WebParam(name = "courseRegistrationIds") List<String> courseRegistrationIds,
114                                                                     @WebParam(name = "contextInfo") ContextInfo contextInfo)
115         throws DoesNotExistException, 
116                InvalidParameterException,
117                MissingParameterException, 
118                OperationFailedException, 
119                PermissionDeniedException;
120 
121     /**
122      * Retrieve a list of CourseRegistrationIds by CourseRegistration
123      * Type.
124      *
125      * @param courseRegistrationTypeKey an identifier for an
126      *        CourseRegistration Type
127      * @param contextInfo information containing the principalId and
128      *        locale information about the caller of the service
129      *        operation
130      * @return a list of CourseRegistrations identifiers matching
131      *         courseRegistrationTypeKey or an empty list of none found
132      * @throws InvalidParameterException contextInfo is not valid
133      * @throws MissingParameterException courseRegistrationTypeKey
134      *         or contextInfo is missing or null
135      * @throws OperationFailedException unable to complete request
136      * @throws PermissionDeniedException an authorization failure occurred
137      */
138     public List<String> getCourseRegistrationIdsByType(@WebParam(name = "courseRegistrationTypeKey") String courseRegistrationTypeKey,
139                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo)
140         throws InvalidParameterException,
141                MissingParameterException, 
142                OperationFailedException, 
143                PermissionDeniedException;
144 
145     /**
146      * Gets a list of CourseRegistrations for a given Student. 
147      *
148      * @param studentId an identifier for a Student
149      * @param contextInfo information containing the principalId and
150      *        locale information about the caller of the service
151      *        operation
152      * @return list of CourseRegistrations associated with the given
153      *         Student or an empty list if none found
154      * @throws InvalidParameterException contextInfo is not valid
155      * @throws MissingParameterException studentId or contextInfo is
156      *         missing or null
157      * @throws OperationFailedException unable to complete request
158      * @throws PermissionDeniedException an authorization failure occurred
159      */
160     public List<CourseRegistrationInfo> getCourseRegistrationsByStudent(@WebParam(name = "studentId") String studentId,
161                                                                         @WebParam(name = "contextInfo") ContextInfo contextInfo)
162         throws InvalidParameterException,
163                MissingParameterException, 
164                OperationFailedException, 
165                PermissionDeniedException;
166 
167     /**
168      * Gets a list of CourseRegistrations for a given CourseOffering.
169      *
170      * @param courseOfferingId an identifier for a CourseOffering
171      * @param contextInfo information containing the principalId and
172      *        locale information about the caller of the service
173      *        operation
174      * @return list of CourseRegistrations associated with the given
175      *         CourseOffering or an empty list if none found
176      * @throws InvalidParameterException contextInfo is not valid
177      * @throws MissingParameterException courseOfferingId or
178      *         contextInfo is missing or null
179      * @throws OperationFailedException unable to complete request
180      * @throws PermissionDeniedException an authorization failure occurred
181      */
182     public List<CourseRegistrationInfo> getCourseRegistrationsByCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId,
183                                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
184         throws InvalidParameterException,
185                MissingParameterException, 
186                OperationFailedException, 
187                PermissionDeniedException;
188 
189     /**
190      * Gets a list of CourseRegistrations for a given Student and
191      * CourseOffering.
192      *
193      * @param studentId an identifier for a Student
194      * @param courseOfferingId an identifier for a CourseOffering
195      * @param contextInfo information containing the principalId and
196      *        locale information about the caller of the service
197      *        operation
198      * @return list of CourseRegistrations associated with the given
199      *         Student and CourseOffering or an empty list if none
200      *         found
201      * @throws InvalidParameterException contextInfo is not valid
202      * @throws MissingParameterException studentId, courseOfferingId,
203      *         or contextInfo is missing or null
204      * @throws OperationFailedException unable to complete request
205      * @throws PermissionDeniedException an authorization failure occurred
206      */
207     public List<CourseRegistrationInfo> getCourseRegistrationsByStudentAndCourseOffering(@WebParam(name = "studentId") String studentId,
208                                                                                          @WebParam(name = "courseOfferingId") String courseOfferingId,
209                                                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
210         throws InvalidParameterException,
211                MissingParameterException, 
212                OperationFailedException, 
213                PermissionDeniedException;
214 
215     /**
216      * Gets a list of CourseRegistrations for a given Student and
217      * Term.
218      *
219      * @param studentId an identifier for a Student
220      * @param termId an identifier for a Term
221      * @param contextInfo information containing the principalId and
222      *        locale information about the caller of the service
223      *        operation
224      * @return list of CourseRegistrations associated with the given
225      *         Student and CourseOffering or an empty list if none
226      *         found
227      * @throws InvalidParameterException contextInfo is not valid
228      * @throws MissingParameterException studentId, termId,
229      *         or contextInfo is missing or null
230      * @throws OperationFailedException unable to complete request
231      * @throws PermissionDeniedException an authorization failure occurred
232      */
233     public List<CourseRegistrationInfo> getCourseRegistrationsByStudentAndTerm(@WebParam(name = "studentId") String studentId,
234                                                                                @WebParam(name = "termId") String termId,
235                                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
236         throws InvalidParameterException,
237                MissingParameterException, 
238                OperationFailedException, 
239                PermissionDeniedException;
240 
241     /**
242      * Searches for CourseRegistrations that meet the given search
243      * criteria.
244      *
245      * @param criteria the search criteria
246      * @param contextInfo information containing the principalId and
247      *        locale information about the caller of the service
248      *        operation
249      * @return a list of CourseRegistration identifiers matching the criteria
250      * @throws InvalidParameterException criteria or contextInfo is
251      *         not valid
252      * @throws MissingParameterException criteria or or contextInfo is
253      *         missing or null
254      * @throws OperationFailedException unable to complete request
255      * @throws PermissionDeniedException an authorization failure occurred
256      */
257     public List<String> searchForCourseRegistrationIds(@WebParam(name = "criteria") QueryByCriteria criteria,
258                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo)
259         throws InvalidParameterException,
260                MissingParameterException, 
261                OperationFailedException, 
262                PermissionDeniedException;
263 
264     /**
265      * Searches for CourseRegistrations that meet the given search
266      * criteria.
267      *
268      * @param criteria the search criteria
269      * @param contextInfo information containing the principalId and
270      *        locale information about the caller of the service
271      *        operation
272      * @return a list of CourseRegistrations matching the criteria
273      * @throws InvalidParameterException criteria or contextInfo is
274      *         not valid
275      * @throws MissingParameterException criteria or or contextInfo is
276      *         missing or null
277      * @throws OperationFailedException unable to complete request
278      * @throws PermissionDeniedException an authorization failure occurred
279      */
280     public List<CourseRegistrationInfo> searchForCourseRegistrations(@WebParam(name = "criteria") QueryByCriteria criteria,
281                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo)
282         throws InvalidParameterException,
283                MissingParameterException, 
284                OperationFailedException, 
285                PermissionDeniedException;
286 
287     // ActivityRegistration methods
288 
289     /**
290      * Retrieves a single ActivityRegistration by an
291      * ActivityRegistration Id.
292      *
293      * @param activityRegistrationId the identifier for the
294      *        ActivityRegistration to be retrieved
295      * @param contextInfo information containing the principalId and
296      *        locale information about the caller of the service
297      *        operation
298      * @return the ActivityRegistration requested
299      * @throws DoesNotExistException activityRegistrationId is not found
300      * @throws InvalidParameterException contextInfo is not valid
301      * @throws MissingParameterException activityRegistrationId or
302      *         contextInfo is missing or null
303      * @throws OperationFailedException unable to complete request
304      * @throws PermissionDeniedException an authorization failure occurred
305      */
306     public ActivityRegistrationInfo getActivityRegistration(@WebParam(name = "activityRegistrationId") String activityRegistrationId,
307                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
308         throws DoesNotExistException, 
309                InvalidParameterException,
310                MissingParameterException, 
311                OperationFailedException, 
312                PermissionDeniedException;
313 
314     /**
315      * Retrieve a list of ActivityRegistrations from a list of
316      * ActivityRegistration Ids. The returned list may be in any order
317      * and if duplicate Ids are supplied, a unique set may or may not
318      * ber returned.
319      *
320      * @param activityRegistrationIds a list of ActivityRegistration
321      *        identifiers
322      * @param contextInfo information containing the principalId and
323      *        locale information about the caller of the service
324      *        operation
325      * @return a list of ActivityRegistrations
326      * @throws DoesNotExistException a activityRegistrationId in the
327      *         list was not found
328      * @throws InvalidParameterException contextInfo is not valid
329      * @throws MissingParameterException activityRegistrationIds, an Id in
330      *         activityRegistrationIds, or contextInfo is missing or null
331      * @throws OperationFailedException unable to complete request
332      * @throws PermissionDeniedException an authorization failure occurred
333      */
334     public List<ActivityRegistrationInfo> getActivityRegistrationsByIds(@WebParam(name = "activityRegistrationIds") List<String> activityRegistrationIds,
335                                                                         @WebParam(name = "contextInfo") ContextInfo contextInfo)
336         throws DoesNotExistException, 
337                InvalidParameterException,
338                MissingParameterException, 
339                OperationFailedException, 
340                PermissionDeniedException;
341 
342     /**
343      * Retrieve a list of ActivityRegistrationIds by
344      * ActivityRegistration Type.
345      *
346      * @param activityRegistrationTypeKey an identifier for an
347      *        ActivityRegistration Type
348      * @param contextInfo information containing the principalId and
349      *        locale information about the caller of the service
350      *        operation
351      * @return a list of ActivityRegistrations identifiers matching
352      *         activityRegistrationTypeKey or an empty list of none
353      *         found
354      * @throws InvalidParameterException contextInfo is not valid
355      * @throws MissingParameterException activityRegistrationTypeKey
356      *         or contextInfo is missing or null
357      * @throws OperationFailedException unable to complete request
358      * @throws PermissionDeniedException an authorization failure occurred
359      */
360     public List<String> getActivityRegistrationIdsByType(@WebParam(name = "activityRegistrationTypeKey") String activityRegistrationTypeKey,
361                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
362         throws InvalidParameterException,
363                MissingParameterException, 
364                OperationFailedException, 
365                PermissionDeniedException;
366 
367     /**
368      * Gets a list of ActivityRegistrations for a CourseRegistration.
369      *
370      * @param courseRegistrationId an identifier for a CourseRegistration
371      * @param contextInfo information containing the principalId and
372      *        locale information about the caller of the service
373      *        operation
374      * @return list of ActivityRegistrations associated with the given
375      *         CourseRegistration or an empty list if none found
376      * @throws InvalidParameterException contextInfo is not valid
377      * @throws MissingParameterException courseRegistrationId or
378      *         contextInfo is missing or null
379      * @throws OperationFailedException unable to complete request
380      * @throws PermissionDeniedException an authorization failure occurred
381      */
382     public List<ActivityRegistrationInfo> getActivityRegistrationsForCourseRegistration(@WebParam(name = "courseRegistrationId") String courseRegistrationId,
383                                                                                         @WebParam(name = "contextInfo") ContextInfo contextInfo)
384         throws InvalidParameterException,
385                MissingParameterException, 
386                OperationFailedException, 
387                PermissionDeniedException;
388 
389     /**
390      * Gets a list of ActivityRegistrations for a given Student.
391      *
392      * @param studentId an identifier for a Student
393      * @param contextInfo information containing the principalId and
394      *        locale information about the caller of the service
395      *        operation
396      * @return list of ActivityRegistrations associated with the given
397      *         Student or an empty list if none found
398      * @throws InvalidParameterException contextInfo is not valid
399      * @throws MissingParameterException studentId or contextInfo is
400      *         missing or null
401      * @throws OperationFailedException unable to complete request
402      * @throws PermissionDeniedException an authorization failure occurred
403      */
404     public List<ActivityRegistrationInfo> getActivityRegistrationsByStudent(@WebParam(name = "studentId") String studentId,
405                                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
406         throws InvalidParameterException,
407                MissingParameterException, 
408                OperationFailedException, 
409                PermissionDeniedException;
410 
411     /**
412      * Gets a list of ActivityRegistrations for a given
413      * ActivityOffering.
414      *
415      * @param courseOfferingId an identifier for a ActivityOffering
416      * @param contextInfo information containing the principalId and
417      *        locale information about the caller of the service
418      *        operation
419      * @return list of ActivityRegistrations associated with the given
420      *         ActivityOffering or an empty list if none found
421      * @throws InvalidParameterException contextInfo is not valid
422      * @throws MissingParameterException courseOfferingId or
423      *         contextInfo is missing or null
424      * @throws OperationFailedException unable to complete request
425      * @throws PermissionDeniedException an authorization failure occurred
426      */
427     public List<ActivityRegistrationInfo> getActivityRegistrationsByActivityOffering(@WebParam(name = "courseOfferingId") String courseOfferingId,
428                                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo)
429         throws InvalidParameterException,
430                MissingParameterException, 
431                OperationFailedException, 
432                PermissionDeniedException;
433 
434     /**
435      * Gets a list of ActivityRegistrations for a given Student and
436      * ActivityOffering.
437      *
438      * @param studentId an identifier for a Student
439      * @param courseOfferingId an identifier for a ActivityOffering
440      * @param contextInfo information containing the principalId and
441      *        locale information about the caller of the service
442      *        operation
443      * @return list of ActivityRegistrations associated with the given
444      *         Student and ActivityOffering or an empty list if none
445      *         found
446      * @throws InvalidParameterException contextInfo is not valid
447      * @throws MissingParameterException studentId, courseOfferingId,
448      *         or contextInfo is missing or null
449      * @throws OperationFailedException unable to complete request
450      * @throws PermissionDeniedException an authorization failure occurred
451      */
452     public List<ActivityRegistrationInfo> getActivityRegistrationsByStudentAndActivityOffering(@WebParam(name = "studentId") String studentId,
453                                                                                                @WebParam(name = "courseOfferingId") String courseOfferingId,
454                                                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo)
455         throws InvalidParameterException,
456                MissingParameterException, 
457                OperationFailedException, 
458                PermissionDeniedException;
459 
460     /**
461      * Gets a list of ActivityRegistrations for a given Student and
462      * Term.
463      *
464      * @param studentId an identifier for a Student
465      * @param termId an identifier for a Term
466      * @param contextInfo information containing the principalId and
467      *        locale information about the caller of the service
468      *        operation
469      * @return list of ActivityRegistrations associated with the given
470      *         Student and ActivityOffering or an empty list if none
471      *         found
472      * @throws InvalidParameterException contextInfo is not valid
473      * @throws MissingParameterException studentId, termId,
474      *         or contextInfo is missing or null
475      * @throws OperationFailedException unable to complete request
476      * @throws PermissionDeniedException an authorization failure occurred
477      */
478     public List<ActivityRegistrationInfo> getActivityRegistrationsByStudentAndTerm(@WebParam(name = "studentId") String studentId,
479                                                                                    @WebParam(name = "termId") String termId,
480                                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo)
481         throws InvalidParameterException,
482                MissingParameterException, 
483                OperationFailedException, 
484                PermissionDeniedException;
485 
486     /**
487      * Searches for ActivityRegistrations that meet the given search
488      * criteria.
489      *
490      * @param criteria the search criteria
491      * @param contextInfo information containing the principalId and
492      *        locale information about the caller of the service
493      *        operation
494      * @return a list of ActivityRegistration identifiers matching the
495      *         criteria
496      * @throws InvalidParameterException criteria or contextInfo is
497      *         not valid
498      * @throws MissingParameterException criteria or or contextInfo is
499      *         missing or null
500      * @throws OperationFailedException unable to complete request
501      * @throws PermissionDeniedException an authorization failure occurred
502      */
503     public List<String> searchForActivityRegistrationIds(@WebParam(name = "criteria") QueryByCriteria criteria,
504                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
505         throws InvalidParameterException,
506                MissingParameterException, 
507                OperationFailedException, 
508                PermissionDeniedException;
509 
510     /**
511      * Searches for ActivityRegistrations that meet the given search
512      * criteria.
513      *
514      * @param criteria the search criteria
515      * @param contextInfo information containing the principalId and
516      *        locale information about the caller of the service
517      *        operation
518      * @return a list of ActivityRegistrations matching the criteria
519      * @throws InvalidParameterException criteria or contextInfo is
520      *         not valid
521      * @throws MissingParameterException criteria or or contextInfo is
522      *         missing or null
523      * @throws OperationFailedException unable to complete request
524      * @throws PermissionDeniedException an authorization failure occurred
525      */
526     public List<ActivityRegistrationInfo> searchForActivityRegistrations(@WebParam(name = "criteria") QueryByCriteria criteria,
527                                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
528         throws InvalidParameterException,
529                MissingParameterException, 
530                OperationFailedException, 
531                PermissionDeniedException;
532 
533     // RegistrationRequest methods
534 
535     /**
536      * Retrieves a single RegistrationRequest by an
537      * RegistrationRequest Id.
538      *
539      * @param registrationRequestId the identifier for the
540      *        RegistrationRequest to be retrieved
541      * @param contextInfo information containing the principalId and
542      *        locale information about the caller of the service
543      *        operation
544      * @return the RegistrationRequest requested
545      * @throws DoesNotExistException registrationRequestId is not found
546      * @throws InvalidParameterException contextInfo is not valid
547      * @throws MissingParameterException registrationRequestId or contextInfo is
548      *         missing or null
549      * @throws OperationFailedException unable to complete request
550      * @throws PermissionDeniedException an authorization failure occurred
551      */
552     public RegistrationRequestInfo getRegistrationRequest(@WebParam(name = "registrationRequestId") String registrationRequestId,
553                                                           @WebParam(name = "contextInfo") ContextInfo contextInfo)
554         throws DoesNotExistException, 
555                InvalidParameterException,
556                MissingParameterException, 
557                OperationFailedException, 
558                PermissionDeniedException;
559 
560     /**
561      * Retrieve a list of RegistrationRequests from a list of
562      * RegistrationRequest Ids. The returned list may be in any order
563      * and if duplicate Ids are supplied, a unique set may or may not
564      * ber returned.
565      *
566      * @param registrationRequestIds a list of RegistrationRequest
567      *        identifiers
568      * @param contextInfo information containing the principalId and
569      *        locale information about the caller of the service
570      *        operation
571      * @return a list of RegistrationRequests
572      * @throws DoesNotExistException a registrationRequestId in the
573      *         list was not found
574      * @throws InvalidParameterException contextInfo is not valid
575      * @throws MissingParameterException registrationRequestIds, an Id in
576      *         registrationRequestIds, or contextInfo is missing or null
577      * @throws OperationFailedException unable to complete request
578      * @throws PermissionDeniedException an authorization failure occurred
579      */
580     public List<RegistrationRequestInfo> getRegistrationRequestsByIds(@WebParam(name = "registrationRequestIds") List<String> registrationRequestIds,
581                                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo)
582         throws DoesNotExistException, 
583                InvalidParameterException,
584                MissingParameterException, 
585                OperationFailedException, 
586                PermissionDeniedException;
587 
588     /**
589      * Retrieve a list of RegistrationRequestIds by
590      * RegistrationRequest Type.
591      *
592      * @param registrationRequestTypeKey an identifier for an
593      *        RegistrationRequest Type
594      * @param contextInfo information containing the principalId and
595      *        locale information about the caller of the service
596      *        operation
597      * @return a list of RegistrationRequests identifiers matching
598      *         registrationRequestTypeKey or an empty list of none
599      *         found
600      * @throws InvalidParameterException contextInfo is not valid
601      * @throws MissingParameterException registrationRequestTypeKey or
602      *         contextInfo is missing or null
603      * @throws OperationFailedException unable to complete request
604      * @throws PermissionDeniedException an authorization failure occurred
605      */
606     public List<String> getRegistrationRequestIdsByType(@WebParam(name = "registrationRequestTypeKey") String registrationRequestTypeKey,
607                                                         @WebParam(name = "contextInfo") ContextInfo contextInfo)
608         throws InvalidParameterException,
609                MissingParameterException, 
610                OperationFailedException, 
611                PermissionDeniedException;
612 
613     /**
614      * Gets a list of RegistrationRequests by requesting person Id. 
615      *
616      * @param personId an identifier for a Person
617      * @param contextInfo information containing the principalId and
618      *        locale information about the caller of the service
619      *        operation
620      * @return list of RegistrationRequests associated with the given Lui or
621      *         an empty list if none found 
622      * @throws InvalidParameterException contextInfo is not valid
623      * @throws MissingParameterException personId
624      *         or contextInfo is missing or null
625      * @throws OperationFailedException unable to complete request
626      * @throws PermissionDeniedException an authorization failure occurred
627      */
628     public List<RegistrationRequestInfo> getRegistrationRequestsByRequestor(@WebParam(name = "pesonId") String personId,
629                                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
630         throws InvalidParameterException,
631                MissingParameterException, 
632                OperationFailedException, 
633                PermissionDeniedException;
634 
635     /**
636      * Gets a list of unsubmitted RegistrationRequests by requesting
637      * person Id and Term.
638      *
639      * @param requestorId an identifier for the person who is authoring the request
640      * @param termId an identifier for a Term
641      * @param contextInfo information containing the principalId and
642      *        locale information about the caller of the service
643      *        operation
644      * @return list of RegistrationRequests associated with the given Lui or
645      *         an empty list if none found 
646      * @throws InvalidParameterException contextInfo is not valid
647      * @throws MissingParameterException personId, termId,
648      *         or contextInfo is missing or null
649      * @throws OperationFailedException unable to complete request
650      * @throws PermissionDeniedException an authorization failure occurred
651      */
652 
653     public List<RegistrationRequestInfo> getUnsubmittedRegistrationRequestsByRequestorAndTerm(@WebParam(name = "requestorId") String requestorId, 
654                                                                                               @WebParam(name = "termId") String termId,
655                                                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo) 
656         throws InvalidParameterException,
657                MissingParameterException, 
658                OperationFailedException, 
659                PermissionDeniedException;
660 
661     /**
662      * Searches for RegistrationRequests that meet the given search
663      * criteria.
664      *
665      * @param criteria the search criteria
666      * @param contextInfo information containing the principalId and
667      *        locale information about the caller of the service
668      *        operation
669      * @return a list of RegistrationRequest identifiers matching the
670      *         criteria
671      * @throws InvalidParameterException criteria or contextInfo is
672      *         not valid
673      * @throws MissingParameterException criteria or or contextInfo is
674      *         missing or null
675      * @throws OperationFailedException unable to complete request
676      * @throws PermissionDeniedException an authorization failure occurred
677      */
678     public List<String> searchForRegistrationRequestIds(@WebParam(name = "criteria") QueryByCriteria criteria,
679                                                         @WebParam(name = "contextInfo") ContextInfo contextInfo)
680         throws InvalidParameterException,
681                MissingParameterException, 
682                OperationFailedException, 
683                PermissionDeniedException;
684 
685     /**
686      * Searches for RegistrationRequests that meet the given search
687      * criteria.
688      *
689      * @param criteria the search criteria
690      * @param contextInfo information containing the principalId and
691      *        locale information about the caller of the service
692      *        operation
693      * @return a list of RegistrationRequests matching the criteria
694      * @throws InvalidParameterException criteria or contextInfo is
695      *         not valid
696      * @throws MissingParameterException criteria or or contextInfo is
697      *         missing or null
698      * @throws OperationFailedException unable to complete request
699      * @throws PermissionDeniedException an authorization failure occurred
700      */
701     public List<RegistrationRequestInfo> searchForRegistrationRequests(@WebParam(name = "criteria") QueryByCriteria criteria,
702                                                                        @WebParam(name = "contextInfo") ContextInfo contextInfo)
703         throws InvalidParameterException,
704                MissingParameterException, 
705                OperationFailedException, 
706                PermissionDeniedException;
707 
708     /**
709      * Validates a RegistrationRequest. Depending on the value of
710      * validationType, this validation could be limited to tests on
711      * just the current RegistrationRequest and its directly contained
712      * sub-objects or expanded to perform all tests related to this
713      * RegistrationRequest. If an identifier is present for the
714      * RegistrationRequest (and/or one of its contained sub-objects)
715      * and a record is found for that identifier, the validation
716      * checks if the RegistrationRequest can be updated to the new
717      * values. If an identifier is not present or a record does not
718      * exist, the validation checks if the RegistrationRequest with
719      * the given data can be created.
720      *
721      * @param validationTypeKey the identifier for the validation Type
722      * @param registrationRequestTypeKey the identifier for the
723      *        RegistrationRequest Type to be validated
724      * @param registrationRequestInfo the RegistrationRequest to be validated
725      * @param contextInfo information containing the principalId and
726      *        locale information about the caller of the service
727      *        operation
728      * @return a list of validation results or an empty list if
729      *         validation succeeded
730      * @throws DoesNotExistException validationTypeKey or
731      *         registrationRequestTypeKey is not found
732      * @throws InvalidParameterException registrationRequestInfo or
733      *         contextInfo is not valid
734      * @throws MissingParameterException validationTypeKey,
735      *         registrationRequestTypeKey, registrationRequestInfo, or
736      *         contextInfo is missing or null
737      * @throws OperationFailedException unable to complete request
738      * @throws PermissionDeniedException an authorization failure occurred
739      */
740     public List<ValidationResultInfo> validateRegistrationRequest(@WebParam(name = "validationTypeKey") String validationTypeKey,
741                                                                   @WebParam(name = "registrationRequestTypeKey") String registrationRequestTypeKey,
742                                                                   @WebParam(name = "registrationRequestInfo") RegistrationRequestInfo registrationRequestInfo,
743                                                                   @WebParam(name = "contextInfo") ContextInfo contextInfo)
744         throws DoesNotExistException,
745                InvalidParameterException,
746                MissingParameterException, 
747                OperationFailedException, 
748                PermissionDeniedException;
749 
750     /**
751      * Creates a new RegistrationRequest. The RegistrationRequest Id,
752      * Type, and Meta information may not be set in the supplied data
753      * object.
754      *
755      * @param registrationRequestTypeKey the identifier for the Type
756      *        of RegistrationRequest to be created
757      * @param registrationRequestInfo the data with which to create
758      *        the RegistrationRequest
759      * @param contextInfo information containing the principalId and
760      *        locale information about the caller of the service
761      *        operation
762      * @return the new RegistrationRequest
763      * @throws DataValidationErrorException supplied data is invalid
764      * @throws DoesNotExistException registrationRequestTypeKey does
765      *         not exist or is not supported
766      * @throws InvalidParameterException registrationRequestInfo or
767      *         contextInfo is not valid
768      * @throws MissingParameterException registrationRequestTypeKey,
769      *         registrationRequestInfo, or contextInfo is missing or null
770      * @throws OperationFailedException unable to complete request
771      * @throws PermissionDeniedException an authorization failure occurred
772      * @throws ReadOnlyException an attempt at supplying information
773      *         designated as read only
774      */
775     public RegistrationRequestInfo createRegistrationRequest(@WebParam(name = "registrationRequestTypeKey") String registrationRequestTypeKey,
776                                                              @WebParam(name = "registrationRequestInfo") RegistrationRequestInfo registrationRequestInfo,
777                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
778         throws DataValidationErrorException,
779                DoesNotExistException,
780                InvalidParameterException,
781                MissingParameterException, 
782                OperationFailedException, 
783                PermissionDeniedException,
784                ReadOnlyException;
785 
786     /**
787      * A utiligy to create a new RegistrationRequest from an existing
788      * RegistrationRequest. Once a RegistrationRequest is submitted,
789      * it cannot be reused. If the registration fails, this method can
790      * be used to copy the contents of the failed request into a new
791      * request.
792      *
793      * @param registrationRequestId a RegistrationRequest from which to create 
794      *        the new one
795      * @param contextInfo information containing the principalId and
796      *        locale information about the caller of the service
797      *        operation
798      * @return the new RegistrationRequest
799      * @throws DoesNotExistException registrationRequestId does
800      *         not exist
801      * @throws InvalidParameterException contextInfo is not valid
802      * @throws MissingParameterException registrationRequestId or
803      *         contextInfo is missing or null
804      * @throws OperationFailedException unable to complete request
805      * @throws PermissionDeniedException an authorization failure occurred
806      */
807     public RegistrationRequestInfo createRegistrationRequestFromExisting(@WebParam(name = "registrationRequestId") String registrationRequestId, 
808                                                                          @WebParam(name = "contextInfo") ContextInfo contextInfo)
809         throws DoesNotExistException,               
810                InvalidParameterException,
811                MissingParameterException, 
812                OperationFailedException, 
813                PermissionDeniedException;
814 
815     /**
816      * Updates an existing Registration Request. The
817      * RegistrationRequest Id, Type, and Meta information may not be
818      * changed.
819      *
820      * @param registrationRequestId the identifier for the
821      *        RegistrationRequest to be updated
822      * @param registrationRequestInfo the new data for the RegistrationRequest
823      * @param contextInfo information containing the principalId and
824      *        locale information about the caller of the service
825      *        operation
826      * @return the updated RegistrationRequest
827      * @throws DataValidationErrorException supplied data is invalid
828      * @throws DoesNotExistException registrationRequestId is not found
829      * @throws InvalidParameterException registrationRequestInfo or
830      *         contextInfo is not valid
831      * @throws MissingParameterException registrationRequestId,
832      *         registrationRequestInfo, or contextInfo is missing or
833      *         null
834      * @throws OperationFailedException unable to complete request
835      * @throws PermissionDeniedException an authorization failure occurred
836      * @throws ReadOnlyException an attempt at supplying information
837      *         designated as read only
838      * @throws VersionMismatchException an optimistic locking failure
839      *         or the action was attempted on an out of date version
840      */
841     public RegistrationRequestInfo updateRegistrationRequest(@WebParam(name = "registrationRequestId") String registrationRequestId,
842                                                              @WebParam(name = "registrationRequestInfo") RegistrationRequestInfo registrationRequestInfo,
843                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
844         throws DataValidationErrorException,
845                DoesNotExistException,
846                InvalidParameterException,
847                MissingParameterException, 
848                OperationFailedException, 
849                PermissionDeniedException,
850                ReadOnlyException,
851                VersionMismatchException;
852 
853     /**
854      * Updates the state of an existing RegistrationRequest to another
855      * state provided that it is valid to do so.
856      *
857      * @param registrationRequestId the identifier of the
858      *        RegistrationRequest to be updated
859      * @param nextStateKey the State Key into which the identified
860      *        RegistrationRequest will be placed if the operation
861      *        succeeds
862      * @param contextInfo information containing the principalId and
863      *        locale information about the caller of service operation
864      * @return status of the operation. This value must be true.
865      * @throws DoesNotExistException registrationRequestId not found
866      * @throws InvalidParameterException the contextInfo object is invalid
867      * @throws MissingParameterException registrationRequestId,
868      *         nextStateKey, or contextInfo is missing or null
869      * @throws OperationFailedException unable to complete request
870      * @throws PermissionDeniedException authorization failure
871      */
872     public StatusInfo changeRegistrationRequestState(@WebParam(name = "registrationRequestId") String registrationRequestId, 
873                                                      @WebParam(name = "nextStateKey") String nextStateKey, 
874                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) 
875         throws DoesNotExistException, 
876                InvalidParameterException, 
877                MissingParameterException, 
878                OperationFailedException, 
879                PermissionDeniedException;
880 
881     /**
882      * Deletes an existing RegistrationRequest.
883      *
884      * @param registrationRequestId the identifier for the
885      *        RegistrationRequest to be deleted
886      * @param contextInfo information containing the principalId and
887      *        locale information about the caller of the service
888      *        operation
889      * @return the status of the delete operation. This must always be
890      *         true.
891      * @throws DoesNotExistException registrationRequestId is not found
892      * @throws InvalidParameterException contextInfo is not valid
893      * @throws MissingParameterException registrationRequestId or
894      *         contextInfo is missing or null
895      * @throws OperationFailedException unable to complete request
896      * @throws PermissionDeniedException authorization failure
897      */
898     public StatusInfo deleteRegistrationRequest(@WebParam(name = "registrationRequestId") String registrationRequestId,
899                                                 @WebParam(name = "contextInfo") ContextInfo contextInfo) 
900         throws DoesNotExistException, 
901                InvalidParameterException,
902                MissingParameterException, 
903                OperationFailedException, 
904                PermissionDeniedException;
905 
906     /**
907      * Verifies a persisted RegistrationRequest for
908      * submission. validateRegistrationRequest() validates the data
909      * for persistence of the request itself. This method is intended
910      * as a final validation prior to submission and may perform
911      * additional checks, such as eligibility, course pre-requisites,
912      * and calculating credit load limits.
913      *
914      * @param registrationRequestId an identifier for a
915      *        RegistrationRequest
916      * @param contextInfo information containing the principalId and
917      *        locale information about the caller of the service
918      *        operation
919      * @return a list of ValidationResults
920      * @throws DoesNotExistException registrationRequestId
921      *         is not found
922      * @throws InvalidParameterException contextInfo is not valid
923      * @throws MissingParameterException registrationRequestId or
924      *         contextInfo is missing or null
925      * @throws OperationFailedException unable to complete request
926      * @throws PermissionDeniedException an authorization failure occurred
927      */
928     public List<ValidationResultInfo> verifyRegistrationRequestForSubmission(@WebParam(name = "registrationRequestId") String registrationRequestId, 
929                                                                              @WebParam(name = "contextInfo") ContextInfo contextInfo)
930         throws DoesNotExistException,
931                InvalidParameterException,
932                MissingParameterException, 
933                OperationFailedException, 
934                PermissionDeniedException;
935 
936     /**
937      * Submits a RegsitrationRequest. 
938      * 
939      * This method is transactional in that the processing for all items 
940      * must complete or all the items must be rolled back.
941      * 
942      * Note: "complete" does not mean the student got into the class.  She could have been
943      * denied because the class was full or some other reason.  Complete means all of the items were
944      * successfully processed and the results (whether successfully or not) happen as a single unit.
945      *
946      * @param registrationRequestId an identifier for a RegistrationRequest
947      * @param contextInfo information containing the principalId and
948      *        locale information about the caller of the service
949      *        operation
950      * @return the registration request updated based on the submit
951      * @throws AlreadyExistsException When the reg request is already submitted
952      * @throws DoesNotExistException registrationRequestId
953      *         is not found
954      * @throws InvalidParameterException contextInfo is not valid
955      * @throws MissingParameterException registrationRequestId or
956      *         contextInfo is missing or null
957      * @throws OperationFailedException unable to complete request
958      * @throws PermissionDeniedException an authorization failure occurred
959      */
960     public RegistrationRequestInfo submitRegistrationRequest(@WebParam(name = "registrationRequestId") String registrationRequestId, 
961                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo) 
962         throws AlreadyExistsException,
963                DoesNotExistException,
964                InvalidParameterException,
965                MissingParameterException, 
966                OperationFailedException, 
967                PermissionDeniedException;
968 
969     /**
970      * Retrieves a single RegistrationRequestItem by an RegistrationRequestItem Id.
971      * @param registrationRequestItemId the identifier for the RegistrationRequestItem to be retrieved
972      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
973      * @return the RegistrationRequestItem requested
974      * @throws DoesNotExistException registrationRequestItemId is not found
975      * @throws InvalidParameterException contextInfo is not valid
976      * @throws MissingParameterException registrationRequestItemId or contextInfo is missing or null
977      * @throws OperationFailedException unable to complete request
978      * @throws PermissionDeniedException an authorization failure occurred
979      */
980     public RegistrationRequestItemInfo getRegistrationRequestItem(@WebParam(name = "registrationRequestItemId") String registrationRequestItemId,
981                                                                   @WebParam(name = "contextInfo") ContextInfo contextInfo)
982         throws DoesNotExistException,
983             InvalidParameterException,
984             MissingParameterException,
985             OperationFailedException,
986             PermissionDeniedException;
987 
988     /**
989      * Retrieves a list of RegistrationRequestItems from a list of RegistrationRequestItem Ids. The returned list may be
990      * in any order and if duplicate Ids are supplied, a unique set may or may not be returned.
991      * @param registrationRequestItemIds a list of RegistrationRequestItem identifiers
992      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
993      * @return a list of RegistrationRequestItems
994      * @throws DoesNotExistException a registrationRequestItemId was not found
995      * @throws InvalidParameterException contextInfo is not valid
996      * @throws MissingParameterException registrationRequestItemIds, an Id in the registrationRequestItemIds, or contextInfo is missing or null
997      * @throws OperationFailedException unable to complete request
998      * @throws PermissionDeniedException an authorization failure occurred
999      */
1000     public List<RegistrationRequestItemInfo> getRegistrationRequestItemsByIds(@WebParam(name = "registrationRequestItemIds") List<String> registrationRequestItemIds,
1001                                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo)
1002             throws DoesNotExistException,
1003             InvalidParameterException,
1004             MissingParameterException,
1005             OperationFailedException,
1006             PermissionDeniedException;
1007 
1008     /**
1009      * Retrieves a list of RegistrationRequestItem Ids by RegistrationRequestItem Type.
1010      * @param registrationRequestItemTypeKey an identifier for an RegistrationRequestItem Type
1011      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
1012      * @return a list of RegistrationRequestItem identifiers matching registrationRequestItemTypeKey or an empty list if none found
1013      * @throws InvalidParameterException registrationRequestItemTypeKey or contextInfo is not valid
1014      * @throws MissingParameterException registrationRequestItemTypeKey or contextInfo is missing or null
1015      * @throws OperationFailedException unable to complete request
1016      * @throws PermissionDeniedException an authorization failure occurred
1017      */
1018     public List<String> getRegistrationRequestItemIdsByType(@WebParam(name = "registrationRequestItemTypeKey") String registrationRequestItemTypeKey,
1019                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
1020             throws InvalidParameterException,
1021             MissingParameterException,
1022             OperationFailedException,
1023             PermissionDeniedException;
1024 
1025     /**
1026      * Searches for RegistrationRequestItem Ids that meet the given search criteria.
1027      * @param criteria the search criteria
1028      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
1029      * @return a list of RegistrationRequestItem identifiers matching the criteria
1030      * @throws InvalidParameterException criteria or contextInfo is not valid
1031      * @throws MissingParameterException criteria or contextInfo is missing or null
1032      * @throws OperationFailedException unable to complete request
1033      * @throws PermissionDeniedException an authorization failure occurred
1034      */
1035     public List<String> searchForRegistrationRequestItemIds(@WebParam(name = "criteria") QueryByCriteria criteria,
1036                                                             @WebParam(name = "contextInfo") ContextInfo contextInfo)
1037             throws InvalidParameterException,
1038             MissingParameterException,
1039             OperationFailedException,
1040             PermissionDeniedException;
1041 
1042     /**
1043      * Searches for RegistrationRequestItems that meet the given search criteria.
1044      * @param criteria the search criteria
1045      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
1046      * @return a list of RegistrationRequestItems matching the criteria
1047      * @throws InvalidParameterException criteria or contextInfo is not valid
1048      * @throws MissingParameterException criteria or contextInfo is missing or null
1049      * @throws OperationFailedException unable to complete request
1050      * @throws PermissionDeniedException an authorization failure occurred
1051      */
1052     public List<RegistrationRequestItemInfo> searchForRegistrationRequestItems(@WebParam(name = "criteria") QueryByCriteria criteria,
1053                                                                            @WebParam(name = "contextInfo") ContextInfo contextInfo)
1054             throws InvalidParameterException,
1055             MissingParameterException,
1056             OperationFailedException,
1057             PermissionDeniedException;
1058 
1059     /**
1060      * Gets the RegistrationRequestItems that resulted in or impacted
1061      * the given CourseRegistration.
1062      * 
1063      * @param courseRegistrationId an identifier for a CourseRegistration
1064      * @param contextInfo information containing the principalId and
1065      *        locale information about the caller of the service
1066      *        operation
1067      * @return list of RegistrationRequests associated with the given
1068      *         CourseRegistration or an empty list if none found
1069      * @throws InvalidParameterException contextInfo is not valid
1070      * @throws MissingParameterException personId
1071      *         or contextInfo is missing or null
1072      * @throws OperationFailedException unable to complete request
1073      * @throws PermissionDeniedException an authorization failure occurred
1074      */
1075     public List<RegistrationRequestItemInfo> getRegistrationRequestItemsForCourseRegistration(@WebParam(name = "courseRegistrationId") String courseRegistrationId, 
1076                                                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo)
1077         throws InvalidParameterException,
1078                MissingParameterException, 
1079                OperationFailedException, 
1080                PermissionDeniedException;
1081 
1082     /**
1083      * Validates an RegistrationRequestItem. Depending on the value of validationType, this validation could be limited to tests on just
1084      * the current RegistrationRequestItem and its directly contained sub-objects or expanded to perform all tests related to this
1085      * RegistrationRequestItem. If an identifier is present for the RegistrationRequestItem (and/or one of its contained sub-objects) and a record is
1086      * found for that identifier, the validation checks if the RegistrationRequestItem can be updated to the new values. If an identifier
1087      * is not present or a record does not exist, the validation checks if the RegistrationRequestItem with the given data can be created.
1088      * @param validationTypeKey the identifier for the validation Type
1089      * @param registrationRequestItemTypeKey the identifier for the RegistrationRequestItem Type to be validated
1090      * @param registrationRequestItemInfo the RegistrationRequestItemInfo to be validated
1091      * @param registrationRequestId the registrationRequestId
1092      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
1093      * @return a list of validation results or an empty list if validation succeeded
1094      * @throws DoesNotExistException validationTypeKey or registrationRequestItemTypeKey is not found
1095      * @throws InvalidParameterException registrationRequestItemInfo or contextInfo is not valid
1096      * @throws MissingParameterException registrationRequestItemId or contextInfo is missing or null
1097      * @throws OperationFailedException unable to complete request
1098      * @throws PermissionDeniedException an authorization failure occurred
1099      */
1100     public List<ValidationResultInfo> validateRegistrationRequestItem(@WebParam(name = "validationTypeKey") String validationTypeKey,
1101                                                                       @WebParam(name = "registrationRequestItemTypeKey") String registrationRequestItemTypeKey,
1102                                                                       @WebParam(name = "registrationRequestItemInfo") RegistrationRequestItemInfo registrationRequestItemInfo,
1103                                                                       @WebParam(name = "registrationRequestId") String registrationRequestId,
1104                                                                       @WebParam(name = "contextInfo") ContextInfo contextInfo)
1105         throws DoesNotExistException,
1106             InvalidParameterException,
1107             MissingParameterException,
1108             OperationFailedException,
1109             PermissionDeniedException;
1110 
1111    
1112     /**
1113      * Changes an existing Registration Request Item. 
1114      * 
1115      * This is a convenience operation so that the data associated with a single item may be changed without having to 
1116      * resubmit the entire registration request.
1117      * 
1118      * The RegistrationRequestItem Id, Type, and Meta information may not be changed.
1119      * @param registrationRequestItemId the identifier for the RegistrationRequestItem to be updated
1120      * @param registrationRequestItemInfo the new data for the RegistrationRequestItem
1121      * @param contextInfo information containing the principalId and locale information about the caller of the service operation
1122      * @return the updated RegistrationRequestItem
1123      * @throws DataValidationErrorException supplied data is invalid
1124      * @throws DoesNotExistException registrationRequestItemTypeKey does not exist or is not supported
1125      * @throws InvalidParameterException registrationRequestItemInfo or contextInfo is not valid
1126      * @throws MissingParameterException registrationRequestItemInfo, or contextInfo is missing or null
1127      * @throws OperationFailedException unable to complete request
1128      * @throws PermissionDeniedException an authorization failure occurred
1129      * @throws ReadOnlyException an attempt at supplying information designated as read only
1130      * @throws VersionMismatchException an optimistic locking failure or the action was attempted on an out of date version
1131      */
1132     public RegistrationRequestItemInfo changeRegistrationRequestItem(@WebParam(name = "registrationRequestItemId") String registrationRequestItemId,
1133                                                                      @WebParam(name = "registrationRequestItemInfo") RegistrationRequestItemInfo registrationRequestItemInfo,
1134                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo)
1135             throws DataValidationErrorException,
1136             DoesNotExistException,
1137             InvalidParameterException,
1138             MissingParameterException,
1139             OperationFailedException,
1140             PermissionDeniedException,
1141             ReadOnlyException,
1142             VersionMismatchException;
1143 
1144    
1145 
1146     /**
1147      * Gets list of RegistrationRequestItems resulting in or impacting
1148      * a Student's registration in a CourseOffering.
1149      * 
1150      * @param courseOfferingId an identifier for a CourseOffering
1151      * @param studentId an identifier for a Student
1152      * @param contextInfo information containing the principalId and
1153      *        locale information about the caller of the service
1154      *        operation
1155      * @return list of RegistrationRequests associated with the given
1156      *         CourseOffering or an empty list if none found
1157      * @throws InvalidParameterException contextInfo is not valid
1158      * @throws MissingParameterException courseOfferingId, personId,
1159      *         or contextInfo is missing or null
1160      * @throws OperationFailedException unable to complete request
1161      * @throws PermissionDeniedException an authorization failure occurred
1162      */
1163     public List<RegistrationRequestItemInfo> getRegistrationRequestItemsByCourseOfferingAndStudent(@WebParam(name = "courseOfferingId") String courseOfferingId, 
1164                                                                                                    @WebParam(name = "studentId") String studentId,
1165                                                                                                    @WebParam(name = "contextInfo") ContextInfo contextInfo) 
1166         throws InvalidParameterException,
1167                MissingParameterException, 
1168                OperationFailedException, 
1169                PermissionDeniedException;
1170 
1171     /**
1172      * Checks if a student is eligible to enter the registration
1173      * process. 
1174      *
1175      * @param studentId Identifier of the student
1176      * @param contextInfo information containing the principalId and
1177      *        locale information about the caller of the service
1178      *        operation
1179      * @return a list of errors, warnings, or informational messages
1180      * @throws DoesNotExistException studentId is not found
1181      * @throws InvalidParameterException contextInfo is not valid
1182      * @throws MissingParameterException studentId or contextInfo is
1183      *         missing or null
1184      * @throws OperationFailedException unable to complete request
1185      * @throws PermissionDeniedException an authorization failure occurred
1186      */
1187                                                                                                    /// yes, no, messages
1188     public List<ValidationResultInfo> checkStudentEligibility(@WebParam(name = "studentId") String studentId, 
1189                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo) 
1190         throws DoesNotExistException,
1191                InvalidParameterException,
1192                MissingParameterException, 
1193                OperationFailedException, 
1194                PermissionDeniedException;
1195 
1196     /**
1197      * Checks the eligibility of a student to register in a particular
1198      * term. 
1199      *
1200      * @param studentId an identifier of a Student
1201      * @param termId an identifier of a Term
1202      * @param contextInfo information containing the principalId and
1203      *        locale information about the caller of the service
1204      *        operation
1205      * @return a list of errors, warnings or informational messages
1206      * @throws DoesNotExistException studentId or termId is not found
1207      * @throws InvalidParameterException contextInfo is not valid
1208      * @throws MissingParameterException studentId, termId, or
1209      *         contextInfo is missing or null
1210      * @throws OperationFailedException unable to complete request
1211      * @throws PermissionDeniedException an authorization failure occurred
1212      */
1213     public List<ValidationResultInfo> checkStudentEligibilityForTerm(@WebParam(name = "studentId") String studentId, 
1214                                                                      @WebParam(name = "termId") String termId,
1215                                                                      @WebParam(name = "contextInfo") ContextInfo contextInfo) 
1216         throws DoesNotExistException,
1217                InvalidParameterException,
1218                MissingParameterException, 
1219                OperationFailedException, 
1220                PermissionDeniedException;
1221 
1222     /**
1223      * Checks if the student is eligible to register for a particular course
1224      * offering.
1225      *
1226      * @param studentId an identifier of a Student
1227      * @param courseOfferingId an identifier of a CourseOffering
1228      * @param contextInfo information containing the principalId and
1229      *        locale information about the caller of the service
1230      *        operation
1231      * @return a list of errors, warnings or informational messages
1232      * @throws DoesNotExistException studentId or courseOfferingId is
1233      *         not found
1234      * @throws InvalidParameterException contextInfo is not valid
1235      * @throws MissingParameterException studentId, courseOfferingId,
1236      *         or contextInfo is missing or null
1237      * @throws OperationFailedException unable to complete request
1238      * @throws PermissionDeniedException an authorization failure occurred
1239      */
1240     public List<ValidationResultInfo> checkStudentEligibiltyForCourseOffering(@WebParam(name = "studentId") String studentId, 
1241                                                                               @WebParam(name = "courseOfferingId") String courseOfferingId,
1242                                                                               @WebParam(name = "contextInfo") ContextInfo contextInfo) 
1243         throws DoesNotExistException,
1244                InvalidParameterException,
1245                MissingParameterException, 
1246                OperationFailedException, 
1247                PermissionDeniedException;
1248 
1249     /**
1250      * Checks if the student is eligible to register for a particular
1251      * registration group. 
1252      *
1253      * @param studentId an identifier of a Student
1254      * @param registrationGroupId an identifier of a RegistrationGroup
1255      * @param contextInfo information containing the principalId and
1256      *        locale information about the caller of the service
1257      *        operation
1258      * @return a list of errors, warnings or informational messages
1259      * @throws DoesNotExistException studentId or registrationGroupId
1260      *         is not found
1261      * @throws InvalidParameterException contextInfo is not valid
1262      * @throws MissingParameterException studentId,
1263      *         registrationGroupId, or contextInfo is missing or null
1264      * @throws OperationFailedException unable to complete request
1265      * @throws PermissionDeniedException an authorization failure occurred
1266      */
1267     public List<ValidationResultInfo> checkStudentEligibiltyForRegistrationGroup(@WebParam(name = "studentId") String studentId, 
1268                                                                                  @WebParam(name = "registrationGroupId") String registrationGroupId,
1269                                                                                  @WebParam(name = "contextInfo") ContextInfo contextInfo) 
1270         throws DoesNotExistException,
1271                InvalidParameterException,
1272                MissingParameterException, 
1273                OperationFailedException, 
1274                PermissionDeniedException;
1275 
1276     /**
1277      * Gets the Registration Groups for a CourseOffering for which the
1278      * given student is eligible to register.
1279      * 
1280      * @param studentId an identifier of a Student
1281      * @param courseOfferingId an identifier of a CourseOffering
1282      * @param contextInfo information containing the principalId and
1283      *        locale information about the caller of the service
1284      *        operation
1285      * @return a list of RegistrationGroups
1286      * @throws DoesNotExistException studentId or courseOfferingId is
1287      *         not found
1288      * @throws InvalidParameterException contextInfo is not valid
1289      * @throws MissingParameterException studentId, courseOfferingId,
1290      *         or contextInfo is missing or null
1291      * @throws OperationFailedException unable to complete request
1292      * @throws PermissionDeniedException an authorization failure occurred
1293      */
1294     public List<RegistrationGroupInfo> getEligibleRegistrationGroupsForStudentInCourseOffering(@WebParam(name = "studentId") String studentId, 
1295                                                                                                @WebParam(name = "courseOfferingId") String courseOfferingId,
1296                                                                                                @WebParam(name = "contextInfo") ContextInfo contextInfo) 
1297         throws DoesNotExistException,
1298                InvalidParameterException,
1299                MissingParameterException, 
1300                OperationFailedException, 
1301                PermissionDeniedException;
1302 
1303     /**
1304      * Calculate the credit load for a given student in a given
1305      * RegistrationRequest.
1306      * 
1307      * @param registrationRequestId an identifier of a RegistrationRequest
1308      * @param studentId an identifier of a Student
1309      * @param contextInfo information containing the principalId and
1310      *        locale information about the caller of the service
1311      *        operation
1312      * @return the credit load
1313      * @throws DoesNotExistException registrationRequestId is not
1314      *         found or studentId not in RegistrationRequest
1315      * @throws InvalidParameterException contextInfo is not valid
1316      * @throws MissingParameterException registrationRequestId, or
1317      *         contextInfo is missing or null
1318      * @throws OperationFailedException unable to complete request
1319      * @throws PermissionDeniedException an authorization failure occurred
1320      */
1321     public CreditLoadInfo calculateCreditLoadForStudentRegistrationRequest(@WebParam(name = "registrationRequestId") String registrationRequestId, 
1322                                                                            @WebParam(name = "studentId") String studentId, 
1323                                                                            @WebParam(name = "contextInfo") ContextInfo contextInfo)
1324         throws DoesNotExistException,
1325                InvalidParameterException,
1326                MissingParameterException, 
1327                OperationFailedException, 
1328                PermissionDeniedException;
1329 
1330     /**
1331      * Retrieves the available seat count for a particular course offering. It sums
1332      * up the available seats for individual registration groups under the same
1333      * course offering.
1334      * 
1335      * @param courseOfferingId
1336      * @param context  Information Containing the principalId and locale information about the caller of the service operation.
1337      * @return The available seat count for the specified CourseOffering.
1338      * @throws InvalidParameterException Invalid courseOfferingId in the input
1339      * @throws MissingParameterException Missing courseOfferingId in the input
1340      * @throws OperationFailedException Unable to complete request
1341      * @throws PermissionDeniedException Not authorized to do this operation
1342      */
1343                                                //    public Integer getAvailableSeatsForCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,         MissingParameterException, OperationFailedException, PermissionDeniedException;
1344 
1345 
1346                                                       
1347     /**
1348      * Get available seat count for the registration group.
1349      * 
1350      * @param regGroupId Identifier of the registration group
1351      * @param context  Information Containing the principalId and locale information about the caller of the service operation.
1352      * @return The available seat count for the specified Registration Group
1353      * @throws InvalidParameterException Invalid regGroupId in the input
1354      * @throws MissingParameterException Missing regGroupId in the input
1355      * @throws OperationFailedException Unable to complete request
1356      * @throws PermissionDeniedException Not authorized to do this operation
1357      */
1358                                                       //    public Integer getAvailableSeatsForRegistrationGroup(@WebParam(name = "regGroupId") String regGroupId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,            MissingParameterException, OperationFailedException, PermissionDeniedException;
1359 
1360     /**
1361      * Gets the number of seats available for a particular student in a
1362      * registration group.
1363      * <p>
1364      * Implementation notes : Seats available for a student taking seat pool (if
1365      * any) into consideration.
1366      * 
1367      * @param studentId Identifier of the student
1368      * @param regGroupId Identifier of the registration group
1369      * @param context  Information Containing the principalId and locale information about the caller of the service operation.
1370      * @return The available seat count for the specified student in a specified RegistrationGroup.
1371      * @throws InvalidParameterException Invalid studentId or regGroupId in the
1372      *             input
1373      * @throws MissingParameterException Missing studentId or regGroupId in the
1374      *             input
1375      * @throws OperationFailedException Unable to complete request
1376      * @throws PermissionDeniedException Not authorized to do this operation
1377      */
1378                                                       //    public Integer getAvailableSeatsForStudentInRegistrationGroup(@WebParam(name = "studentId") String studentId, @WebParam(name = "regGroupId") String regGroupId,            @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
1379 
1380     /**
1381      * Returns the available seat count in a particular seat pool. This is an admin
1382      * support function to check the seat pool usage.
1383      * 
1384      * @param seatPoolId Identifier of the seatPool
1385      * @param context  Information Containing the principalId and locale information about the caller of the service operation.
1386      * @return The available seat count for the specified seat pool.
1387      * @throws InvalidParameterException Invalid seatPool in the input
1388      * @throws MissingParameterException Missing parameter seatPoolId in the input
1389      * @throws OperationFailedException Unable to complete request
1390      * @throws PermissionDeniedException Not authorized to do this operation
1391      */
1392                                                       //    public Integer getAvailableSeatsInSeatPool(@WebParam(name = "seatPoolId") String seatPoolId, @WebParam(name = "contextInfo") ContextInfo contextInfo) throws InvalidParameterException,            MissingParameterException, OperationFailedException, PermissionDeniedException;                                               
1393 }