View Javadoc

1   package org.kuali.student.r2.lum.course.infc;
2   
3   import java.util.Date;
4   import java.util.List;
5   
6   import org.kuali.student.r2.common.infc.Amount;
7   import org.kuali.student.r2.common.infc.IdEntity;
8   import org.kuali.student.r2.common.infc.RichText;
9   import org.kuali.student.r2.common.infc.TimeAmount;
10  import org.kuali.student.r2.core.versionmanagement.infc.Version;
11  import org.kuali.student.r2.lum.clu.infc.CluInstructor;
12  import org.kuali.student.r2.lum.lrc.dto.ResultValuesGroupInfo;
13  
14  
15  /**
16   * Detailed information about a single course. For specific usage, check the
17   * specific service(s) implementation(s)
18   **/
19  
20  public interface Course extends IdEntity {
21  
22      /**
23       * Identifier used to officially reference or publish the
24       * course.
25       *
26       * The code is typically unique within a specified context or time period but 
27       * it is not intended as a database key or id.
28       *
29       * It may have an internal structure that each Institution may
30       * want to enforce. This structure may be composed from the other parts of
31       * the structure such as Level amp; Division, but may include items such as
32       * the type of the course and whether it has a lab or not.
33       *
34       * @name code
35       */
36      public String getCode();
37  
38      /**
39       * The "extra" portion of the code, which usually corresponds with the most
40       * detailed part of the number. Ex. at MIT we might map Division to subject
41       * area(Ex:6) but overall we need to say the code is 6.120. This field would
42       * represent the 120 part.
43       *
44       * @name Course Number Suffix
45       */
46      public String getCourseNumberSuffix();
47  
48      /**
49       * A code that indicates what level 100, 200 or upper division, lower
50       * division etc
51       *
52       * @name Level
53       */
54      public String getLevel();
55  
56      /**
57       * Abbreviated name of the Course
58       *
59       * @name Course Title
60       */
61      public String getCourseTitle();
62  
63      /**
64       * Information related to the official identification of the credit course,
65       * typically in human readable form. Used to officially reference or
66       * publish.
67       *
68       * @name Transcript Title
69       */
70      public String getTranscriptTitle();
71  
72      /**
73       * Course Formats
74       *
75       * @name Formats
76       */
77      public List<? extends Format> getFormats();
78  
79      /**
80       * Terms in which this Course is typically offered.
81       *
82       * @name Terms Offered
83       */
84      public List<String> getTermsOffered();
85  
86      /**
87       * The standard duration of the Course.
88       *
89       * @name Duration
90       */
91      public TimeAmount getDuration();
92  
93      /**
94       * Joint Courses
95       *
96       * @name Joints
97       */
98      public List<? extends CourseJoint> getJoints();
99  
100     /**
101      * Cross Listed Courses
102      *
103      * @name Cross Listings
104      */
105     public List<? extends CourseCrossListing> getCrossListings();
106 
107     /**
108      * Variations
109      *
110      * @name Variations
111      */
112     public List<? extends CourseVariation> getVariations();
113 
114     /**
115      * The Study Subject Area is used to identify the area of study associated
116      * with the course. It may be a general study area (e.g. Chemistry) or very
117      * specific (e.g. Naval Architecture).
118      *
119      * @name Subject Area
120      */
121     public String getSubjectArea();
122 
123     /**
124      * Places where this course might be offered
125      *
126      * @name Campus Locations
127      */
128     public List<String> getCampusLocations();
129 
130     /**
131      * The expected level of out of class time commitment between the student
132      * and the course.
133      *
134      * @name Out of Class Hours
135      */
136     public Amount getOutOfClassHours();
137 
138     /**
139      * Primary potential instructor for the course. This is primarily for use in
140      * advertising the course and may not be the actual instructor.
141      *
142      * @name Primary Instructor
143      */
144     public CluInstructor getPrimaryInstructor();
145 
146     /**
147      * Instructors associated with this course.
148      *
149      * @name Instructors
150      */
151     public List<? extends CluInstructor> getInstructors();
152 
153     /**
154      * Units Responsible for Deploying this course
155      * @name Units Deployment
156      */
157     public List<String> getUnitsDeployment();
158 
159     /**
160      * Narrative description of overall course fee justification.
161      *
162      * @name Fee Justification
163      */
164     public RichText getFeeJustification();
165 
166     /**
167      * Units Responsible for overseeing the content of this course
168      * @name Units Content Owner
169      */
170     public List<String> getUnitsContentOwner();
171 
172     /**
173      * Fees information associated with this Course.
174      *
175      * @name Fees
176      */
177     public List<? extends CourseFee> getFees();
178 
179     /**
180      * Revenue information associated with this Course.
181      *
182      * @name Revenues
183      */
184     public List<? extends CourseRevenue> getRevenues();
185 
186     /**
187      * Expenditure information associated with this Course.
188      *
189      * @name Expenditure
190      */
191     public CourseExpenditure getExpenditure();
192 
193     /**
194      * Learning Objectives associated with this Course.
195      *
196      * @name Course Specific Learning Objectives
197      */
198     public List<? extends LoDisplay> getCourseSpecificLOs();
199 
200     /**
201      * Grading options available for the course
202      *
203      * @name Grading Options
204      */
205     public List<String> getGradingOptions();
206 
207     /**
208      * Credit outcomes from taking the course
209      *
210      * @name Credit Options
211      */
212     public List<ResultValuesGroupInfo> getCreditOptions();
213 
214     /**
215      * Flag to indicate the course as a special topics course
216      *
217      * @name Special Topics Course?
218      */
219     public boolean isSpecialTopicsCourse();
220 
221     /**
222      * Flag to indicate a one-time or pilot course, which is likely to have
223      * expedited approval process
224      *
225      * @name Pilot Course?
226      */
227     public boolean isPilotCourse();
228 
229     /**
230      * The first academic time period that this Course would be effective.
231      *
232      * @name Start Term
233      */
234     public String getStartTerm();
235 
236     /**
237      * The last academic time period that this Course would be effective.
238      *
239      * @name End Term
240      */
241     public String getEndTerm();
242 
243     /**
244      * Date and time the Course became effective. This is a similar concept to
245      * the effective date on enumerated values. When an expiration date has been
246      * specified, this field must be less than or equal to the expiration date.
247      *
248      * @name Effective Date
249      */
250     public Date getEffectiveDate();
251 
252     /**
253      * Date and time that this Course expires. This is a similar concept to the
254      * expiration date on enumerated values. If specified, this should be
255      * greater than or equal to the effective date. If this field is not
256      * specified, then no expiration date has been currently defined and should
257      * automatically be considered greater than the effective date.
258      *
259      * @name Expiration Date
260      */
261     public Date getExpirationDate();
262 
263     /**
264      * Version of this course
265      *
266      * @name Version
267      */
268     public Version getVersion();
269 }