View Javadoc

1   /**
2    * Copyright 2010 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  
16  package org.kuali.student.lum.lu.dto;
17  
18  import java.io.Serializable;
19  import java.util.ArrayList;
20  import java.util.Date;
21  import java.util.HashMap;
22  import java.util.List;
23  import java.util.Map;
24  
25  import javax.xml.bind.annotation.XmlAccessType;
26  import javax.xml.bind.annotation.XmlAccessorType;
27  import javax.xml.bind.annotation.XmlAttribute;
28  import javax.xml.bind.annotation.XmlElement;
29  import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
30  
31  import org.kuali.student.common.dto.AmountInfo;
32  import org.kuali.student.common.dto.HasAttributes;
33  import org.kuali.student.common.dto.HasTypeState;
34  import org.kuali.student.common.dto.Idable;
35  import org.kuali.student.common.dto.MetaInfo;
36  import org.kuali.student.common.dto.RichTextInfo;
37  import org.kuali.student.common.dto.TimeAmountInfo;
38  import org.kuali.student.common.versionmanagement.dto.VersionInfo;
39  import org.kuali.student.core.ws.binding.JaxbAttributeMapListAdapter;
40  
41  /**
42   *Detailed information about a single CLU.
43   */
44  @XmlAccessorType(XmlAccessType.FIELD)
45  public class CluInfo implements Serializable, Idable, HasTypeState, HasAttributes {
46  
47      private static final long serialVersionUID = 1L;
48  
49      @XmlElement
50      private CluIdentifierInfo officialIdentifier;
51  
52      @XmlElement
53      private List<CluIdentifierInfo> alternateIdentifiers;
54  
55      @XmlElement
56      private String studySubjectArea;
57  
58      @XmlElement
59      private RichTextInfo descr;
60  
61      @XmlElement
62      private List<String> campusLocations;
63  
64      @XmlElement
65      private List<AccreditationInfo> accreditations;
66  
67      @XmlElement
68      private List<AdminOrgInfo> adminOrgs;
69  
70      @XmlElement
71      private CluInstructorInfo primaryInstructor;
72  
73      @XmlElement
74      private List<CluInstructorInfo> instructors;
75  
76      @XmlElement
77      private String expectedFirstAtp;
78  
79      @XmlElement
80      private String lastAtp;
81  
82      @XmlElement
83      private String lastAdmitAtp;
84  
85      @XmlElement
86      private Date effectiveDate;
87  
88      @XmlElement
89      private Date expirationDate;
90  
91      @XmlElement
92      private AmountInfo intensity;
93  
94      @XmlElement
95      private TimeAmountInfo stdDuration;
96  
97      @XmlElement
98      private boolean canCreateLui;
99  
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 }