Coverage Report - org.kuali.student.enrollment.courseregistration.service.CourseRegistrationService
 
Classes in this File Line Coverage Branch Coverage Complexity
CourseRegistrationService
N/A
N/A
1
 
 1  
 /**
 2  
  */
 3  
 package org.kuali.student.enrollment.courseregistration.service;
 4  
 
 5  
 import java.util.List;
 6  
 
 7  
 import javax.jws.WebParam;
 8  
 import javax.jws.WebService;
 9  
 import javax.jws.soap.SOAPBinding;
 10  
 
 11  
 import org.kuali.rice.core.api.criteria.QueryByCriteria;
 12  
 import org.kuali.student.enrollment.courseoffering.dto.RegistrationGroupInfo;
 13  
 import org.kuali.student.enrollment.courseregistration.dto.ActivityRegistrationInfo;
 14  
 import org.kuali.student.enrollment.courseregistration.dto.CourseRegistrationInfo;
 15  
 import org.kuali.student.enrollment.courseregistration.dto.RegGroupRegistrationInfo;
 16  
 import org.kuali.student.enrollment.courseregistration.dto.RegRequestInfo;
 17  
 import org.kuali.student.enrollment.courseregistration.dto.RegResponseInfo;
 18  
 import org.kuali.student.enrollment.coursewaitlist.dto.CourseWaitlistEntryInfo;
 19  
 import org.kuali.student.enrollment.grading.dto.LoadInfo;
 20  
 import org.kuali.student.r2.common.dto.ContextInfo;
 21  
 import org.kuali.student.r2.common.dto.DateRangeInfo;
 22  
 import org.kuali.student.r2.common.dto.StatusInfo;
 23  
 import org.kuali.student.r2.common.dto.ValidationResultInfo;
 24  
 import org.kuali.student.r2.common.exceptions.AlreadyExistsException;
 25  
 import org.kuali.student.r2.common.exceptions.DataValidationErrorException;
 26  
 import org.kuali.student.r2.common.exceptions.DisabledIdentifierException;
 27  
 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
 28  
 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
 29  
 import org.kuali.student.r2.common.exceptions.MissingParameterException;
 30  
 import org.kuali.student.r2.common.exceptions.OperationFailedException;
 31  
 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
 32  
 import org.kuali.student.r2.common.exceptions.VersionMismatchException;
 33  
 import org.kuali.student.r2.common.util.constants.CourseRegistrationServiceConstants;
 34  
 
 35  
 /**
 36  
  * The Course Registration Service is a Class II service supporting the process
 37  
  * of registering a student in course(s) for a term. The service provides
 38  
  * operations for creating and validating registration requests , registering
 39  
  * for a course, waitlist processing, and dropping a course. This service
 40  
  * supports the concept of registration cart in the application and all of the
 41  
  * transactional requests for registration are made through this service. As
 42  
  * part of negotiating the student's registration, operations are provided to
 43  
  * manage related exceptions and holds related to registration.
 44  
  * 
 45  
  * @author Kuali Student Team (sambit)
 46  
  */
 47  
 
 48  
 @WebService(name = "CourseRegistrationService", targetNamespace = CourseRegistrationServiceConstants.NAMESPACE)
 49  
 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 50  
 public interface CourseRegistrationService  {
 51  
 
 52  
     /**
 53  
      * Checks if a student can register at all i.e., checks if the students
 54  
      * current academic status allows them to register. This is more generic
 55  
      * operation and doesn't take in the term information.
 56  
      * <p>
 57  
      * Implementation notes: Checks high-level conditions required for
 58  
      * registration e.g. student admitted,in good standing , alive etc.
 59  
      * 
 60  
      * @param studentId Identifier of the student
 61  
      * @param context
 62  
      * @return list of errors, warnings or informational messages
 63  
      * @throws DoesNotExistException If student id does not exist student id not
 64  
      *             found
 65  
      * @throws InvalidParameterException Invalid student id in the input
 66  
      * @throws MissingParameterException Student id missing in the input
 67  
      * @throws OperationFailedException Unable to complete request
 68  
      * @throws PermissionDeniedException
 69  
      */
 70  
     public  List<ValidationResultInfo> checkStudentEligibility(@WebParam(name = "studentId") String studentId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException,
 71  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 72  
 
 73  
     /**
 74  
      * Checks the eligibility of a student to register given the term. If the
 75  
      * student is eligible for a term, then they can build reg cart for the
 76  
      * term.
 77  
      * <p>
 78  
      * Implementation notes: Check term eligibility for the student e.g.
 79  
      * exemptions and no holds for that term on the student
 80  
      * 
 81  
      * @param studentId Identifier of the student
 82  
      * @param termId The unique key for the term
 83  
      * @param context
 84  
      * @return list of errors, warnings or informational messages
 85  
      * @throws InvalidParameterException Invalid student id or term id
 86  
      * @throws MissingParameterException Student id or term id missing in the
 87  
      *             input
 88  
      * @throws OperationFailedException Unable to complete request
 89  
      * @throws PermissionDeniedException Not authorized to do this check
 90  
      */
 91  
     public List<ValidationResultInfo> checkStudentEligibilityForTerm(@WebParam(name = "studentId") String studentId, @WebParam(name = "termId") String termId,
 92  
             @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 93  
 
 94  
     /**
 95  
      * Gets the appointment windows for a term that a student can register in.
 96  
      * <p>
 97  
      * Implementation notes: Return multiple {@link DateRangeInfo} for possible
 98  
      * appointment windows.
 99  
      * 
 100  
      * @param studentId Identifier of the student
 101  
      * @param termId The unique key for the term
 102  
      * @param context
 103  
      * @return
 104  
      * @throws InvalidParameterException Invalid student id or term id
 105  
      * @throws MissingParameterException Student id or term id missing in the
 106  
      *             input
 107  
      * @throws OperationFailedException Unable to complete request
 108  
      * @throws PermissionDeniedException Not authorized to do this check
 109  
      */
 110  
     public List<DateRangeInfo> getAppointmentWindows(@WebParam(name = "studentId") String studentId, @WebParam(name = "termId") String termId, @WebParam(name = "context") ContextInfo context)
 111  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 112  
 
 113  
     /**
 114  
      * Checks if the student is eligible to register for a particular course
 115  
      * offering.
 116  
      * <p>
 117  
      * Implementation notes: This operation does course requirements,
 118  
      * eligibility rules, prerequisite and corequisite checks for course
 119  
      * offering eligibility. Doesn't do any seat restriction checks.
 120  
      * 
 121  
      * @param studentId Identifier of the student
 122  
      * @param courseOfferingId Identifier of the course offering
 123  
      * @param context
 124  
      * @return
 125  
      * @throws InvalidParameterException Invalid student or course offering id
 126  
      * @throws MissingParameterException Missing student or course offering id
 127  
      * @throws OperationFailedException Unable to complete request
 128  
      * @throws PermissionDeniedException Not authorized to do this check
 129  
      */
 130  
     public List<ValidationResultInfo> checkStudentEligibiltyForCourseOffering(@WebParam(name = "studentId") String studentId, @WebParam(name = "courseOfferingId") String courseOfferingId,
 131  
             @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 132  
 
 133  
     /**
 134  
      * Checks if the student is eligible to register for a particular
 135  
      * registration group. Returns a {@link List} of
 136  
      * {@link ValidationResultInfo}. When a student is eligible the {@link List}
 137  
      * contains a single {@link ValidationResultInfo} with error level OK. Also
 138  
      * returns info on expiring restrictions as part of the message.
 139  
      * 
 140  
      * @param studentId Identifier of the student
 141  
      * @param regGroupId Identifier of the registration group
 142  
      * @param context
 143  
      * @return
 144  
      * @throws InvalidParameterException Invalid student id or regGroupId
 145  
      * @throws MissingParameterException Missing student id or regGroupId
 146  
      * @throws OperationFailedException Unable to complete request
 147  
      * @throws PermissionDeniedException Not authorized to do this check
 148  
      */
 149  
     public List<ValidationResultInfo> checkStudentEligibiltyForRegGroup(@WebParam(name = "studentId") String studentId, @WebParam(name = "regGroupId") String regGroupId,
 150  
             @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 151  
 
 152  
     /**
 153  
      * Gets the registration groups for a course offering from the
 154  
      * CourseOfferingService and then filters out the registration groups the
 155  
      * student is not eligible for using checkEligibilityForRegGroup. It does
 156  
      * the eligibility checks without the seat pool availability.
 157  
      * 
 158  
      * @param studentId
 159  
      * @param courseOfferingId
 160  
      * @param context
 161  
      * @return
 162  
      * @throws InvalidParameterException Invalid studentId or courseOfferingId
 163  
      * @throws MissingParameterException Missing studentId or courseOfferingId
 164  
      * @throws OperationFailedException Unable to complete request
 165  
      * @throws PermissionDeniedException Not authorized to do this check
 166  
      */
 167  
     public List<RegistrationGroupInfo> getEligibleRegGroupsForStudentInCourseOffering(@WebParam(name = "studentId") String studentId, @WebParam(name = "courseOfferingId") String courseOfferingId,
 168  
             @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 169  
 
 170  
     /**
 171  
      * Calculate the credit load for a student in a particular term. This
 172  
      * information can be used to display in the cart. this
 173  
      * 
 174  
      * @param studentId Identifier of the student
 175  
      * @param termId Unique key of the term
 176  
      * @param context
 177  
      * @return
 178  
      * @throws InvalidParameterException Invalid termId or studentId in the
 179  
      *             input
 180  
      * @throws MissingParameterException Missing termId or studentId in the
 181  
      *             input
 182  
      * @throws OperationFailedException Unable to complete request
 183  
      * @throws PermissionDeniedException Not authorized to do this check
 184  
      */
 185  
     public LoadInfo calculateCreditLoadForTerm(@WebParam(name = "studentId") String studentId, @WebParam(name = "termId") String termId, @WebParam(name = "context") ContextInfo context)
 186  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 187  
 
 188  
     /**
 189  
      * Calculate the credit load for a student in a particular registration
 190  
      * request. It also adds up the credits for courses the student has
 191  
      * registered for already in the given term to the registration request and
 192  
      * returns the total.
 193  
      * 
 194  
      * @param studentId Id of the student
 195  
      * @param regRequestInfo Registration request info
 196  
      * @param context
 197  
      * @return
 198  
      * @throws InvalidParameterException Invalid student id or
 199  
      *             {@link RegRequestInfo}
 200  
      * @throws MissingParameterException Missing student id or
 201  
      *             {@link RegRequestInfo}
 202  
      * @throws OperationFailedException Unable to complete request
 203  
      * @throws PermissionDeniedException Not authorized to calculate the credit
 204  
      *             load for the student
 205  
      */
 206  
     public LoadInfo calculateCreditLoadForRegRequest(@WebParam(name = "studentId") String studentId, @WebParam(name = "regRequestInfo") RegRequestInfo regRequestInfo,
 207  
             @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 208  
 
 209  
     /**
 210  
      * Retrieves the open seat count for a particular course offering. It sums
 211  
      * up the open seats for individual registration groups under the same
 212  
      * course offering.
 213  
      * 
 214  
      * @param courseOfferingId
 215  
      * @param context
 216  
      * @return
 217  
      * @throws InvalidParameterException Invalid courseOfferingId in the input
 218  
      * @throws MissingParameterException Missing courseOfferingId in the input
 219  
      * @throws OperationFailedException Unable to complete request
 220  
      * @throws PermissionDeniedException Not authorized to do this operation
 221  
      */
 222  
     public Integer getAvailableSeatsForCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 223  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 224  
 
 225  
     /**
 226  
      * Get available seats for the registration group.
 227  
      * 
 228  
      * @param regGroupId Identifier of the registration group
 229  
      * @param context
 230  
      * @return
 231  
      * @throws InvalidParameterException Invalid regGroupId in the input
 232  
      * @throws MissingParameterException Missing regGroupId in the input
 233  
      * @throws OperationFailedException Unable to complete request
 234  
      * @throws PermissionDeniedException Not authorized to do this operation
 235  
      */
 236  
     public Integer getAvailableSeatsForRegGroup(@WebParam(name = "regGroupId") String regGroupId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 237  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 238  
 
 239  
     /**
 240  
      * Gets the number of seats available for a particular student in a
 241  
      * registration group.
 242  
      * <p>
 243  
      * Implementation notes : Seats available for a student taking seat pool (if
 244  
      * any) into consideration.
 245  
      * 
 246  
      * @param studentId Identifier of the student
 247  
      * @param regGroupId Identifier of the registration group
 248  
      * @param context
 249  
      * @return
 250  
      * @throws InvalidParameterException Invalid studentId or regGroupId in the
 251  
      *             input
 252  
      * @throws MissingParameterException Missing studentId or regGroupId in the
 253  
      *             input
 254  
      * @throws OperationFailedException Unable to complete request
 255  
      * @throws PermissionDeniedException Not authorized to do this operation
 256  
      */
 257  
     public Integer getAvailableSeatsForStudentInRegGroup(@WebParam(name = "studentId") String studentId, @WebParam(name = "regGroupId") String regGroupId,
 258  
             @WebParam(name = "context") ContextInfo context) throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 259  
 
 260  
     /**
 261  
      * Returns the available seats in a particular seat pool. This is an admin
 262  
      * support function to check the seat pool usage.
 263  
      * 
 264  
      * @param studentId Identifier of the student
 265  
      * @param seatpoolId Identifier of the seatpool
 266  
      * @param context
 267  
      * @return
 268  
      * @throws InvalidParameterException Invalid seatpool in the input
 269  
      * @throws MissingParameterException Missing parameter seatpoolId in the
 270  
      *             input
 271  
      * @throws OperationFailedException Unable to complete request
 272  
      * @throws PermissionDeniedException Not authorized to do this operation
 273  
      */
 274  
     public Integer getAvailableSeatsInSeatpool(@WebParam(name = "seatpoolId") String seatpoolId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 275  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 276  
 
 277  
     /**
 278  
      * Create a registration request for a student.
 279  
      * <p>
 280  
      * Implementation Notes : This operation does the following steps:
 281  
      * <ul>
 282  
      * <li>Validate the data in the regRequestInfo parameter. If invalid throw
 283  
      * an exception.
 284  
      * <li>Create an id and persist the registration request.
 285  
      * <li>Return the updated registration request.
 286  
      * <li>Throw an AlreadyExistsException when there is an existing request by
 287  
      * the same requesting person for a term in DRAFT state.
 288  
      * 
 289  
      * @param regRequestInfo The registration request object to be created
 290  
      * @param context
 291  
      * @return
 292  
      * @throws AlreadyExistsException
 293  
      * @throws DataValidationErrorException Invalid data in the create request
 294  
      * @throws InvalidParameterException Invalid parameter
 295  
      *             {@link RegRequestInfo} in the input
 296  
      * @throws MissingParameterException Missing parameter
 297  
      *             {@link RegRequestInfo} in the input
 298  
      * @throws OperationFailedException Unable to complete request
 299  
      * @throws PermissionDeniedException Not authorized to do this action
 300  
      */
 301  
     public RegRequestInfo createRegRequest(@WebParam(name = "regRequestInfo") RegRequestInfo regRequestInfo, @WebParam(name = "context") ContextInfo context) throws AlreadyExistsException,
 302  
             DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 303  
 
 304  
     /**
 305  
      * Check the request state and if its in DRAFT, updates it with the input
 306  
      * {@link RegRequestInfo} values. The id is fetched from the
 307  
      * {@link RegRequestInfo} in the parameter. If the state is not valid, throw
 308  
      * a {@link DataValidationErrorException}.
 309  
      * <p>
 310  
      * Implementation notes:This method shouldn't update the state of a
 311  
      * registration request since that can be done as part of any transaction
 312  
      * only. This operation will be called to save a registration cart after
 313  
      * changes e.g addition or deletion of courses.
 314  
      * 
 315  
      * @param regRequestInfo The registration request object to be saved or
 316  
      *            updated
 317  
      * @param context
 318  
      * @return
 319  
      * @throws DataValidationErrorException The {@link RegRequestInfo} is not a
 320  
      *             valid request
 321  
      * @throws InvalidParameterException Invalid regRequestId in the input
 322  
      * @throws MissingParameterException or {@link RegRequestInfo} in the input
 323  
      * @throws OperationFailedException Unable to complete request
 324  
      * @throws PermissionDeniedException Not authorized to do this action
 325  
      */
 326  
     public RegRequestInfo updateRegRequest(@WebParam(name = "regRequestId") String regRequestId, @WebParam(name = "regRequestInfo") RegRequestInfo regRequestInfo,
 327  
             @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException, DoesNotExistException, InvalidParameterException, MissingParameterException,
 328  
             OperationFailedException, PermissionDeniedException, VersionMismatchException;
 329  
 
 330  
     /**
 331  
      * Delete the registration request from the database. There is permission
 332  
      * restriction and only administrative users should be allowed to delete
 333  
      * registration requests that are not in draft state.
 334  
      * 
 335  
      * @param regRequestId Identifier of registration request
 336  
      * @param context
 337  
      * @return
 338  
      * @throws InvalidParameterException Invalid regRequestId in the input
 339  
      * @throws MissingParameterException Missing parameter regRequestId
 340  
      * @throws OperationFailedException Unable to complete request
 341  
      * @throws PermissionDeniedException Not authorized to do this action
 342  
      * @throws DoesNotExistException
 343  
      */
 344  
     public StatusInfo deleteRegRequest(@WebParam(name = "regRequestId") String regRequestId, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 345  
             MissingParameterException, OperationFailedException, PermissionDeniedException, DoesNotExistException;
 346  
 
 347  
     /**
 348  
      * Validate a registration request to see that there are no conflicting or
 349  
      * invalid/ in-eligible registration groups in the request after each
 350  
      * modification or when finally submitting or saving it.
 351  
      * 
 352  
      * @param regRequestInfo The registration request to be validated
 353  
      * @param context
 354  
      * @return
 355  
      * @throws DataValidationErrorException Invalid {@link RegRequestInfo} in
 356  
      *             the input
 357  
      * @throws InvalidParameterException Invalid {@link RegRequestInfo} in the
 358  
      *             input
 359  
      * @throws InvalidParameterException Invalid fields e.g, regRequestId or
 360  
      *             regGroupId in the {@link RegRequestInfo}
 361  
      * @throws MissingParameterException Missing parameter
 362  
      *             {@link RegRequestInfo}
 363  
      * @throws OperationFailedException Unable to complete request
 364  
      * @throws PermissionDeniedException Not authorized to do this action
 365  
      */
 366  
     public List<ValidationResultInfo> validateRegRequest(@WebParam(name = "regRequestInfo") RegRequestInfo regRequestInfo, @WebParam(name = "context") ContextInfo context)
 367  
             throws DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 368  
 
 369  
     /**
 370  
      * Verifies a registration request to make sure that the data in the
 371  
      * {@link RegRequestInfo} satisfies the rules to be a valid registration
 372  
      * request. This includes course pre-requisites or co-requisites and credit
 373  
      * load rules.
 374  
      * <p>
 375  
      * Implementation notes: Call the following methods as part of the
 376  
      * eligibility checks - checkStudentEligibilityForTerm,
 377  
      * checkStudentEligibiltyForRegGroup,
 378  
      * checkStudentEligibiltyForCourseOffering,
 379  
      * getAvailableSeatsForStudentInRegGroup.
 380  
      * 
 381  
      * @param regRequestInfo The registration request to be verified
 382  
      * @param context
 383  
      * @return
 384  
      * @throws DataValidationErrorException Invalid data in
 385  
      *             {@link RegRequestInfo}
 386  
      * @throws InvalidParameterException Invalid fields e.g, regRequestId or
 387  
      *             regGroupId in the {@link RegRequestInfo}
 388  
      * @throws MissingParameterException Missing parameter
 389  
      *             {@link RegRequestInfo}
 390  
      * @throws OperationFailedException Unable to complete request
 391  
      * @throws PermissionDeniedException Not authorized to do this action
 392  
      */
 393  
     public List<ValidationResultInfo> verifyRegRequest(@WebParam(name = "regRequestInfo") RegRequestInfo regRequestInfo, @WebParam(name = "context") ContextInfo context)
 394  
             throws DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 395  
 
 396  
     /**
 397  
      * Same as above but takes in a reg request id assuming that the
 398  
      * {@link RegRequestInfo} is already saved in the database.
 399  
      * <p>
 400  
      * 
 401  
      * @param regRequestInfo The saved registration request to be verified
 402  
      * @param context
 403  
      * @return
 404  
      * @throws DataValidationErrorException Invalid data in
 405  
      *             {@link RegRequestInfo}
 406  
      * @throws InvalidParameterException Invalid fields e.g, regRequestId or
 407  
      *             regGroupId in the {@link RegRequestInfo}
 408  
      * @throws MissingParameterException Missing parameter
 409  
      *             {@link RegRequestInfo}
 410  
      * @throws OperationFailedException Unable to complete request
 411  
      * @throws PermissionDeniedException Not authorized to do this action
 412  
      */
 413  
     public RegResponseInfo verifySavedReqRequest(@WebParam(name = "regRequestId") String regRequestId, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException,
 414  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 415  
 
 416  
     /**
 417  
      * Create a new registration request from an existing registration request.
 418  
      * Convenient when a transaction fails and a students wants to rebuild the
 419  
      * registration cart with earlier items. It can also be used in any such
 420  
      * other scenario where a registration request has passed one of the final
 421  
      * states (or is canceled) and a new registration request needs to be
 422  
      * created for re-initiating the transaction.
 423  
      * 
 424  
      * @param existingRegRequestId The exiting req request id from which the new
 425  
      *            one is created
 426  
      * @param context
 427  
      * @return
 428  
      * @throws DoesNotExistException The existingRegRequestId does not exist
 429  
      * @throws InvalidParameterException Invalid field existingRegRequestId
 430  
      * @throws MissingParameterException Missing parameter existingRegRequestId
 431  
      * @throws OperationFailedException Unable to complete request
 432  
      * @throws PermissionDeniedException Not authorized to do this action
 433  
      */
 434  
     public RegRequestInfo createRegRequestFromExisting(@WebParam(name = "existingRegRequestId") String existingRegRequestId, @WebParam(name = "context") ContextInfo context)
 435  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DoesNotExistException;
 436  
 
 437  
     /**
 438  
      * Fetches the {@link RegRequestInfo}, validates and checks eligibility
 439  
      * against multiple rules and then submits the {@link RegRequestInfo}. The
 440  
      * latest {@link RegRequestInfo} should already be saved before this
 441  
      * operation is called. This operation also handles dropping courses or
 442  
      * waitlisting or putting a student in hold-until list if the requested
 443  
      * course is full and if the student is is okay to be put in these
 444  
      * lists.This method is transactional and for multiple registration request
 445  
      * items, each need to succeed or else the overall registration transaction
 446  
      * fails; the successful transactions are rolled back. A failure occurs when
 447  
      * for any reg group in the request registration, drop, swap, waitlisting,
 448  
      * hold until-listing or exception-listing cannot be completed successfully.
 449  
      * This operation calls verifyRegRequest to make sure that the request is
 450  
      * valid before starting the transaction.
 451  
      * 
 452  
      * @param regRequestInfo The {@link RegRequestInfo} to be submitted for
 453  
      *            registration process.
 454  
      * @param context
 455  
      * @return
 456  
      * @throws DoesNotExistException The regRequestId does not exist
 457  
      * @throws DataValidationErrorException Invalid data in the
 458  
      *             {@link RegRequestInfo}
 459  
      * @throws InvalidParameterException Invalid id regRequestId
 460  
      * @throws MissingParameterException Missing regRequestId in the input
 461  
      * @throws OperationFailedException Unable to complete request
 462  
      * @throws PermissionDeniedException Not authorized to do this action
 463  
      * @throws AlreadyExistsException When the reg request is already submitted
 464  
      */
 465  
     public RegResponseInfo submitRegRequest(@WebParam(name = "regRequestId") String regRequestId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
 466  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DataValidationErrorException, AlreadyExistsException;
 467  
 
 468  
     /**
 469  
      * Bulk operation to drop all students from a reg group if it gets canceled.
 470  
      * TODO This is WIP now, DO NOT IMPLEMENT
 471  
      * 
 472  
      * @param regGroupIds 
 473  
      * @param context
 474  
      * @return
 475  
      * @throws DoesNotExistException
 476  
      * @throws InvalidParameterException
 477  
      * @throws MissingParameterException
 478  
      * @throws OperationFailedException
 479  
      * @throws PermissionDeniedException
 480  
      */
 481  
     public RegResponseInfo dropStudentsFromRegGroups(@WebParam(name = "regGroupIds") List<String> regGroupIds,
 482  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
 483  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 484  
 
 485  
     /**
 486  
      * Bulk operation to move all students between source and destination reg
 487  
      * groups in case a reg group gets canceled. TODO This is WIP now, DO NOT
 488  
      * IMPLEMENT
 489  
      * 
 490  
      * @param sourceRegGroupId
 491  
      * @param destinationRegGroupId
 492  
      * @param context
 493  
      * @return
 494  
      * @throws DoesNotExistException
 495  
      * @throws InvalidParameterException
 496  
      * @throws MissingParameterException
 497  
      * @throws OperationFailedException
 498  
      * @throws PermissionDeniedException
 499  
      */
 500  
     public RegResponseInfo moveStudentsBetweenRegGroups(@WebParam(name = "sourceRegGroupId") String sourceRegGroupId, @WebParam(name = "destinationRegGroupId") String destinationRegGroupId,
 501  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 502  
 
 503  
     /**
 504  
      * Set the state of the registration request to canceled. This operation
 505  
      * would be used instead of delete when the registration request might need
 506  
      * to be stored and not deleted for reporting purposes. Scenarios are
 507  
      * request for a course that was canceled later etc. Throws an exception if
 508  
      * a registration request is already in a success or failure state post
 509  
      * completion of the transaction.
 510  
      * 
 511  
      * @param regRequestId The regRequestId to be canceled
 512  
      * @param context
 513  
      * @return
 514  
      * @throws InvalidParameterException Invalid id regRequestId
 515  
      * @throws MissingParameterException Missing regRequestId in the input
 516  
      * @throws OperationFailedException Unable to complete request
 517  
      * @throws PermissionDeniedException Not authorized to do this action
 518  
      */
 519  
     public StatusInfo cancelRegRequest(@WebParam(name = "regRequestId") String regRequestId, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException,
 520  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 521  
 
 522  
     /**
 523  
      * Retrieves a registration request by id.
 524  
      * 
 525  
      * @param regRequestId The regRequestId to be retrieved
 526  
      * @param context
 527  
      * @return
 528  
      * @throws DoesNotExistException No {@link RegRequestInfo} found for the id.
 529  
      * @throws InvalidParameterException Invalid id regRequestId
 530  
      * @throws MissingParameterException Missing regRequestId in the input
 531  
      * @throws OperationFailedException Unable to complete request
 532  
      * @throws PermissionDeniedException Not authorized to do this operation
 533  
      */
 534  
     public RegRequestInfo getRegRequest(@WebParam(name = "regRequestId") String regRequestId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException,
 535  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 536  
 
 537  
     /**
 538  
      * Retrieves a registration requests by id list.
 539  
      * 
 540  
      * @param regRequestId
 541  
      * @param context
 542  
      * @return
 543  
      * @throws DoesNotExistException No regRequestId found for one of the
 544  
      *             regRequestIds
 545  
      * @throws InvalidParameterException Invalid regRequestId in regRequestIds
 546  
      *             list
 547  
      * @throws MissingParameterException Missing regRequestIds in the input
 548  
      * @throws OperationFailedException Unable to complete request
 549  
      * @throws PermissionDeniedException Not authorized to do this operation
 550  
      */
 551  
     public List<RegRequestInfo> getRegRequestsByIds(@WebParam(name = "regRequestIds") List<String> regRequestIds, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
 552  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 553  
 
 554  
     /**
 555  
      * Get the registration requests for a student by term and student id.
 556  
      * Additionally the state of the registration request can also be passed so
 557  
      * that only requests in certain states are returned.
 558  
      * 
 559  
      * @param requestStates A list of state for the {@link RegRequestInfo} to be
 560  
      *            retrieved. This is optional
 561  
      * @param studentId Id of the student
 562  
      * @param termId Key of the term
 563  
      * @param context
 564  
      * @return
 565  
      * @throws DoesNotExistException No {@link RegRequestInfo} found for the
 566  
      *             input parameters
 567  
      * @throws InvalidParameterException Invalid studentId, termId or request
 568  
      *             state
 569  
      * @throws MissingParameterException Missing studentId or termId in the
 570  
      *             input
 571  
      * @throws OperationFailedException Unable to complete request
 572  
      * @throws PermissionDeniedException Not authorized to do this operation
 573  
      */
 574  
     public List<RegRequestInfo> getRegRequestsForStudentByTerm(@WebParam(name = "studentId") String studentId, @WebParam(name = "termId") String termId,
 575  
             @WebParam(name = "requestStates") List<String> requestStates, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException,
 576  
             MissingParameterException, OperationFailedException, PermissionDeniedException;
 577  
 
 578  
     /**
 579  
      * Gets a course waitlist entry by id.
 580  
      * 
 581  
      * @param courseWaitlistEntryId Id of the course waitlist entry
 582  
      * @param context
 583  
      * @return
 584  
      * @throws DoesNotExistException No courseWaitlistEntryId exists
 585  
      * @throws InvalidParameterException Invalid courseWaitlistEntryId
 586  
      * @throws MissingParameterException Missing courseWaitlistEntryId in the
 587  
      *             input
 588  
      * @throws OperationFailedException Unable to complete request
 589  
      * @throws PermissionDeniedException Not authorized to do this operation
 590  
      */
 591  
     public CourseWaitlistEntryInfo getCourseWaitlistEntry(@WebParam(name = "courseWaitlistEntryId") String courseWaitlistEntryId, @WebParam(name = "context") ContextInfo context)
 592  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 593  
 
 594  
     /**
 595  
      * Updates a course waitlist entry
 596  
      * 
 597  
      * @param courseWaitlistEntryId Id of the course waitlist entry to be
 598  
      *            updated
 599  
      * @param courseWaitlistEntryInfo The modified
 600  
      *            {@link CourseWaitlistEntryInfo}
 601  
      * @param context
 602  
      * @return
 603  
      * @throws AlreadyExistsException
 604  
      * @throws DataValidationErrorException The courseWaitlistEntryInfo is not
 605  
      *             valid
 606  
      * @throws InvalidParameterException Invalid courseWaitlistEntryId or
 607  
      *             courseWaitlistEntryInfo in the input
 608  
      * @throws MissingParameterException Missing courseWaitlistEntryId or
 609  
      *             courseWaitlistEntryInfo in the input
 610  
      * @throws OperationFailedException Unable to complete request
 611  
      * @throws PermissionDeniedException Not authorized to do this operation
 612  
      */
 613  
     public StatusInfo updateCourseWaitlistEntry(@WebParam(name = "courseWaitlistEntryId") String courseWaitlistEntryId,
 614  
             @WebParam(name = "courseWaitlistEntryInfo") CourseWaitlistEntryInfo courseWaitlistEntryInfo, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
 615  
             DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 616  
 
 617  
     /**
 618  
      * Reorder all the entries that are passed in in the input list, i.e.,
 619  
      * update each of the entries rank to begin from the top and push the
 620  
      * entries not in the list to the ranks after the entries.
 621  
      * 
 622  
      * @param courseWaitlistEntryId
 623  
      * @param position
 624  
      * @param context
 625  
      * @return
 626  
      * @throws DataValidationErrorException
 627  
      * @throws InvalidParameterException Invalid courseWaitlistEntryIds in the
 628  
      *             input
 629  
      * @throws MissingParameterException Missing courseWaitlistEntryIdsin the
 630  
      *             input
 631  
      * @throws OperationFailedException Unable to complete request
 632  
      * @throws PermissionDeniedException Not authorized to do this operation
 633  
      */
 634  
     public StatusInfo reorderCourseWaitlistEntries(@WebParam(name = "courseWaitlistEntryIds") List<String> courseWaitlistEntryIds, @WebParam(name = "context") ContextInfo context)
 635  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 636  
 
 637  
     /**
 638  
      * Insert a waitlist entry at a particular position in the waitlist. The
 639  
      * courseWaitlistEntryId would be moved to the position and all other
 640  
      * waitlist entries for that reg group would have adjusted rank
 641  
      * 
 642  
      * @param courseWaitlistEntryId The id of the course waitlist entry
 643  
      * @param position The new rank for the waitlist entry
 644  
      * @param context
 645  
      * @return
 646  
      * @throws DoesNotExistException The courseWaitlistEntryId is not found
 647  
      * @throws InvalidParameterException The courseWaitlistEntryId is invalid
 648  
      * @throws MissingParameterException Input courseWaitlistEntryId or position
 649  
      *             is missing
 650  
      * @throws OperationFailedException Unable to complete request
 651  
      * @throws PermissionDeniedException Not authorized to do this operation
 652  
      */
 653  
     public StatusInfo insertCourseWaitlistEntryAtPosition(@WebParam(name = "courseWaitlistEntryId") String courseWaitlistEntryId, @WebParam(name = "position") Integer position,
 654  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 655  
 
 656  
     /**
 657  
      * Remove the {@link CourseWaitlistEntryInfo}, change its state to CANCELLED
 658  
      * 
 659  
      * @param courseWaitlistEntryId The id of the course waitlist entry
 660  
      * @param context
 661  
      * @return
 662  
      * @throws DoesNotExistException The courseWaitlistEntryId is not found
 663  
      * @throws InvalidParameterException The courseWaitlistEntryId is invalid
 664  
      * @throws MissingParameterException Input courseWaitlistEntryId or position
 665  
      *             is missing
 666  
      * @throws OperationFailedException Unable to complete request
 667  
      * @throws PermissionDeniedException Not authorized to do this operation
 668  
      */
 669  
     public StatusInfo removeCourseWaitlistEntry(@WebParam(name = "courseWaitlistEntryId") String courseWaitlistEntryId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
 670  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 671  
 
 672  
     /**
 673  
      * Deletes a course waitlist entry
 674  
      * 
 675  
      * @param courseWaitlistEntryId
 676  
      * @param context
 677  
      * @return
 678  
      * @throws InvalidParameterException
 679  
      * @throws MissingParameterException
 680  
      * @throws OperationFailedException
 681  
      * @throws PermissionDeniedException
 682  
      */
 683  
     public StatusInfo deleteCourseWaitlistEntry(@WebParam(name = "courseWaitlistEntryId") String courseWaitlistEntryId, @WebParam(name = "context") ContextInfo context)
 684  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 685  
 
 686  
     /**
 687  
      * Validates a course waitlist entry.
 688  
      * 
 689  
      * @param validateTypeKey
 690  
      * @param courseWaitlistEntryInfo
 691  
      * @param context
 692  
      * @return
 693  
      * @throws DataValidationErrorException
 694  
      * @throws InvalidParameterException
 695  
      * @throws MissingParameterException
 696  
      * @throws OperationFailedException
 697  
      * @throws PermissionDeniedException
 698  
      */
 699  
     public StatusInfo validateCourseWaitlistEntry(@WebParam(name = "validateTypeKey") String validateTypeKey,
 700  
             @WebParam(name = "courseWaitlistEntryInfo") CourseWaitlistEntryInfo courseWaitlistEntryInfo, @WebParam(name = "context") ContextInfo context) throws DataValidationErrorException,
 701  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 702  
 
 703  
     /**
 704  
      * Register a student to a reg group from a waitlist.
 705  
      * 
 706  
      * @param regRequestInfo
 707  
      * @param context
 708  
      * @return
 709  
      * @throws AlreadyExistsException
 710  
      * @throws DataValidationErrorException
 711  
      * @throws InvalidParameterException
 712  
      * @throws MissingParameterException
 713  
      * @throws OperationFailedException
 714  
      * @throws PermissionDeniedException
 715  
      */
 716  
     public RegResponseInfo registerStudentFromWaitlist(@WebParam(name = "courseWaitlistEntryId") String courseWaitlistEntryId, @WebParam(name = "context") ContextInfo context)
 717  
             throws AlreadyExistsException, DataValidationErrorException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 718  
 
 719  
     /**
 720  
      * Gets the course waitlist entries for a course offering. Returns all
 721  
      * students who are on waitlists for that course offering.
 722  
      * 
 723  
      * @param courseOfferingId
 724  
      * @param context
 725  
      * @return
 726  
      * @throws InvalidParameterException
 727  
      * @throws MissingParameterException
 728  
      * @throws OperationFailedException
 729  
      * @throws PermissionDeniedException
 730  
      */
 731  
     public List<CourseWaitlistEntryInfo> getCourseWaitlistEntriesForCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context)
 732  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 733  
 
 734  
     /**
 735  
      * Gets the course waitlist entries for a reg group.
 736  
      * 
 737  
      * @param courseOfferingId
 738  
      * @param context
 739  
      * @return
 740  
      * @throws InvalidParameterException
 741  
      * @throws MissingParameterException
 742  
      * @throws OperationFailedException
 743  
      * @throws PermissionDeniedException
 744  
      */
 745  
     public List<CourseWaitlistEntryInfo> getCourseWaitlistEntriesForRegGroup(@WebParam(name = "regGroupId") String regGroupId, @WebParam(name = "context") ContextInfo context)
 746  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 747  
 
 748  
     /**
 749  
      * Gets the waitlist entries for a course offering by student. A student
 750  
      * might be listed in multiple reg group waitlists in the same course.
 751  
      * 
 752  
      * @param courseOfferingId
 753  
      * @param context
 754  
      * @return
 755  
      * @throws InvalidParameterException
 756  
      * @throws MissingParameterException
 757  
      * @throws OperationFailedException
 758  
      * @throws PermissionDeniedException
 759  
      */
 760  
     public List<CourseWaitlistEntryInfo> getCourseWaitlistEntriesForStudentInCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId,
 761  
             @WebParam(name = "studentId") String studentId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException,
 762  
             OperationFailedException, PermissionDeniedException;
 763  
 
 764  
     /**
 765  
      * Gets the waitlist for a reg group and student.
 766  
      * 
 767  
      * @param courseOfferingId
 768  
      * @param context
 769  
      * @return
 770  
      * @throws InvalidParameterException
 771  
      * @throws MissingParameterException
 772  
      * @throws OperationFailedException
 773  
      * @throws PermissionDeniedException
 774  
      */
 775  
     public CourseWaitlistEntryInfo getCourseWaitlistEntryForStudentInRegGroup(@WebParam(name = "regGroupId") String regGroupId, @WebParam(name = "studentId") String studentId,
 776  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 777  
 
 778  
     /**
 779  
      * Get all the waitlist the student is in for a term. Returns
 780  
      * CourseWaitlistEntryInfo which is the student-waitlist relation.
 781  
      * 
 782  
      * @param studentId
 783  
      * @param termId
 784  
      * @param context
 785  
      * @return
 786  
      * @throws InvalidParameterException
 787  
      * @throws MissingParameterException
 788  
      * @throws OperationFailedException
 789  
      * @throws PermissionDeniedException
 790  
      */
 791  
     public List<CourseWaitlistEntryInfo> getCourseWaitlistEntriesForStudentByTerm(@WebParam(name = "studentId") String studentId, @WebParam(name = "termId") String termId,
 792  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 793  
 
 794  
     /**
 795  
      * Gets the course registration by ID.
 796  
      * 
 797  
      * @param courseRegistrationId
 798  
      * @param context
 799  
      * @return
 800  
      */
 801  
     public CourseRegistrationInfo getCourseRegistration(@WebParam(name = "courseRegistrationId") String courseRegistrationId, @WebParam(name = "context") ContextInfo context)
 802  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 803  
 
 804  
     /**
 805  
      * @param courseRegistrationIds
 806  
      * @param context
 807  
      * @return
 808  
      * @throws DoesNotExistException
 809  
      * @throws InvalidParameterException
 810  
      * @throws MissingParameterException
 811  
      * @throws OperationFailedException
 812  
      * @throws PermissionDeniedException
 813  
      */
 814  
     public List<CourseRegistrationInfo> getCourseRegistrationsByIds(@WebParam(name = "courseRegistrationIds") List<String> courseRegistrationIds, @WebParam(name = "context") ContextInfo context)
 815  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 816  
 
 817  
     /**
 818  
      * This method ...
 819  
      * 
 820  
      * @param studentId
 821  
      * @param courseOfferingId
 822  
      * @param context
 823  
      * @return
 824  
      * @throws DoesNotExistException
 825  
      * @throws InvalidParameterException
 826  
      * @throws MissingParameterException
 827  
      * @throws OperationFailedException
 828  
      * @throws PermissionDeniedException
 829  
      * @throws DisabledIdentifierException
 830  
      */
 831  
     public CourseRegistrationInfo getActiveCourseRegistrationForStudentByCourseOffering(@WebParam(name = "studentId") String studentId, @WebParam(name = "courseOfferingId") String courseOfferingId,
 832  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException,
 833  
             DisabledIdentifierException;
 834  
 
 835  
     /**
 836  
      * This method ...
 837  
      * 
 838  
      * @param studentId
 839  
      * @param context
 840  
      * @return
 841  
      * @throws DoesNotExistException
 842  
      * @throws InvalidParameterException
 843  
      * @throws MissingParameterException
 844  
      * @throws OperationFailedException
 845  
      * @throws PermissionDeniedException
 846  
      * @throws DisabledIdentifierException
 847  
      */
 848  
     public List<CourseRegistrationInfo> getCourseRegistrationsForStudent(@WebParam(name = "studentId") String studentId, @WebParam(name = "context") ContextInfo context) throws DoesNotExistException,
 849  
             InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException, DisabledIdentifierException;
 850  
 
 851  
     /**
 852  
      * This method ...
 853  
      * 
 854  
      * @param studentId
 855  
      * @param courseOfferingId
 856  
      * @param context
 857  
      * @return
 858  
      * @throws DoesNotExistException
 859  
      * @throws InvalidParameterException
 860  
      * @throws MissingParameterException
 861  
      * @throws OperationFailedException
 862  
      * @throws PermissionDeniedException
 863  
      * @throws DisabledIdentifierException
 864  
      */
 865  
     public List<CourseRegistrationInfo> getCourseRegistrationsForStudentByCourseOffering(@WebParam(name = "studentId") String studentId, @WebParam(name = "courseOfferingId") String courseOfferingId,
 866  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException,
 867  
             DisabledIdentifierException;
 868  
 
 869  
     /**
 870  
      * Gets the course registrations for a student by term. Note: not clear if
 871  
      * gets the registrations in just the specified term or that term and all
 872  
      * included terms. For example: if you ask for the "fall term" do you get
 873  
      * registrations for the mini-mesters within that term.
 874  
      * 
 875  
      * @param studentId
 876  
      * @param termId
 877  
      * @param context
 878  
      * @return
 879  
      * @throws InvalidParameterException
 880  
      * @throws MissingParameterException
 881  
      * @throws OperationFailedException
 882  
      * @throws PermissionDeniedException
 883  
      * @throws DisabledIdentifierException
 884  
      */
 885  
     public List<CourseRegistrationInfo> getCourseRegistrationsForStudentByTerm(@WebParam(name = "studentId") String studentId, @WebParam(name = "termId") String termId,
 886  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException,
 887  
             DisabledIdentifierException;
 888  
 
 889  
     /**
 890  
      * Get course registrations by course offering id. Gets all student
 891  
      * registrations for the course.
 892  
      * 
 893  
      * @param courseOfferingId
 894  
      * @param context
 895  
      * @return
 896  
      * @throws InvalidParameterException
 897  
      * @throws MissingParameterException
 898  
      * @throws OperationFailedException
 899  
      * @throws PermissionDeniedException
 900  
      */
 901  
 
 902  
     public List<CourseRegistrationInfo> getActiveCourseRegistrationsByCourseOfferingId(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context)
 903  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 904  
 
 905  
     /**
 906  
      * Get course registrations by course offering id. Gets all student
 907  
      * registrations for the course.
 908  
      * 
 909  
      * @param courseOfferingId
 910  
      * @param context
 911  
      * @return
 912  
      * @throws InvalidParameterException
 913  
      * @throws MissingParameterException
 914  
      * @throws OperationFailedException
 915  
      * @throws PermissionDeniedException
 916  
      */
 917  
 
 918  
     public List<CourseRegistrationInfo> getDroppedCourseRegistrationsByCourseOfferingId(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context)
 919  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 920  
 
 921  
     /**
 922  
      * Get the request that resulted in this course registration.
 923  
      * 
 924  
      * @param courseRegistrationId
 925  
      * @param context
 926  
      * @return
 927  
      * @throws InvalidParameterException
 928  
      * @throws MissingParameterException
 929  
      * @throws OperationFailedException
 930  
      * @throws PermissionDeniedException
 931  
      */
 932  
     public List<RegRequestInfo> getRegRequestsForCourseRegistration(@WebParam(name = "courseRegistrationId") String courseRegistrationId, @WebParam(name = "context") ContextInfo context)
 933  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 934  
 
 935  
     /**
 936  
      * This method gets the reg requests for a course offering for all students.
 937  
      * 
 938  
      * @param courseOfferingId
 939  
      * @param context
 940  
      * @return
 941  
      * @throws DoesNotExistException
 942  
      * @throws InvalidParameterException
 943  
      * @throws MissingParameterException
 944  
      * @throws OperationFailedException
 945  
      * @throws PermissionDeniedException
 946  
      */
 947  
     public List<RegRequestInfo> getRegRequestsForCourseOffering(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "context") ContextInfo context)
 948  
             throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 949  
 
 950  
     /**
 951  
      * Get reg requests objects which are attached to this course offering for a
 952  
      * student.
 953  
      * 
 954  
      * @param courseOfferingId
 955  
      * @param studentId
 956  
      * @param context
 957  
      * @return
 958  
      * @throws DoesNotExistException
 959  
      * @throws InvalidParameterException
 960  
      * @throws MissingParameterException
 961  
      * @throws OperationFailedException
 962  
      * @throws PermissionDeniedException
 963  
      */
 964  
     public List<RegRequestInfo> getRegRequestsForCourseOfferingByStudent(@WebParam(name = "courseOfferingId") String courseOfferingId, @WebParam(name = "studentId") String studentId,
 965  
             @WebParam(name = "context") ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;
 966  
 
 967  
     /**
 968  
      * Searches for course registrations based on the criteria, returns a list
 969  
      * of {@link CourseRegistrationInfo} object.
 970  
      * 
 971  
      * @param criteria
 972  
      * @return
 973  
      */
 974  
     public List<CourseRegistrationInfo> searchForCourseRegistrations(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context)
 975  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;;
 976  
 
 977  
     /**
 978  
      * Searches for course registrations based on the criteria, returns a list
 979  
      * of {@link CourseRegistrationInfo} Ids.
 980  
      * 
 981  
      * @param criteria
 982  
      * @return
 983  
      */
 984  
     public List<String> searchForCourseOfferingRegistrationIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context)
 985  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;;
 986  
 
 987  
     /**
 988  
      * This method ...
 989  
      * 
 990  
      * @param criteria
 991  
      * @return
 992  
      */
 993  
     public List<ActivityRegistrationInfo> searchForActivityRegistrations(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context)
 994  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;;
 995  
 
 996  
     /**
 997  
      * This method ...
 998  
      * 
 999  
      * @param criteria
 1000  
      * @return
 1001  
      */
 1002  
     public List<String> searchForActivityRegistrationIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 1003  
             MissingParameterException, OperationFailedException, PermissionDeniedException;;
 1004  
 
 1005  
     /**
 1006  
      * This method ...
 1007  
      * 
 1008  
      * @param criteria
 1009  
      * @return
 1010  
      */
 1011  
     public List<RegGroupRegistrationInfo> searchForRegGroupRegistrations(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context)
 1012  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;;
 1013  
 
 1014  
     /**
 1015  
      * This method ...
 1016  
      * 
 1017  
      * @param criteria
 1018  
      * @return
 1019  
      */
 1020  
     public List<String> searchForRegGroupRegistrationIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 1021  
             MissingParameterException, OperationFailedException, PermissionDeniedException;;
 1022  
 
 1023  
     /**
 1024  
      * This method ...
 1025  
      * 
 1026  
      * @param criteria
 1027  
      * @return
 1028  
      */
 1029  
     public List<CourseWaitlistEntryInfo> searchForCourseWaitlistEntries(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context)
 1030  
             throws InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException;;
 1031  
 
 1032  
     /**
 1033  
      * This method ...
 1034  
      * 
 1035  
      * @param criteria
 1036  
      * @return
 1037  
      */
 1038  
     public List<String> searchForCourseWaitlistEntryIds(@WebParam(name = "criteria") QueryByCriteria criteria, @WebParam(name = "context") ContextInfo context) throws InvalidParameterException,
 1039  
             MissingParameterException, OperationFailedException, PermissionDeniedException;;
 1040  
 
 1041  
 }