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.lum.lu.dto;
017
018 import java.io.Serializable;
019 import java.util.ArrayList;
020 import java.util.Date;
021 import java.util.HashMap;
022 import java.util.List;
023 import java.util.Map;
024
025 import javax.xml.bind.annotation.XmlAccessType;
026 import javax.xml.bind.annotation.XmlAccessorType;
027 import javax.xml.bind.annotation.XmlAttribute;
028 import javax.xml.bind.annotation.XmlElement;
029 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
030
031 import org.kuali.student.common.dto.AmountInfo;
032 import org.kuali.student.common.dto.HasAttributes;
033 import org.kuali.student.common.dto.HasTypeState;
034 import org.kuali.student.common.dto.Idable;
035 import org.kuali.student.common.dto.MetaInfo;
036 import org.kuali.student.common.dto.RichTextInfo;
037 import org.kuali.student.common.dto.TimeAmountInfo;
038 import org.kuali.student.common.versionmanagement.dto.VersionInfo;
039 import org.kuali.student.core.ws.binding.JaxbAttributeMapListAdapter;
040
041 /**
042 *Detailed information about a single CLU.
043 */
044 @XmlAccessorType(XmlAccessType.FIELD)
045 public class CluInfo implements Serializable, Idable, HasTypeState, HasAttributes {
046
047 private static final long serialVersionUID = 1L;
048
049 @XmlElement
050 private CluIdentifierInfo officialIdentifier;
051
052 @XmlElement
053 private List<CluIdentifierInfo> alternateIdentifiers;
054
055 @XmlElement
056 private String studySubjectArea;
057
058 @XmlElement
059 private RichTextInfo descr;
060
061 @XmlElement
062 private List<String> campusLocations;
063
064 @XmlElement
065 private List<AccreditationInfo> accreditations;
066
067 @XmlElement
068 private List<AdminOrgInfo> adminOrgs;
069
070 @XmlElement
071 private CluInstructorInfo primaryInstructor;
072
073 @XmlElement
074 private List<CluInstructorInfo> instructors;
075
076 @XmlElement
077 private String expectedFirstAtp;
078
079 @XmlElement
080 private String lastAtp;
081
082 @XmlElement
083 private String lastAdmitAtp;
084
085 @XmlElement
086 private Date effectiveDate;
087
088 @XmlElement
089 private Date expirationDate;
090
091 @XmlElement
092 private AmountInfo intensity;
093
094 @XmlElement
095 private TimeAmountInfo stdDuration;
096
097 @XmlElement
098 private boolean canCreateLui;
099
100 @XmlElement
101 private String referenceURL;
102
103 @XmlElement
104 private List<LuCodeInfo> luCodes;
105
106 @XmlElement
107 private String nextReviewPeriod;
108
109 @XmlElement
110 private boolean isEnrollable;
111
112 @XmlElement
113 private List<String> offeredAtpTypes;
114
115 @XmlElement
116 private boolean hasEarlyDropDeadline;
117
118 @XmlElement
119 private int defaultEnrollmentEstimate;
120
121 @XmlElement
122 private int defaultMaximumEnrollment;
123
124 @XmlElement
125 private boolean isHazardousForDisabledStudents;
126
127 @XmlElement
128 private CluFeeInfo feeInfo;
129
130 @XmlElement
131 private CluAccountingInfo accountingInfo;
132
133 @XmlElement
134 @XmlJavaTypeAdapter(JaxbAttributeMapListAdapter.class)
135 private Map<String, String> attributes;
136
137 @XmlElement
138 private MetaInfo metaInfo;
139
140 @XmlElement
141 private VersionInfo versionInfo;
142
143 @XmlAttribute
144 private String type;
145
146 @XmlAttribute
147 private String state;
148
149 @XmlAttribute
150 private String id;
151
152
153 /**
154 * Information related to the official identification of the clu, typically in human readable form. Used to officially reference or publish.
155 */
156 public CluIdentifierInfo getOfficialIdentifier() {
157 return officialIdentifier;
158 }
159
160 public void setOfficialIdentifier(CluIdentifierInfo officialIdentifier) {
161 this.officialIdentifier = officialIdentifier;
162 }
163
164 /**
165 * Information related to alternate identifications of the clu, typically in human readable form. Used to reference or publish.
166 */
167 public List<CluIdentifierInfo> getAlternateIdentifiers() {
168 if (alternateIdentifiers == null) {
169 alternateIdentifiers = new ArrayList<CluIdentifierInfo>();
170 }
171 return alternateIdentifiers;
172 }
173
174 public void setAlternateIdentifiers(List<CluIdentifierInfo> alternateIdentifiers) {
175 this.alternateIdentifiers = alternateIdentifiers;
176 }
177
178
179 /**
180 * The Study Subject Area is used to identify the area of study associated with the clu. It may be a general study area (e.g. Chemistry) or very specific (e.g. Naval Architecture) depending on the level of specificity of the clu.
181 */
182 public String getStudySubjectArea() {
183 return studySubjectArea;
184 }
185
186 public void setStudySubjectArea(String studySubjectArea) {
187 this.studySubjectArea = studySubjectArea;
188 }
189
190 /**
191 * Narrative description of the CLU, used for the catalog.
192 */
193 public RichTextInfo getDescr() {
194 return descr;
195 }
196
197 public void setDescr(RichTextInfo descr) {
198 this.descr = descr;
199 }
200
201 /*
202 * Information around the accreditation of the clu.
203 */
204 public List<AccreditationInfo> getAccreditations() {
205 if (accreditations == null) {
206 accreditations = new ArrayList<AccreditationInfo>();
207 }
208 return accreditations;
209 }
210
211 public void setAccreditations(List<AccreditationInfo> accreditations) {
212 this.accreditations = accreditations;
213 }
214
215 /*
216 * Places where this clu might be offered
217 */
218 public List<String> getCampusLocations() {
219 if (campusLocations == null) {
220 campusLocations = new ArrayList<String>();
221 }
222 return campusLocations;
223 }
224
225 public void setCampusLocations(List<String> campusLocations) {
226 this.campusLocations = campusLocations;
227 }
228
229 public List<AdminOrgInfo> getAdminOrgs() {
230 if (adminOrgs == null) {
231 adminOrgs = new ArrayList<AdminOrgInfo>();
232 }
233 return adminOrgs;
234 }
235
236 public void setAdminOrgs(List<AdminOrgInfo> adminOrgs) {
237 this.adminOrgs = adminOrgs;
238 }
239
240 /**
241 * Primary potential instructor for the clu. This is primarily for use in advertising the clu and may not be the actual instructor.
242 */
243 public CluInstructorInfo getPrimaryInstructor() {
244 return primaryInstructor;
245 }
246
247 public void setPrimaryInstructor(CluInstructorInfo primaryInstructor) {
248 this.primaryInstructor = primaryInstructor;
249 }
250
251 /**
252 * Instructors associated with this clu. This may not be an exhaustive list, and instead may only be used to indicate potential instructors in publication.
253 */
254 public List<CluInstructorInfo> getInstructors() {
255 if (instructors == null) {
256 instructors = new ArrayList<CluInstructorInfo>();
257 }
258 return instructors;
259 }
260
261 public void setInstructors(List<CluInstructorInfo> instructors) {
262 this.instructors = instructors;
263 }
264
265 /**
266 * Date and time the CLU became effective. This is a similar concept to the effective date on enumerated values. When an expiration date has been specified, this field must be less than or equal to the expiration date.
267 */
268 public Date getEffectiveDate() {
269 return effectiveDate;
270 }
271
272 public void setEffectiveDate(Date effectiveDate) {
273 this.effectiveDate = effectiveDate;
274 }
275
276 /**
277 * Date and time that this CLU expires. This is a similar concept to the expiration date on enumerated values. If specified, this should be greater than or equal to the effective date. If this field is not specified, then no expiration date has been currently defined and should automatically be considered greater than the effective date.
278 */
279 public Date getExpirationDate() {
280 return expirationDate;
281 }
282
283 public void setExpirationDate(Date expirationDate) {
284 this.expirationDate = expirationDate;
285 }
286
287 /*
288 * The expected level of time commitment between the student and the CLU meetings.
289 */
290 public AmountInfo getIntensity() {
291 return intensity;
292 }
293
294 public void setIntensity(AmountInfo intensity) {
295 this.intensity = intensity;
296 }
297
298 /**
299 * The standard duration of the learning unit.
300 */
301 public TimeAmountInfo getStdDuration() {
302 return stdDuration;
303 }
304
305 public void setStdDuration(TimeAmountInfo stdDuration) {
306 this.stdDuration = stdDuration;
307 }
308
309 /**
310 * Indicates if the CLU can be used to instantiate LUIs (offerings).
311 */
312 public boolean isCanCreateLui() {
313 return canCreateLui;
314 }
315
316 public void setCanCreateLui(boolean canCreateLui) {
317 this.canCreateLui = canCreateLui;
318 }
319
320 /**
321 * An URL for additional information about the CLU. This could be a reference to a document which might in turn have references to other documents (e.g. course syllabus provided by the faculty or department, standard schedule of classes, etc.).
322 */
323 public String getReferenceURL() {
324 return referenceURL;
325 }
326
327 public void setReferenceURL(String referenceURL) {
328 this.referenceURL = referenceURL;
329 }
330
331 /**
332 * List of LU code info structures. These are structures so that many different types of codes can be associated with the clu. This allows them to be put into categories.
333 */
334 public List<LuCodeInfo> getLuCodes() {
335 if (luCodes == null) {
336 luCodes = new ArrayList<LuCodeInfo>();
337 }
338 return luCodes;
339 }
340
341 public void setLuCodes(List<LuCodeInfo> luCodes) {
342 this.luCodes = luCodes;
343 }
344
345 /**
346 * When the next review should be
347 */
348 public String getNextReviewPeriod() {
349 return nextReviewPeriod;
350 }
351
352 public void setNextReviewPeriod(String nextReviewPeriod) {
353 this.nextReviewPeriod = nextReviewPeriod;
354 }
355
356 /**
357 * Indicates if Luis generated from this Clu are intended to be enrolled in by Students directly
358 */
359 public boolean isEnrollable() {
360 return isEnrollable;
361 }
362
363 public void setEnrollable(boolean isEnrollable) {
364 this.isEnrollable = isEnrollable;
365 }
366
367 /**
368 * The academic time period types in which this CLU is typically offered. Standard usage would equate to terms.
369 */
370 public List<String> getOfferedAtpTypes() {
371 if (offeredAtpTypes == null) {
372 offeredAtpTypes = new ArrayList<String>();
373 }
374 return offeredAtpTypes;
375 }
376
377 public void setOfferedAtpTypes(List<String> offeredAtpTypes) {
378 this.offeredAtpTypes = offeredAtpTypes;
379 }
380
381 /**
382 * Indicates if the CLU has an Early Drop Deadline (EDD). Certain courses are designated as such to maximize access to courses that have historically experienced high demand and high attrition. Default is "false".
383 */
384 public boolean isHasEarlyDropDeadline() {
385 return hasEarlyDropDeadline;
386 }
387
388 public void setHasEarlyDropDeadline(boolean hasEarlyDropDeadline) {
389 this.hasEarlyDropDeadline = hasEarlyDropDeadline;
390 }
391
392 /**
393 * Default enrollment estimate for this CLU.
394 */
395 public int getDefaultEnrollmentEstimate() {
396 return defaultEnrollmentEstimate;
397 }
398
399 public void setDefaultEnrollmentEstimate(int defaultEnrollmentEstimate) {
400 this.defaultEnrollmentEstimate = defaultEnrollmentEstimate;
401 }
402
403 /**
404 * Default maximum enrollment for this CLU.
405 */
406 public int getDefaultMaximumEnrollment() {
407 return defaultMaximumEnrollment;
408 }
409
410 public void setDefaultMaximumEnrollment(int defaultMaximumEnrollment) {
411 this.defaultMaximumEnrollment = defaultMaximumEnrollment;
412 }
413
414 /**
415 * Indicates if the CLU may be hazardous for students with disabilities. Would default to "false".
416 */
417 public boolean isHazardousForDisabledStudents() {
418 return isHazardousForDisabledStudents;
419 }
420
421 public void setHazardousForDisabledStudents(boolean isHazardousForDisabledStudents) {
422 this.isHazardousForDisabledStudents = isHazardousForDisabledStudents;
423 }
424
425 /**
426 * Fee information associated with this CLU.
427 */
428 public CluFeeInfo getFeeInfo() {
429 return feeInfo;
430 }
431
432 public void setFeeInfo(CluFeeInfo feeInfo) {
433 this.feeInfo = feeInfo;
434 }
435
436 /**
437 * Accounting information associated with this CLU.
438 */
439 public CluAccountingInfo getAccountingInfo() {
440 return accountingInfo;
441 }
442
443 public void setAccountingInfo(CluAccountingInfo accountingInfo) {
444 this.accountingInfo = accountingInfo;
445 }
446
447 /**
448 * List of key/value pairs, typically used for dynamic attributes.
449 */
450 public Map<String, String> getAttributes() {
451 if (attributes == null) {
452 attributes = new HashMap<String, String>();
453 }
454 return attributes;
455 }
456
457 public void setAttributes(Map<String, String> attributes) {
458 this.attributes = attributes;
459 }
460
461 /**
462 * Create and last update info for the structure. This is optional and treated as read only since the data is set by the internals of the service during maintenance operations.
463 */
464 public MetaInfo getMetaInfo() {
465 return metaInfo;
466 }
467
468 public void setMetaInfo(MetaInfo metaInfo) {
469 this.metaInfo = metaInfo;
470 }
471
472
473 public VersionInfo getVersionInfo() {
474 return versionInfo;
475 }
476
477 public void setVersionInfo(VersionInfo versionInfo) {
478 this.versionInfo = versionInfo;
479 }
480
481 /**
482 * Unique identifier for a learning unit type. Once set at create time, this field may not be updated.
483 */
484 public String getType() {
485 return type;
486 }
487
488 public void setType(String type) {
489 this.type = type;
490 }
491
492 /**
493 * The current status of the clu. The values for this field are constrained to those in the luState enumeration. A separate setup operation does not exist for retrieval of the meta data around this value. This field may not be updated through updating this structure and must instead be updated through a dedicated operation.
494 */
495 public String getState() {
496 return state;
497 }
498
499 public void setState(String state) {
500 this.state = state;
501 }
502
503 /**
504 * Unique identifier for a Canonical Learning Unit (CLU). This is optional, due to the identifier being set at the time of creation. Once the CLU has been created, this should be seen as required.
505 */
506 public String getId() {
507 return id;
508 }
509
510 public void setId(String id) {
511 this.id = id;
512 }
513
514 public String getExpectedFirstAtp() {
515 return expectedFirstAtp;
516 }
517
518 public void setExpectedFirstAtp(String expectedFirstAtp) {
519 this.expectedFirstAtp = expectedFirstAtp;
520 }
521
522 public String getLastAtp() {
523 return lastAtp;
524 }
525
526 public void setLastAtp(String lastAtp) {
527 this.lastAtp = lastAtp;
528 }
529
530 public String getLastAdmitAtp() {
531 return lastAdmitAtp;
532 }
533
534 public void setLastAdmitAtp(String lastAdmitAtp) {
535 this.lastAdmitAtp = lastAdmitAtp;
536 }
537
538 @Override
539 public String toString() {
540 return "CluInfo[id=" + id + ", type=" + type + "]";
541 }
542
543 }