001 package net.sf.cpsolver.studentsct.model;
002
003 /**
004 * Representation of a course offering. A course offering contains id, subject area, course number and an instructional offering.
005 * <br><br>
006 * Each instructional offering (see {@link Offering}) is offered under one or more course offerings.
007 *
008 * <br><br>
009 *
010 * @version
011 * StudentSct 1.1 (Student Sectioning)<br>
012 * Copyright (C) 2007 Tomáš Müller<br>
013 * <a href="mailto:muller@unitime.org">muller@unitime.org</a><br>
014 * Lazenska 391, 76314 Zlin, Czech Republic<br>
015 * <br>
016 * This library is free software; you can redistribute it and/or
017 * modify it under the terms of the GNU Lesser General Public
018 * License as published by the Free Software Foundation; either
019 * version 2.1 of the License, or (at your option) any later version.
020 * <br><br>
021 * This library is distributed in the hope that it will be useful,
022 * but WITHOUT ANY WARRANTY; without even the implied warranty of
023 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
024 * Lesser General Public License for more details.
025 * <br><br>
026 * You should have received a copy of the GNU Lesser General Public
027 * License along with this library; if not, write to the Free Software
028 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
029 */
030 public class Course {
031 private long iId = -1;
032 private String iSubjectArea = null;
033 private String iCourseNumber = null;
034 private Offering iOffering = null;
035 private int iLimit =0, iProjected = 0;
036
037 /**
038 * Constructor
039 * @param id course offering unique id
040 * @param subjectArea subject area (e.g., MA, CS, ENGL)
041 * @param courseNumber course number under the given subject area
042 * @param offering instructional offering which is offered under this course offering
043 */
044 public Course(long id, String subjectArea, String courseNumber, Offering offering) {
045 iId = id;
046 iSubjectArea = subjectArea;
047 iCourseNumber = courseNumber;
048 iOffering = offering;
049 iOffering.getCourses().add(this);
050 }
051
052 /**
053 * Constructor
054 * @param id course offering unique id
055 * @param subjectArea subject area (e.g., MA, CS, ENGL)
056 * @param courseNumber course number under the given subject area
057 * @param offering instructional offering which is offered under this course offering
058 * @param limit course offering limit
059 * @param projected projected demand
060 */
061 public Course(long id, String subjectArea, String courseNumber, Offering offering, int limit, int projected) {
062 iId = id;
063 iSubjectArea = subjectArea;
064 iCourseNumber = courseNumber;
065 iOffering = offering;
066 iOffering.getCourses().add(this);
067 iLimit = limit;
068 iProjected = projected;
069 }
070
071 /** Course offering unique id */
072 public long getId() {
073 return iId;
074 }
075
076 /** Subject area */
077 public String getSubjectArea() {
078 return iSubjectArea;
079 }
080
081 /** Course number */
082 public String getCourseNumber() {
083 return iCourseNumber;
084 }
085
086 /** Course offering name: subject area + course number */
087 public String getName() {
088 return iSubjectArea + " " + iCourseNumber;
089 }
090
091 public String toString() {
092 return getName();
093 }
094
095 /** Instructional offering which is offered under this course offering. */
096 public Offering getOffering() {
097 return iOffering;
098 }
099
100 /** Course offering limit */
101 public int getLimit() {
102 return iLimit;
103 }
104
105 /** Set course offering limit */
106 public void setLimit(int limit) {
107 iLimit = limit;
108 }
109
110 /** Course offering projected number of students */
111 public int getProjected() {
112 return iProjected;
113 }
114 }