Coverage Report - org.kuali.student.lum.course.dto.CourseInfo
 
Classes in this File Line Coverage Branch Coverage Complexity
CourseInfo
0%
0/145
0%
0/30
1.197
 
 1  
 /*
 2  
  * Copyright 2009 The Kuali Foundation
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 1.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  * http://www.opensource.org/licenses/ecl1.php
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.kuali.student.lum.course.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  
 import org.kuali.student.lum.lrc.dto.ResultComponentInfo;
 41  
 import org.kuali.student.lum.lu.dto.CluInstructorInfo;
 42  
 
 43  
 /**
 44  
  * Detailed information about a single course.
 45  
  * For specific usage, check the specific service(s) implementation(s)
 46  
  *
 47  
  * @Author KSContractMojo
 48  
  * @Author Daniel Epstein
 49  
  * @Since Mon Jul 26 14:12:05 EDT 2010
 50  
  * @See <a href="https://test.kuali.org/confluence/display/KULSTU/courseInfo+Structure">CourseInfo</>
 51  
  *
 52  
  */
 53  
 @XmlAccessorType(XmlAccessType.FIELD)
 54  0
 public class CourseInfo implements Serializable, Idable, HasTypeState, HasAttributes {
 55  
 
 56  
     private static final long serialVersionUID = 1L;
 57  
 
 58  
     @XmlElement
 59  
     private String code;
 60  
 
 61  
     @XmlElement
 62  
     private String courseNumberSuffix;
 63  
 
 64  
     @XmlElement
 65  
     private String level;
 66  
 
 67  
     @XmlElement
 68  
     private String courseTitle;
 69  
 
 70  
     @XmlElement
 71  
     private String transcriptTitle;
 72  
 
 73  
     @XmlElement
 74  
     private RichTextInfo descr;
 75  
 
 76  
     @XmlElement
 77  
     private List<FormatInfo> formats;
 78  
 
 79  
     @XmlElement
 80  
     private List<String> termsOffered;
 81  
 
 82  
     @XmlElement
 83  
     private TimeAmountInfo duration;
 84  
 
 85  
     @XmlElement
 86  
     private List<CourseJointInfo> joints;
 87  
 
 88  
     @XmlElement
 89  
     private List<CourseCrossListingInfo> crossListings;
 90  
 
 91  
     @XmlElement
 92  
     private List<CourseVariationInfo> variations;
 93  
 
 94  
     @XmlElement
 95  
     private String subjectArea;
 96  
 
 97  
     @XmlElement
 98  
     private List<String> campusLocations;
 99  
 
 100  
     @XmlElement
 101  
     private AmountInfo outOfClassHours;
 102  
 
 103  
     @XmlElement
 104  
     private CluInstructorInfo primaryInstructor;
 105  
 
 106  
     @XmlElement
 107  
     private List<CluInstructorInfo> instructors;
 108  
 
 109  
     @XmlElement
 110  
 
 111  
     private List<String> unitsDeployment;  
 112  
 
 113  
     private RichTextInfo feeJustification;
 114  
 
 115  
 
 116  
     @XmlElement
 117  
     private List<String> unitsContentOwner; 
 118  
 
 119  
     private List<CourseFeeInfo> fees;
 120  
 
 121  
 
 122  
     @XmlElement
 123  
     private List<CourseRevenueInfo> revenues;
 124  
 
 125  
     @XmlElement
 126  
     private CourseExpenditureInfo expenditure;
 127  
 
 128  
     @XmlElement
 129  
     private List<LoDisplayInfo> courseSpecificLOs;
 130  
 
 131  
     @XmlElement
 132  
     private List<String> gradingOptions;
 133  
 
 134  
     @XmlElement
 135  
     private List<ResultComponentInfo> creditOptions;
 136  
 
 137  
     @XmlElement
 138  
     private boolean specialTopicsCourse;
 139  
 
 140  
     @XmlElement
 141  
     private boolean pilotCourse;
 142  
 
 143  
     @XmlElement
 144  
     private String startTerm;
 145  
 
 146  
     @XmlElement
 147  
     private String endTerm;
 148  
 
 149  
     @XmlElement
 150  
     private Date effectiveDate;
 151  
 
 152  
     @XmlElement
 153  
     private Date expirationDate;
 154  
 
 155  
     @XmlElement
 156  
     @XmlJavaTypeAdapter(JaxbAttributeMapListAdapter.class)
 157  
     private Map<String, String> attributes;
 158  
 
 159  
     @XmlElement
 160  
     private MetaInfo metaInfo;
 161  
     
 162  
     @XmlElement
 163  
     private VersionInfo versionInfo;
 164  
     
 165  
         @XmlAttribute
 166  
     private String type;
 167  
 
 168  
     @XmlAttribute
 169  
     private String state;
 170  
 
 171  
     @XmlAttribute
 172  
     private String id;
 173  
 
 174  
     /**
 175  
      * The composite string that is used to officially reference or publish the CLU. Note it may have an internal structure that each Institution may want to enforce. This structure may be composed from the other parts of the structure such as Level amp; Division, but may include items such as cluType.
 176  
      */
 177  
     public String getCode() {
 178  0
         return code;
 179  
     }
 180  
 
 181  
     public void setCode(String code) {
 182  0
         this.code = code;
 183  0
     }
 184  
 
 185  
     /**
 186  
      * The "extra" portion of the code, which usually corresponds with the most detailed part of the number. Ex. at MIT we might map Division to subject area(Ex:6) but overall we need to say the code is 6.120. This field would represent the 120 part.
 187  
      */
 188  
     public String getCourseNumberSuffix() {
 189  0
         return courseNumberSuffix;
 190  
     }
 191  
 
 192  
     public void setCourseNumberSuffix(String courseNumberSuffix) {
 193  0
         this.courseNumberSuffix = courseNumberSuffix;
 194  0
     }
 195  
 
 196  
     /**
 197  
      * 
 198  
      * A code that indicates what level 100, 200 or upper division, lower division etc
 199  
      * 
 200  
      * @return
 201  
      */
 202  
     public String getLevel() {
 203  0
         return level;
 204  
     }
 205  
 
 206  
     public void setLevel(String level) {
 207  0
         this.level = level;
 208  0
     }
 209  
 
 210  
     /**
 211  
      * Abbreviated name of the Course
 212  
      */
 213  
     public String getCourseTitle() {
 214  0
         return courseTitle;
 215  
     }
 216  
 
 217  
     public void setCourseTitle(String courseTitle) {
 218  0
         this.courseTitle = courseTitle;
 219  0
     }
 220  
 
 221  
     /**
 222  
      * Information related to the official identification of the credit course, typically in human readable form. Used to officially reference or publish.
 223  
      */
 224  
     public String getTranscriptTitle() {
 225  0
         return transcriptTitle;
 226  
     }
 227  
 
 228  
     public void setTranscriptTitle(String transcriptTitle) {
 229  0
         this.transcriptTitle = transcriptTitle;
 230  0
     }
 231  
 
 232  
     /**
 233  
      * Narrative description of the Course.
 234  
      */
 235  
     public RichTextInfo getDescr() {
 236  0
         return descr;
 237  
     }
 238  
 
 239  
     public void setDescr(RichTextInfo descr) {
 240  0
         this.descr = descr;
 241  0
     }
 242  
 
 243  
     /**
 244  
      * 
 245  
      */
 246  
     public List<FormatInfo> getFormats() {
 247  0
         if (formats == null) {
 248  0
             formats = new ArrayList<FormatInfo>(0);
 249  
         }
 250  0
         return formats;
 251  
     }
 252  
 
 253  
     public void setFormats(List<FormatInfo> formats) {
 254  0
         this.formats = formats;
 255  0
     }
 256  
 
 257  
     /**
 258  
      * Terms in which this Course is typically offered.
 259  
      */
 260  
     public List<String> getTermsOffered() {
 261  0
         if (termsOffered == null) {
 262  0
             termsOffered = new ArrayList<String>(0);
 263  
         }
 264  0
         return termsOffered;
 265  
     }
 266  
 
 267  
     public void setTermsOffered(List<String> termsOffered) {
 268  0
         this.termsOffered = termsOffered;
 269  0
     }
 270  
 
 271  
     /**
 272  
      * The standard duration of the Course.
 273  
      */
 274  
     public TimeAmountInfo getDuration() {
 275  0
         return duration;
 276  
     }
 277  
 
 278  
     public void setDuration(TimeAmountInfo duration) {
 279  0
         this.duration = duration;
 280  0
     }
 281  
 
 282  
     /**
 283  
      * 
 284  
      */
 285  
     public List<CourseJointInfo> getJoints() {
 286  0
         if (joints == null) {
 287  0
             joints = new ArrayList<CourseJointInfo>(0);
 288  
         }
 289  0
         return joints;
 290  
     }
 291  
 
 292  
     public void setJoints(List<CourseJointInfo> joints) {
 293  0
         this.joints = joints;
 294  0
     }
 295  
 
 296  
     /**
 297  
      * 
 298  
      */
 299  
     public List<CourseCrossListingInfo> getCrossListings() {
 300  0
         if (crossListings == null) {
 301  0
             crossListings = new ArrayList<CourseCrossListingInfo>(0);
 302  
         }
 303  0
         return crossListings;
 304  
     }
 305  
 
 306  
     public void setCrossListings(List<CourseCrossListingInfo> crossListings) {
 307  0
         this.crossListings = crossListings;
 308  0
     }
 309  
 
 310  
     /**
 311  
      * 
 312  
      */
 313  
     public List<CourseVariationInfo> getVariations() {
 314  0
         if (variations == null) {
 315  0
             variations = new ArrayList<CourseVariationInfo>(0);
 316  
         }
 317  0
         return variations;
 318  
     }
 319  
 
 320  
     public void setVariations(List<CourseVariationInfo> variations) {
 321  0
         this.variations = variations;
 322  0
     }
 323  
 
 324  
     /**
 325  
      * The Study Subject Area is used to identify the area of study associated with the course. It may be a general study area (e.g. Chemistry) or very specific (e.g. Naval Architecture).
 326  
      */
 327  
     public String getSubjectArea() {
 328  0
         return subjectArea;
 329  
     }
 330  
 
 331  
     public void setSubjectArea(String subjectArea) {
 332  0
         this.subjectArea = subjectArea;
 333  0
     }
 334  
 
 335  
     /**
 336  
      * Places where this course might be offered
 337  
      */
 338  
     public List<String> getCampusLocations() {
 339  0
         if (campusLocations == null) {
 340  0
             campusLocations = new ArrayList<String>(0);
 341  
         }
 342  0
         return campusLocations;
 343  
     }
 344  
 
 345  
     public void setCampusLocations(List<String> campusLocations) {
 346  0
         this.campusLocations = campusLocations;
 347  0
     }
 348  
 
 349  
     /**
 350  
      * The expected level of out of class time commitment between the student and the course.
 351  
      */
 352  
     public AmountInfo getOutOfClassHours() {
 353  0
         return outOfClassHours;
 354  
     }
 355  
 
 356  
     public void setOutOfClassHours(AmountInfo outOfClassHours) {
 357  0
         this.outOfClassHours = outOfClassHours;
 358  0
     }
 359  
 
 360  
     /**
 361  
      * Primary potential instructor for the clu. This is primarily for use in advertising the course and may not be the actual instructor.
 362  
      */
 363  
     public CluInstructorInfo getPrimaryInstructor() {
 364  0
         return primaryInstructor;
 365  
     }
 366  
 
 367  
     public void setPrimaryInstructor(CluInstructorInfo primaryInstructor) {
 368  0
         this.primaryInstructor = primaryInstructor;
 369  0
     }
 370  
 
 371  
     /**
 372  
      * Instructors associated with this course.
 373  
      */
 374  
     public List<CluInstructorInfo> getInstructors() {
 375  0
         if (instructors == null) {
 376  0
             instructors = new ArrayList<CluInstructorInfo>(0);
 377  
         }
 378  0
         return instructors;
 379  
     }
 380  
 
 381  
     public void setInstructors(List<CluInstructorInfo> instructors) {
 382  0
         this.instructors = instructors;
 383  0
     }
 384  
 
 385  
 
 386  
     public List<String> getUnitsDeployment() {
 387  0
             if(unitsDeployment == null){
 388  0
                     unitsDeployment = new ArrayList<String>(0);
 389  
             }
 390  0
         return unitsDeployment;
 391  
     }
 392  
     
 393  
     /**
 394  
      * Narrative description of overall course fee justification.
 395  
      */
 396  
     public RichTextInfo getFeeJustification() {
 397  0
        return feeJustification;
 398  
 
 399  
     }
 400  
 
 401  
 
 402  
     public void setUnitsDeployment(List<String> unitsDeployment) {
 403  0
         this.unitsDeployment = unitsDeployment;
 404  0
     }
 405  
     
 406  
     public void setFeeJustification(RichTextInfo feeJustification) {
 407  0
         this.feeJustification = feeJustification;
 408  
 
 409  0
     }
 410  
 
 411  
     public List<String> getUnitsContentOwner() {
 412  0
             if(unitsContentOwner == null){
 413  0
                     unitsContentOwner = new ArrayList<String>(0);
 414  
             }
 415  0
             return unitsContentOwner;
 416  
     }
 417  
     
 418  
     /**
 419  
      * Fees information associated with this Course.
 420  
      */
 421  
     public List<CourseFeeInfo> getFees() {
 422  0
         if (fees == null) {
 423  0
             fees = new ArrayList<CourseFeeInfo>(0);
 424  
         }
 425  0
         return fees;
 426  
 
 427  
     }
 428  
 
 429  
     public void setUnitsContentOwner(List<String> unitsContentOwner) {
 430  0
         this.unitsContentOwner = unitsContentOwner;
 431  0
     }
 432  
     
 433  
     public void setFees(List<CourseFeeInfo> fees) {
 434  0
         this.fees = fees;
 435  0
     }
 436  
 
 437  
     /**
 438  
      * Revenue information associated with this Course.
 439  
      */
 440  
     public List<CourseRevenueInfo> getRevenues() {
 441  0
         if (revenues == null) {
 442  0
             revenues = new ArrayList<CourseRevenueInfo>(0);
 443  
         }
 444  0
         return revenues;
 445  
     }
 446  
 
 447  
     public void setRevenues(List<CourseRevenueInfo> revenues) {
 448  0
         this.revenues = revenues;
 449  0
     }
 450  
 
 451  
     /**
 452  
      * Expenditure information associated with this Course.
 453  
      */
 454  
     public CourseExpenditureInfo getExpenditure() {
 455  0
         return expenditure;
 456  
     }
 457  
 
 458  
     public void setExpenditure(CourseExpenditureInfo expenditure) {
 459  0
         this.expenditure = expenditure;
 460  0
     }
 461  
 
 462  
     /**
 463  
      * Learning Objectives associated with this Course.
 464  
      */
 465  
     public List<LoDisplayInfo> getCourseSpecificLOs() {
 466  0
         if (courseSpecificLOs == null) {
 467  0
             courseSpecificLOs = new ArrayList<LoDisplayInfo>(0);
 468  
         }
 469  0
         return courseSpecificLOs;
 470  
     }
 471  
 
 472  
     public void setCourseSpecificLOs(List<LoDisplayInfo> courseSpecificLOs) {
 473  0
         this.courseSpecificLOs = courseSpecificLOs;
 474  0
     }
 475  
 
 476  
     /**
 477  
      * Grading opitons available for the course
 478  
      */
 479  
     public List<String> getGradingOptions() {
 480  0
         if (gradingOptions == null) {
 481  0
             gradingOptions = new ArrayList<String>(0);
 482  
         }
 483  0
         return gradingOptions;
 484  
     }
 485  
 
 486  
     public void setGradingOptions(List<String> gradingOptions) {
 487  0
         this.gradingOptions = gradingOptions;
 488  0
     }
 489  
 
 490  
     /**
 491  
      * Credit outcomes from taking the course
 492  
      */
 493  
     public List<ResultComponentInfo> getCreditOptions() {
 494  0
         if (creditOptions == null) {
 495  0
             creditOptions = new ArrayList<ResultComponentInfo>(0);
 496  
         }
 497  0
         return creditOptions;
 498  
     }
 499  
 
 500  
     public void setCreditOptions(List<ResultComponentInfo> creditOptions) {
 501  0
         this.creditOptions = creditOptions;
 502  0
     }
 503  
 
 504  
     /**
 505  
      * Flag to indicate the course as a special topics course
 506  
      */
 507  
     public boolean isSpecialTopicsCourse() {
 508  0
         return specialTopicsCourse;
 509  
     }
 510  
 
 511  
     public void setSpecialTopicsCourse(boolean specialTopicsCourse) {
 512  0
         this.specialTopicsCourse = specialTopicsCourse;
 513  0
     }
 514  
 
 515  
     /**
 516  
      * Flag to indicate a one-time or pilot course, which is likely to have expedited approval process
 517  
      */
 518  
     public boolean isPilotCourse() {
 519  0
         return pilotCourse;
 520  
     }
 521  
 
 522  
     public void setPilotCourse(boolean pilotCourse) {
 523  0
         this.pilotCourse = pilotCourse;
 524  0
     }
 525  
 
 526  
     /**
 527  
      * The first academic time period that this Course would be effective.
 528  
      */
 529  
     public String getStartTerm() {
 530  0
         return startTerm;
 531  
     }
 532  
 
 533  
     public void setStartTerm(String startTerm) {
 534  0
         this.startTerm = startTerm;
 535  0
     }
 536  
 
 537  
     /**
 538  
      * The last academic time period that this Course would be effective.
 539  
      */
 540  
     public String getEndTerm() {
 541  0
         return endTerm;
 542  
     }
 543  
 
 544  
     public void setEndTerm(String endTerm) {
 545  0
         this.endTerm = endTerm;
 546  0
     }
 547  
 
 548  
     /**
 549  
      * Date and time the Course 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.
 550  
      */
 551  
     public Date getEffectiveDate() {
 552  0
         return effectiveDate;
 553  
     }
 554  
 
 555  
     public void setEffectiveDate(Date effectiveDate) {
 556  0
         this.effectiveDate = effectiveDate;
 557  0
     }
 558  
 
 559  
     /**
 560  
      * Date and time that this Course 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.
 561  
      */
 562  
     public Date getExpirationDate() {
 563  0
         return expirationDate;
 564  
     }
 565  
 
 566  
     public void setExpirationDate(Date expirationDate) {
 567  0
         this.expirationDate = expirationDate;
 568  0
     }
 569  
 
 570  
     /**
 571  
      * List of key/value pairs, typically used for dynamic attributes.
 572  
      */
 573  
     public Map<String, String> getAttributes() {
 574  0
         if (attributes == null) {
 575  0
             attributes = new HashMap<String, String>();
 576  
         }
 577  0
         return attributes;
 578  
     }
 579  
 
 580  
     public void setAttributes(Map<String, String> attributes) {
 581  0
         this.attributes = attributes;
 582  0
     }
 583  
 
 584  
     /**
 585  
      * 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.
 586  
      */
 587  
     public MetaInfo getMetaInfo() {
 588  0
         return metaInfo;
 589  
     }
 590  
 
 591  
     public void setMetaInfo(MetaInfo metaInfo) {
 592  0
         this.metaInfo = metaInfo;
 593  0
     }
 594  
 
 595  
     /**
 596  
      * Unique identifier for a learning unit type. Once set at create time, this field may not be updated.
 597  
      */
 598  
     public String getType() {
 599  0
         return type;
 600  
     }
 601  
 
 602  
     public void setType(String type) {
 603  0
         this.type = type;
 604  0
     }
 605  
 
 606  
     /**
 607  
      * The current status of the course. 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.
 608  
      */
 609  
     public String getState() {
 610  0
         return state;
 611  
     }
 612  
 
 613  
     public void setState(String state) {
 614  0
         this.state = state;
 615  0
     }
 616  
 
 617  
     /**
 618  
      * Unique identifier for a Course. This is optional, due to the identifier being set at the time of creation. Once the Course has been created, this should be seen as required.
 619  
      */
 620  
     public String getId() {
 621  0
         return id;
 622  
     }
 623  
 
 624  
     public void setId(String id) {
 625  0
         this.id = id;
 626  0
     }
 627  
 
 628  
     public VersionInfo getVersionInfo() {
 629  0
                 return versionInfo;
 630  
         }
 631  
 
 632  
         public void setVersionInfo(VersionInfo versionInfo) {
 633  0
                 this.versionInfo = versionInfo;
 634  0
         }    
 635  
 }