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