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.infc;
18
19 import java.util.List;
20
21 import org.kuali.student.r2.common.infc.IdEntity;
22
23 /**
24 * All changes to a student registration is performed by submitting a
25 * RegistrationRequest. This request represents an overall transaction
26 * among a set of RegistrationRequestItems (register, add, drop,
27 * update, etc.)
28 *
29 * For every transactional operation from the application, a new
30 * Request is created.
31 *
32 * RegistrationRequests are created and persisted separate from the
33 * submission and processing. Updating a RegistrationRequest prior to
34 * submission can create the concept of a "cart." Once the
35 * RegistrationRequest is submitted for porcessing it cannot be
36 * updated.
37 *
38 * The RegistrationRequest State represents the state of this request
39 * e.g. NEW, DRAFT, SUBMITTED, FAILED.
40 *
41 * @author Kuali Student Team (sambit)
42 */
43
44 public interface RegistrationRequest
45 extends IdEntity {
46
47 /**
48 * The person who is making this request. For a student
49 * self-registering, the requestor is the Id of the student. In
50 * the case of an adminsitrator registering or updating a
51 * registration on behalf of a student, the requestor is the
52 * administrator.
53 *
54 * In either case, the student Id is included in each
55 * RegistrationRequestItem.
56 *
57 * @name Requestor Id
58 * @required
59 * @readOnly on update
60 * @impl LprTransaction.requestingPersonId
61 */
62 public String getRequestorId();
63
64 /**
65 * The Term in which this registration takes place.
66 *
67 * @name Term Id
68 * @required
69 * @readOnly on update
70 * @impl LprTransaction.atpId
71 */
72 public String getTermId();
73
74 /**
75 * A list of specific registration request items.
76 *
77 * @name Registration Request Items
78 * @impl LprTransaction.LprTransactionItems
79 */
80 public List<? extends RegistrationRequestItem> getRegistrationRequestItems();
81 }