001/*
002 * Copyright 2011 The Kuali Foundation 
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the
005 * "License"); you may not use this file except in compliance with the
006 * License. You may obtain a copy of the License at
007 *
008 * http://www.osedu.org/licenses/ECL-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
013 * implied. See the License for the specific language governing
014 * permissions and limitations under the License.
015 */
016
017package org.kuali.student.enrollment.courseregistration.infc;
018
019import java.util.List;
020
021import org.kuali.student.r2.common.infc.IdEntity;
022
023/**
024 * All changes to a student registration is performed by submitting a
025 * RegistrationRequest. This request represents an overall transaction
026 * among a set of RegistrationRequestItems (register, add, drop,
027 * update, etc.)
028 *
029 * For every transactional operation from the application, a new
030 * Request is created.
031 *
032 * RegistrationRequests are created and persisted separate from the
033 * submission and processing. Updating a RegistrationRequest prior to
034 * submission can create the concept of a "cart." Once the
035 * RegistrationRequest is submitted for porcessing it cannot be
036 * updated.
037 * 
038 * The RegistrationRequest State represents the state of this request
039 * e.g. NEW, DRAFT, SUBMITTED, FAILED.
040 *  
041 * @author Kuali Student Team (sambit)
042 */
043
044public interface RegistrationRequest 
045    extends IdEntity {
046
047    /**
048     * The person who is making this request. For a student
049     * self-registering, the requestor is the Id of the student.  In
050     * the case of an adminsitrator registering or updating a
051     * registration on behalf of a student, the requestor is the
052     * administrator.
053     *
054     * In either case, the student Id is included in each
055     * RegistrationRequestItem.
056     * 
057     * @name Requestor Id
058     * @required
059     * @readOnly on update
060     * @impl LprTransaction.requestingPersonId
061     */
062    public String getRequestorId();
063
064    /**
065     * The Term in which this registration takes place.
066     * 
067     * @name Term Id
068     * @required
069     * @readOnly on update
070     * @impl LprTransaction.atpId
071     */
072    public String getTermId();
073
074    /**
075     * A list of specific registration request items.
076     * 
077     * @name Registration Request Items
078     * @impl LprTransaction.LprTransactionItems
079     */
080    public List<? extends RegistrationRequestItem> getRegistrationRequestItems();
081}