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  
     public void setUnitsContentOwner(List<String> unitsContentOwner) {
 429  0
         this.unitsContentOwner = unitsContentOwner;
 430  0
     }
 431  
     
 432  
     public void setFees(List<CourseFeeInfo> fees) {
 433  0
         this.fees = fees;
 434  0
     }
 435  
 
 436  
     /**
 437  
      * Revenue information associated with this Course.
 438  
      */
 439  
     public List<CourseRevenueInfo> getRevenues() {
 440  0
         if (revenues == null) {
 441  0
             revenues = new ArrayList<CourseRevenueInfo>(0);
 442  
         }
 443  0
         return revenues;
 444  
     }
 445  
 
 446  
     public void setRevenues(List<CourseRevenueInfo> revenues) {
 447  0
         this.revenues = revenues;
 448  0
     }
 449  
 
 450  
     /**
 451  
      * Expenditure information associated with this Course.
 452  
      */
 453  
     public CourseExpenditureInfo getExpenditure() {
 454  0
         return expenditure;
 455  
     }
 456  
 
 457  
     public void setExpenditure(CourseExpenditureInfo expenditure) {
 458  0
         this.expenditure = expenditure;
 459  0
     }
 460  
 
 461  
     /**
 462  
      * Learning Objectives associated with this Course.
 463  
      */
 464  
     public List<LoDisplayInfo> getCourseSpecificLOs() {
 465  0
         if (courseSpecificLOs == null) {
 466  0
             courseSpecificLOs = new ArrayList<LoDisplayInfo>(0);
 467  
         }
 468  0
         return courseSpecificLOs;
 469  
     }
 470  
 
 471  
     public void setCourseSpecificLOs(List<LoDisplayInfo> courseSpecificLOs) {
 472  0
         this.courseSpecificLOs = courseSpecificLOs;
 473  0
     }
 474  
 
 475  
     /**
 476  
      * Grading opitons available for the course
 477  
      */
 478  
     public List<String> getGradingOptions() {
 479  0
         if (gradingOptions == null) {
 480  0
             gradingOptions = new ArrayList<String>(0);
 481  
         }
 482  0
         return gradingOptions;
 483  
     }
 484  
 
 485  
     public void setGradingOptions(List<String> gradingOptions) {
 486  0
         this.gradingOptions = gradingOptions;
 487  0
     }
 488  
 
 489  
     /**
 490  
      * Credit outcomes from taking the course
 491  
      */
 492  
     public List<ResultComponentInfo> getCreditOptions() {
 493  0
         if (creditOptions == null) {
 494  0
             creditOptions = new ArrayList<ResultComponentInfo>(0);
 495  
         }
 496  0
         return creditOptions;
 497  
     }
 498  
 
 499  
     public void setCreditOptions(List<ResultComponentInfo> creditOptions) {
 500  0
         this.creditOptions = creditOptions;
 501  0
     }
 502  
 
 503  
     /**
 504  
      * Flag to indicate the course as a special topics course
 505  
      */
 506  
     public boolean isSpecialTopicsCourse() {
 507  0
         return specialTopicsCourse;
 508  
     }
 509  
 
 510  
     public void setSpecialTopicsCourse(boolean specialTopicsCourse) {
 511  0
         this.specialTopicsCourse = specialTopicsCourse;
 512  0
     }
 513  
 
 514  
     /**
 515  
      * Flag to indicate a one-time or pilot course, which is likely to have expedited approval process
 516  
      */
 517  
     public boolean isPilotCourse() {
 518  0
         return pilotCourse;
 519  
     }
 520  
 
 521  
     public void setPilotCourse(boolean pilotCourse) {
 522  0
         this.pilotCourse = pilotCourse;
 523  0
     }
 524  
 
 525  
     /**
 526  
      * The first academic time period that this Course would be effective.
 527  
      */
 528  
     public String getStartTerm() {
 529  0
         return startTerm;
 530  
     }
 531  
 
 532  
     public void setStartTerm(String startTerm) {
 533  0
         this.startTerm = startTerm;
 534  0
     }
 535  
 
 536  
     /**
 537  
      * The last academic time period that this Course would be effective.
 538  
      */
 539  
     public String getEndTerm() {
 540  0
         return endTerm;
 541  
     }
 542  
 
 543  
     public void setEndTerm(String endTerm) {
 544  0
         this.endTerm = endTerm;
 545  0
     }
 546  
 
 547  
     /**
 548  
      * 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.
 549  
      */
 550  
     public Date getEffectiveDate() {
 551  0
         return effectiveDate;
 552  
     }
 553  
 
 554  
     public void setEffectiveDate(Date effectiveDate) {
 555  0
         this.effectiveDate = effectiveDate;
 556  0
     }
 557  
 
 558  
     /**
 559  
      * 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.
 560  
      */
 561  
     public Date getExpirationDate() {
 562  0
         return expirationDate;
 563  
     }
 564  
 
 565  
     public void setExpirationDate(Date expirationDate) {
 566  0
         this.expirationDate = expirationDate;
 567  0
     }
 568  
 
 569  
     /**
 570  
      * List of key/value pairs, typically used for dynamic attributes.
 571  
      */
 572  
     public Map<String, String> getAttributes() {
 573  0
         if (attributes == null) {
 574  0
             attributes = new HashMap<String, String>();
 575  
         }
 576  0
         return attributes;
 577  
     }
 578  
 
 579  
     public void setAttributes(Map<String, String> attributes) {
 580  0
         this.attributes = attributes;
 581  0
     }
 582  
 
 583  
     /**
 584  
      * 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.
 585  
      */
 586  
     public MetaInfo getMetaInfo() {
 587  0
         return metaInfo;
 588  
     }
 589  
 
 590  
     public void setMetaInfo(MetaInfo metaInfo) {
 591  0
         this.metaInfo = metaInfo;
 592  0
     }
 593  
 
 594  
     /**
 595  
      * Unique identifier for a learning unit type. Once set at create time, this field may not be updated.
 596  
      */
 597  
     public String getType() {
 598  0
         return type;
 599  
     }
 600  
 
 601  
     public void setType(String type) {
 602  0
         this.type = type;
 603  0
     }
 604  
 
 605  
     /**
 606  
      * 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.
 607  
      */
 608  
     public String getState() {
 609  0
         return state;
 610  
     }
 611  
 
 612  
     public void setState(String state) {
 613  0
         this.state = state;
 614  0
     }
 615  
 
 616  
     /**
 617  
      * 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.
 618  
      */
 619  
     public String getId() {
 620  0
         return id;
 621  
     }
 622  
 
 623  
     public void setId(String id) {
 624  0
         this.id = id;
 625  0
     }
 626  
 
 627  
     public VersionInfo getVersionInfo() {
 628  0
                 return versionInfo;
 629  
         }
 630  
 
 631  
         public void setVersionInfo(VersionInfo versionInfo) {
 632  0
                 this.versionInfo = versionInfo;
 633  0
         }    
 634  
 }