Coverage Report - org.kuali.student.enrollment.courseoffering.infc.CourseOffering
 
Classes in this File Line Coverage Branch Coverage Complexity
CourseOffering
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2010 The Kuali Foundation 
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 2.0 (the
 5  
  * "License"); you may not use this file except in compliance with the
 6  
  * License. You may obtain a copy of the License at
 7  
  *
 8  
  * http://www.osedu.org/licenses/ECL-2.0
 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
 13  
  * implied. See the License for the specific language governing
 14  
  * permissions and limitations under the License.
 15  
  */
 16  
 
 17  
 package org.kuali.student.enrollment.courseoffering.infc;
 18  
 
 19  
 import java.util.List;
 20  
 
 21  
 import org.kuali.student.r2.common.infc.IdEntity;
 22  
 import org.kuali.student.r2.common.infc.IdNamelessEntity;
 23  
 import org.kuali.student.r2.common.infc.RichText;
 24  
 import org.kuali.student.r2.common.infc.TimeAmount;
 25  
 import org.kuali.student.r2.lum.lrc.infc.ResultValuesGroup;
 26  
 import org.kuali.student.r2.lum.clu.dto.ExpenditureInfo;
 27  
 import org.kuali.student.r2.lum.clu.dto.RevenueInfo;
 28  
 import org.kuali.student.r2.lum.clu.infc.Fee;
 29  
 
 30  
 /**
 31  
  * @author Kamal
 32  
  */
 33  
 
 34  
 public interface CourseOffering extends IdNamelessEntity{
 35  
 
 36  
     /**
 37  
      * A unique identifier assigned to all approved courses that exist
 38  
      * in the catalog This is not updatable once initialized.
 39  
      * 
 40  
      * @name Course Id
 41  
      * @readOnly
 42  
      * @required
 43  
      * @impl this maps the the version dependent id as the offering
 44  
      *       must point to one and only one version of the
 45  
      *       course. Maps to cluId in Lui.
 46  
      */
 47  
     public String getCourseId();
 48  
 
 49  
     /**
 50  
      * Academic term of course offering
 51  
      * 
 52  
      * @name Term Id
 53  
      * @readOnly on updates
 54  
      * @required
 55  
      * @impl set during the #createCourseOffering and then maps to
 56  
      *       the aptKey on the Lui
 57  
      */
 58  
     public String getTermId();
 59  
 
 60  
     /**
 61  
      * Identifies the number of a course as reflected in the course catalog.
 62  
      * This typically must be unique across all courses offered during that
 63  
      * term. If the user wants to create two separate offerings for the same
 64  
      * course they must modify this code to make it unique. For example: An
 65  
      * on-line offering of the course might have an "O" appended to it to
 66  
      * distinguish it from the face to face offering, i.e. ENG101 and ENG101O
 67  
      * Initially copied from the course catalog but then, depending on the
 68  
      * configuration it may be updatable. Often this field is configured so that
 69  
      * it is not not directly updatable but rather is calculated from it's two
 70  
      * constituent parts, the subject area and the course number suffix. For
 71  
      * example: Subject Area = "ENG" and Suffix = "101" then code = "ENG101"
 72  
      * 
 73  
      * @name Course Offering Code
 74  
      * @impl initialially this is copied from the course catalog code but then
 75  
      *       is subsequently stored in the lui as lui.officialIdentifier.code
 76  
      */
 77  
     public String getCourseOfferingCode();
 78  
 
 79  
     /**
 80  
      * Identifies the department and/subject code of the course as reflected in
 81  
      * the course catalog. Initially copied from the course catalog but then,
 82  
      * depending on the configuration it may be updatable. In most
 83  
      * configurations this should not be updatable. Often used in the
 84  
      * calculation of the courseCode
 85  
      * 
 86  
      * @name Subject Area
 87  
      * @impl initially copied from the canonical course but then stored in the
 88  
      *       Lui as lui.officialIdentifier.division
 89  
      */
 90  
     public String getSubjectArea();
 91  
 
 92  
     /**
 93  
      * A suffix of the course number as reflected in the college catalog. This
 94  
      * is the "number" portion of the course code. Initially copied from the
 95  
      * course catalog but then, depending on the configuration it may be
 96  
      * updatable. This field is often configured to be updatable but the updates
 97  
      * typically simply append something like an "O" for on-line to it to
 98  
      * differentiate multiple course offerings for the same course. Often used
 99  
      * in the calculation of the courseCode.
 100  
      * 
 101  
      * @name Course Number Suffix
 102  
      * @impl initially copied from the canonical course but then stored in the
 103  
      *       Lui as lui.officialIdentifier.suffixCode
 104  
      */
 105  
     public String getCourseNumberSuffix();
 106  
 
 107  
     /**
 108  
      * Name of the course used in the college catalog. Initially copied from the
 109  
      * course catalog but then, depending on the configuration it may be
 110  
      * updatable. For regular courses this is not generally allowed to be
 111  
      * updated on the offering, but for special topics courses this is often
 112  
      * overridden to capture the particular topic being taught offered this
 113  
      * term. Note: the configuration of the validation for titles is typically
 114  
      * restricted to exclude line breaks. This may have to be loosened as some
 115  
      * schools may want the particular topic to appear on a 2nd line. For
 116  
      * example: SPECIAL TOPICS: AN EXPLORATION OF DEEP SPACE ARTIFACTS
 117  
      * l
 118  
      * @name Course Title
 119  
      * @impl initially copied from the canonical course but then stored in the
 120  
      *       Lui as lui.officialIdentifier.longName
 121  
      */
 122  
     public String getCourseOfferingTitle();
 123  
 
 124  
     /**
 125  
      * Indicates that the entire course offering is an Honors Course ??? Is this
 126  
      * an enrollment restriction rule or a flag or both?
 127  
      * 
 128  
      * @name Is Honors Offering
 129  
      * @impl store in a generic lui luCodes type of field?
 130  
      */
 131  
     public Boolean getIsHonorsOffering();
 132  
 
 133  
     /**
 134  
      * Total maximum number of "seats" or enrollment slots that can be filled
 135  
      * for the offering. Calculated based on sum of all the maximum seats of
 136  
      * primary activity type offerings.
 137  
      * 
 138  
      * @name Maximum Enrollment
 139  
      * @impl maps to Lui.maximumEnrollment
 140  
      */
 141  
     public Integer getMaximumEnrollment();
 142  
 
 143  
     /**
 144  
      * Total minimum number of seats that must be filled for the offering not to
 145  
      * be canceled. Calculated based on sum of all the minimum seats of primary
 146  
      * activity type offerings
 147  
      * 
 148  
      * @name Minimum Enrollment
 149  
      * @impl maps to Lui.minimumEnrollment
 150  
      */
 151  
     public Integer getMinimumEnrollment();
 152  
 
 153  
     /**
 154  
      * The unique identifier of the other course offerings with which this
 155  
      * offering is joint-listed
 156  
      * 
 157  
      * @name Joint Offering Ids
 158  
      * @readOnly I think?
 159  
      * @impl Canonical might suggest offerings that can be jointly offered. This
 160  
      *       is stored as a luiluirelation of joint type
 161  
      */
 162  
     public List<String> getJointOfferingIds();
 163  
 
 164  
     /******** Assessment Information ***************/
 165  
 
 166  
     /**
 167  
      * The options/scales that indicate the allowable grades within a
 168  
      * grading scheme that can be awarded. Typically, the values here
 169  
      * are constrained by the values on the canonical course. If the
 170  
      * value is set here then the Clu must have a grading option set
 171  
      * on the canonical activity. For example: an id might point to
 172  
      * Pass/Fail or Letter Graded option.
 173  
      * 
 174  
      * @name: Grading Option Id
 175  
      * @impl Lui.resultOptionIds of type ???
 176  
      */
 177  
     public String getGradingOptionId();
 178  
 
 179  
     /**
 180  
      * The options/scales that indicate the allowable grades within a
 181  
      * grading scheme in which an eligible student can register. This
 182  
      * list of options includes the Grading Option Id plus any
 183  
      * additional grading schemes, such as P/F or Audit.
 184  
      * 
 185  
      * @name: registration Grading Option Ids
 186  
      * @impl Lui.resultOptionIds of type ???
 187  
      */
 188  
     public List<String> getRegistrationGradingOptionIds();
 189  
 
 190  
     /**
 191  
      * A display string for the credit option.
 192  
      * 
 193  
      * @name Credit Option Display
 194  
      * @readOnly
 195  
      */
 196  
     public String getCreditOptionDisplay();
 197  
 
 198  
     /**
 199  
      * Type of credit of course offering. This field is initially copied from
 200  
      * the canonical course but then, depending on configuration, it may be
 201  
      * updated. TODO: figure out which of the credit options will be copied down
 202  
      * because the canonical has more than one! Often it is just a fixed single
 203  
      * value but a ResultValuesGroup could contain a range (with increments) or
 204  
      * even a discrete list of possible credit values.
 205  
      * 
 206  
      * @name Credit Option Id
 207  
      * @impl Lui.resultOptionIds returns a list of resultOptions. Filter option
 208  
      *       with credit type and that should give the resultValueGroup.
 209  
      */
 210  
     public String getCreditOptionId();
 211  
 
 212  
 
 213  
     /******** Personnel Information *****************/
 214  
 
 215  
     /**
 216  
      * Instructors for this course offering TODO: find out if the canonical
 217  
      * instructors should be copied down
 218  
      * 
 219  
      * @name Instructors
 220  
      * @impl These are derived from Lui Person relations with instructor type
 221  
      */
 222  
     public List<? extends OfferingInstructor> getInstructors();
 223  
 
 224  
     /********* Organization Information **************/
 225  
 
 226  
     /**
 227  
      * Organization(s) that is responsible for administering the course delivery
 228  
      * - and all associated logistics - of the course Initially copied from the
 229  
      * canonical course then, depending on the configuration, updated This is
 230  
      * typically an academic department but could be for example the extended
 231  
      * studies office that is responsible for delivering the course even though
 232  
      * it's content is managed by an academic department.
 233  
      * 
 234  
      * @name Units Deployment
 235  
      * @impl initalized from canonical course units deployment but then stored
 236  
      *       in lui.unitsDeployment
 237  
      */
 238  
     public List<String> getUnitsDeploymentOrgIds();
 239  
 
 240  
     /**
 241  
      * Organization(s) that is responsible for the academic content of the
 242  
      * course as approved in its canonical form. This is the organization that
 243  
      * has oversight of the curriculum. This is typically an academic
 244  
      * department.
 245  
      * 
 246  
      * @name Units Content Owner
 247  
      * @readOnly on updates
 248  
      * @impl this is never updatable so it should just be grabbed from the
 249  
      *       canonical course and then stored in lui.unitsContentOwner
 250  
      */
 251  
     public List<String> getUnitsContentOwnerOrgIds();
 252  
 
 253  
 
 254  
 
 255  
     /*********** Waitlist *****************************/
 256  
 
 257  
     /*
 258  
      * TODO: Skip this section for core slice development
 259  
      */
 260  
 
 261  
     /**
 262  
      * Indicates whether a RegistrationGroup has a waitlist TODO: figure out how
 263  
      * to store this TODO: make sure we are consistent on how we spell Waitlist,
 264  
      * should be spelled Waitlist, or Wait List or Wait-List (as the
 265  
      * merriam-webster has it)
 266  
      * 
 267  
      * @name Has Waitlist
 268  
      * @impl not sure how to store this, it depends on how we end up
 269  
      *       implementing waitlists.
 270  
      */
 271  
     public Boolean getHasWaitlist();
 272  
 
 273  
     /**
 274  
      * Indicates the type of waitlist as it relates to processing students on
 275  
      * and off The three types predefined in kuali are Automatic, Semi-Automatic
 276  
      * and Manual TODO: Right not Waitlist types are not tied to any Waitlist
 277  
      * object so we need to define an "other key" to get the list of valid
 278  
      * values from the type service. TODO: Decide if we need a separate
 279  
      * getHasWaitList, perhaps no value in this field means no waitlist. TODO:
 280  
      * Cross validate with hasWaitlist
 281  
      * 
 282  
      * @name Waitlist Type Key
 283  
      * @impl TODO: decide if this this should be stored on the Lui or on a
 284  
      *       waitlist object?
 285  
      */
 286  
     public String getWaitlistTypeKey();
 287  
 
 288  
     /**
 289  
      *  Indicates the waitlist level, i.e., CourseOffering or ActivityOffering
 290  
      *
 291  
      * @name Waitlist Level Type Key
 292  
     */
 293  
 
 294  
     public String  getWaitlistLevelTypeKey();
 295  
 
 296  
   /************* Finances ***************************/
 297  
 
 298  
     /**
 299  
      * The primary source of funding for the offering.
 300  
      * 
 301  
      * @name Funding Source
 302  
      * @impl fyi "funding source" is an enumeration values are state support,
 303  
      *       self-support, contract funding
 304  
      */
 305  
     public String getFundingSource();
 306  
 
 307  
     /**
 308  
      * Flag indicating whether a course is eligible for Financial Aid. Derived
 309  
      * from course catalog (canonical) TODO: find a place to store this on the
 310  
      * canonical course because it does not currently exist there TODO: Decide
 311  
      * if this is really a rule or a CluSet or what?
 312  
      * 
 313  
      * @name Is Financial Aid Eligible
 314  
      * @impl TODO: decide where to store
 315  
      */
 316  
     public Boolean getIsFinancialAidEligible();
 317  
 
 318  
     /**
 319  
      * Places where this Course offering is offered.
 320  
      *
 321  
      * @name Campus Locations
 322  
      */
 323  
     public List<String> getCampusLocations() ;
 324  
 
 325  
     /**
 326  
      * Custom Descr for the course Offering
 327  
      * @name Course Offering Description
 328  
      */
 329  
     public RichText getDescr();
 330  
 
 331  
     /**
 332  
      *  Is this a Honors Course offering
 333  
      * @name   Honors Flag
 334  
      */
 335  
     public Boolean getHonorsOffering();
 336  
 
 337  
     /**
 338  
      * Is this Course Offering Financial aid eligible
 339  
      * @name Financial Aid Eligible Flag
 340  
      */
 341  
     public Boolean getFinancialAidEligible();
 342  
 
 343  
     /**
 344  
      * Indicates whether a final exam is to be given  for this format Offering
 345  
      * and if its true, the level at which it exists
 346  
      *
 347  
      * @name Has Final Exam
 348  
      */
 349  
     public Boolean getHasFinalExam();
 350  
 
 351  
     /**
 352  
      * Indicates whether the fee is at activity offering level or course offering
 353  
      * level. If true its at Activity Offering level, if false its at CourseOffering level.
 354  
      *
 355  
      *
 356  
      * @name Is Fee at Activity Offering
 357  
      */
 358  
     public Boolean getIsFeeAtActivityOffering();
 359  
 
 360  
     /**
 361  
      * Indicates whether the course offering has an evaluation
 362  
      *
 363  
      *
 364  
      * @name Is Evaluated
 365  
      */
 366  
     public Boolean getIsEvaluated();
 367  
 }
 368