001    /**
002     * Copyright 2010 The Kuali Foundation Licensed under the
003     * Educational Community License, Version 2.0 (the "License"); you may
004     * not use this file except in compliance with the License. You may
005     * obtain a copy of the License at
006     *
007     * http://www.osedu.org/licenses/ECL-2.0
008     *
009     * Unless required by applicable law or agreed to in writing,
010     * software distributed under the License is distributed on an "AS IS"
011     * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
012     * or implied. See the License for the specific language governing
013     * permissions and limitations under the License.
014     */
015    
016    package org.kuali.student.enrollment.acal.infc;
017    
018    import java.util.Date;
019    import java.util.List;
020    
021    import org.kuali.student.r2.common.infc.IdEntity;
022    
023    
024    /**
025     * Information about an Academic Calendar.
026     *
027     * @author tom
028     * @since Tue Apr 05 14:22:34 EDT 2011
029     */ 
030    
031    public interface AcademicCalendar 
032        extends IdEntity {
033        
034        /**
035         * The holiday calendar id corresponding to this academic
036         * calendar. A multi-year academic calendar may have more than one
037         * holiday calendar.
038         *
039         * @name Holiday Calendar Ids
040         * @impl Holiday Calendars are stored in the ATP service as an Associated ATP ATP relation
041         */
042        public List<String> getHolidayCalendarIds();
043        
044        /**
045         * The administrative organization responsible for maintaining
046         * this calendar.
047         *
048         * @name AdminOrg Id
049         */
050        public String getAdminOrgId();
051        
052        /**
053         * Date and time the term became effective. This
054         * does not provide a bound on date ranges or milestones
055         * associated with this time period, but instead indicates the
056         * time period proper. This is a similar concept to the effective
057         * date on enumerated values. When an expiration date has been
058         * specified, this field must be less than or equal to the
059         * expiration date.
060         *
061         * @name Start Date
062         */
063        public Date getStartDate();
064    
065        /**
066         * Date and time the term expires. This does not
067         * provide a bound on date ranges or milestones associated with
068         * this time period, but instead indicates the time period
069         * proper. If specified, this must be greater than or equal to the
070         * effective date. If this field is not specified, then no
071         * expiration date has been currently defined and should
072         * automatically be considered greater than the effective date.
073         *
074         * @name End Date
075         */
076        public Date getEndDate();
077    }