1 /*
2 * Copyright 2011 The Kuali Foundation Licensed under the
3 * Educational Community License, Version 2.0 (the "License"); you may
4 * not use this file except in compliance with the License. You may
5 * obtain a copy of the License at
6 *
7 * http://www.osedu.org/licenses/ECL-2.0
8 *
9 * Unless required by applicable law or agreed to in writing,
10 * software distributed under the License is distributed on an "AS IS"
11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12 * or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15 package org.kuali.student.r2.lum.clu.infc;
16
17 import org.kuali.student.r2.common.infc.Amount;
18 import org.kuali.student.r2.common.infc.HasEffectiveDates;
19 import org.kuali.student.r2.common.infc.IdNamelessEntity;
20 import org.kuali.student.r2.common.infc.TimeAmount;
21 import org.kuali.student.r2.core.versionmanagement.infc.Version;
22
23 import java.util.List;
24 import org.kuali.student.r2.common.infc.RichText;
25
26 /**
27 * Detailed information about a single CLU.
28 *
29 * @Author Sri komandur@uw.edu
30 */
31 public interface Clu extends IdNamelessEntity, HasEffectiveDates {
32
33 /**
34 * Information related to the official identification of the clu, typically
35 * in human readable form. Used to officially reference or publish.
36 *
37 * @name Official Identifier
38 * @readOnly
39 * @required
40 */
41 public CluIdentifier getOfficialIdentifier();
42
43 /**
44 * Narrative description of the CLU, used for the catalog.
45 *
46 * @name Description
47 */
48 public RichText getDescr();
49
50 /**
51 * Information related to alternate identifications of the clu, typically in
52 * human readable form. Used to reference or publish.
53 *
54 * @name Alternate Identifiers
55 * @readOnly
56 */
57 public List<? extends CluIdentifier> getAlternateIdentifiers();
58
59 /**
60 * The Study Subject Area is used to identify the area of study associated
61 * with the clu. It may be a general study area (e.g. Chemistry) or very
62 * specific (e.g. Naval Architecture) depending on the level of specificity
63 * of the clu.
64 *
65 * @name Study Subject Area
66 */
67 public String getStudySubjectArea();
68
69 /**
70 * Information around the accreditation of the clu.
71 *
72 * @name Accreditations
73 */
74 public List<? extends Accreditation> getAccreditations();
75
76 /**
77 * Places where this clu might be offered
78 *
79 * @name Campus Location Keys
80 */
81 public List<String> getCampusLocations();
82
83 /**
84 * Admin Orgs associated with this clu
85 *
86 * @name Admin Orgs
87 */
88 public List<? extends AdminOrg> getAdminOrgs();
89
90 /**
91 * Primary potential instructor for the clu. This is primarily for use in
92 * advertising the clu and may not be the actual instructor.
93 *
94 * @name Primary Instructor
95 */
96 public CluInstructor getPrimaryInstructor();
97
98 /**
99 * Instructors associated with this clu. This may not be an exhaustive list,
100 * and instead may only be used to indicate potential instructors in
101 * publication.
102 *
103 * @name Instructors
104 */
105 public List<? extends CluInstructor> getInstructors();
106
107 /*
108 * The expected level of time commitment between the student and the CLU meetings.
109 * @name Intensity
110 */
111 public Amount getIntensity();
112
113 /**
114 * The standard duration of the learning unit.
115 *
116 * @name Std Duration
117 */
118 public TimeAmount getStdDuration();
119
120 /**
121 * Indicates if the CLU can be used to instantiate LUIs (offerings).
122 *
123 * @name is Can Create Lui
124 */
125 public Boolean getCanCreateLui();
126
127 /**
128 * An URL for additional information about the CLU. This could be a
129 * reference to a document which might in turn have references to other
130 * documents (e.g. course syllabus provided by the faculty or department,
131 * standard schedule of classes, etc.).
132 *
133 * @name Reference URL
134 */
135 public String getReferenceURL();
136
137 /**
138 * List of LU code info structures. These are structures so that many
139 * different types of codes can be associated with the clu. This allows them
140 * to be put into categories.
141 *
142 * @name Lu Codes
143 */
144 public List<? extends LuCode> getLuCodes();
145
146 /**
147 * When the next review should be
148 *
149 * @name Next Review Period
150 */
151 public String getNextReviewPeriod();
152
153 /**
154 * Indicates if Luis generated from this Clu are intended to be enrolled in
155 * by Students directly
156 *
157 * @name is Enrollable
158 */
159 public Boolean getIsEnrollable();
160
161 /**
162 * The academic time period types in which this CLU is typically offered.
163 * Standard usage would equate to terms.
164 *
165 * @name Offered Atp Types
166 */
167 public List<String> getOfferedAtpTypes();
168
169 /**
170 * Indicates if the CLU has an Early Drop Deadline (EDD). Certain courses
171 * are designated as such to maximize access to courses that have
172 * historically experienced high demand and high attrition. Default is
173 * "false".
174 *
175 * @name is Has Early Drop Deadline
176 */
177 public Boolean getIsHasEarlyDropDeadline();
178
179 /**
180 * Default enrollment estimate for this CLU.
181 *
182 * @name Default Enrollment Estimate
183 */
184 public int getDefaultEnrollmentEstimate();
185
186 /**
187 * Default maximum enrollment for this CLU.
188 *
189 * @name Default Maximum Enrollment
190 */
191 public int getDefaultMaximumEnrollment();
192
193 /**
194 * Indicates if the CLU may be hazardous for students with disabilities.
195 * Would default to "false".
196 *
197 * @name is Hazardous For Disabled Students
198 */
199 public Boolean getIsHazardousForDisabledStudents();
200
201 /**
202 * Fee information associated with this CLU.
203 *
204 * @name Fee Info
205 */
206 public CluFee getFeeInfo();
207
208 /**
209 * Accounting information associated with this CLU.
210 *
211 * @name Account Info
212 */
213 public CluAccounting getAccountingInfo();
214
215 /**
216 * Version information associated with this CLU
217 *
218 * @name Version
219 */
220 public Version getVersion();
221
222 /**
223 * The expected first academic time period that this clu would be effective.
224 * This may not reflect the first "real" academic time period for this clu.
225 *
226 * @name Expected First Atp
227 */
228 public String getExpectedFirstAtp();
229
230 /**
231 * The last academic time period that this clu would be effective.
232 *
233 * @name Last Atp
234 */
235 public String getLastAtp();
236
237 /**
238 * The last academic time period that this clu would be available for
239 * enrollment. This may not reflect the last "real" academic time period for
240 * this clu.
241 *
242 * @name Last Admit Atp
243 */
244 public String getLastAdmitAtp();
245 }