net.sf.cpsolver.studentsct.model

## Class CourseRequest

- java.lang.Object
- - net.sf.cpsolver.ifs.model.Variable<Request,Enrollment>
  - - net.sf.cpsolver.studentsct.model.Request
    - - net.sf.cpsolver.studentsct.model.CourseRequest

- All Implemented Interfaces:
    Comparable<Request>

      public class CourseRequest
      extends Request

  Representation of a request of a student for one or more course. A student requests one of the given courses, preferably the first one.
  Version:
    StudentSct 1.2 (Student Sectioning)
    Copyright (C) 2007 - 2010 Tomáš Müller
    muller@unitime.org
    http://muller.unitime.org
    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
    This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    You should have received a copy of the GNU Lesser General Public License along with this library; if not see http://www.gnu.org/licenses/.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static boolean` | `sSameTimePrecise`

    - ### Fields inherited from class net.sf.cpsolver.studentsct.model.Request

      `sCacheValues`

    - ### Fields inherited from class net.sf.cpsolver.ifs.model.Variable

      `iValue`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CourseRequest(long id, int priority, boolean alternative, Student student, List<Course> courses, boolean waitlist, Long timeStamp)` Constructor

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clearCache()` Clear cached min/max penalties and cached bound
    `void` | `clearReservationCache()` Clear reservation information that was cached on this section
    `List<Enrollment>` | `computeEnrollments()` Return all possible enrollments.
    `List<Enrollment>` | `computeRandomEnrollments(int limitEachConfig)` Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.
    `Enrollment` | `createEnrollment(Set<? extends Assignment> sections)` Create enrollment for the given list of sections.
    `Enrollment` | `createEnrollment(Set<? extends Assignment> sections, Reservation reservation)` Create enrollment for the given list of sections.
    `boolean` | `equals(Object o)`
    `List<Enrollment>` | `getAvaiableEnrollments()` Return all enrollments that are available
    `List<Enrollment>` | `getAvaiableEnrollmentsSkipSameTime()` Return all enrollments that are available, pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used)
    `double` | `getBound()` Estimated bound for this request -- it estimates the smallest value among all possible enrollments
    `Config` | `getConfig(long configId)` Return configuration of the requested courses with the given id
    `Course` | `getCourse(long courseId)` Return course of the requested courses with the given id
    `List<Course>` | `getCourses()` List of requested courses (in the correct order -- first is the requested course, second is the first alternative, etc.)
    `List<Enrollment>` | `getEnrollmentsSkipSameTime()` Return all possible enrollments.
    `protected int` | `getMaxDomainSize()` Maximal domain size (i.e., number of enrollments of a course request), -1 if there is no limit.
    `double` | `getMaxPenalty()` Maximal penalty (maximum of `Offering.getMaxPenalty()` among requested courses)
    `double` | `getMinPenalty()` Minimal penalty (minimum of `Offering.getMinPenalty()` among requested courses)
    `String` | `getName()` Request name: A for alternative, 1 + priority, (w) when waitlist, list of course names
    `List<Reservation>` | `getReservations(Course course)` Get reservations for this course requests
    `Section` | `getSection(long sectionId)` Return section of the requested courses with the given id
    `Set<Choice>` | `getSelectedChoices()` Selected choices
    `List<Enrollment>` | `getSelectedEnrollments(boolean availableOnly)` Return all enrollments that are selected ( `isSelected(Section)` is true)
    `Subpart` | `getSubpart(long subpartId)` Return subpart of the requested courses with the given id
    `Long` | `getTimeStamp()` Time stamp of the request
    `Set<Choice>` | `getWaitlistedChoices()` Wait-listed choices
    `boolean` | `hasReservations()` Return true if there is a reservation for a course of this request
    `boolean` | `isAssigned()` Return true if request is assigned.
    `boolean` | `isSelected(Section section)` Return true when the given section is selected (i.e., its choice is among selected choices)
    `boolean` | `isWaitlist()` True if the student can be put on a wait-list (no alternative course request will be given instead)
    `boolean` | `isWaitlisted(Section section)` Return true when the given section is wait-listed (i.e., its choice is among wait-listed choices)
    `void` | `setWaitlist(boolean waitlist)` True if the student can be put on a wait-list (no alternative course request will be given instead)
    `String` | `toString()`

    - ### Methods inherited from class net.sf.cpsolver.studentsct.model.Request

      `assign, compareTo, getId, getPriority, getStudent, getWeight, hashCode, isAlternative, setPriority, setWeight, unassign, values`

    - ### Methods inherited from class net.sf.cpsolver.ifs.model.Variable

      `addContstraint, addVariableListener, constraints, constraintVariables, countAssignments, getAssignment, getBestAssignment, getBestAssignmentIteration, getDescription, getExtra, getInitialAssignment, getModel, getVariableListeners, hardConstraints, hasAssignment, hasInitialAssignment, hasValues, lastAssignmentIteration, lastUnassignmentIteration, removeContstraint, removeInitialValue, removeValue, removeVariableListener, setBestAssignment, setExtra, setInitialAssignment, setModel, setValues, softConstraints`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### sSameTimePrecise

          public static boolean sSameTimePrecise

  - ### Constructor Detail

    - #### CourseRequest

          public CourseRequest(long id,
                               int priority,
                               boolean alternative,
                               Student student,
                               List<Course> courses,
                               boolean waitlist,
                               Long timeStamp)

      Constructor
      Parameters:
        `id` - request unique id
        `priority` - request priority
        `alternative` - true if the request is alternative (alternative request can be assigned instead of a non-alternative course requests, if it is left unassigned)
        `student` - appropriate student
        `courses` - list of requested courses (in the correct order -- first is the requested course, second is the first alternative, etc.)
        `waitlist` - time stamp of the request if the student can be put on a wait-list (no alternative course request will be given instead)

  - ### Method Detail

    - #### getCourses

          public List<Course> getCourses()

      List of requested courses (in the correct order -- first is the requested course, second is the first alternative, etc.)

    - #### createEnrollment

          public Enrollment createEnrollment(Set<? extends Assignment> sections,
                                             Reservation reservation)

      Create enrollment for the given list of sections. The list of sections needs to be correct, i.e., a section for each subpart of a configuration of one of the requested courses.

    - #### createEnrollment

          public Enrollment createEnrollment(Set<? extends Assignment> sections)

      Create enrollment for the given list of sections. The list of sections needs to be correct, i.e., a section for each subpart of a configuration of one of the requested courses.

    - #### getMaxDomainSize

          protected int getMaxDomainSize()

      Maximal domain size (i.e., number of enrollments of a course request), -1 if there is no limit.

    - #### computeEnrollments

          public List<Enrollment> computeEnrollments()

      Return all possible enrollments.
      Specified by:
        `computeEnrollments` in class `Request`

    - #### computeRandomEnrollments

          public List<Enrollment> computeRandomEnrollments(int limitEachConfig)

      Return a subset of all enrollments -- randomly select only up to limitEachConfig enrollments of each config.

    - #### getAvaiableEnrollments

          public List<Enrollment> getAvaiableEnrollments()

      Return all enrollments that are available

    - #### getSelectedEnrollments

          public List<Enrollment> getSelectedEnrollments(boolean availableOnly)

      Return all enrollments that are selected ( `isSelected(Section)` is true)
      Parameters:
        `availableOnly` - pick only available sections

    - #### getAvaiableEnrollmentsSkipSameTime

          public List<Enrollment> getAvaiableEnrollmentsSkipSameTime()

      Return all enrollments that are available, pick only the first section of the sections with the same time (of each subpart, `Section` comparator is used)

    - #### getEnrollmentsSkipSameTime

          public List<Enrollment> getEnrollmentsSkipSameTime()

      Return all possible enrollments.

    - #### getWaitlistedChoices

          public Set<Choice> getWaitlistedChoices()

      Wait-listed choices

    - #### isWaitlisted

          public boolean isWaitlisted(Section section)

      Return true when the given section is wait-listed (i.e., its choice is among wait-listed choices)

    - #### getSelectedChoices

          public Set<Choice> getSelectedChoices()

      Selected choices

    - #### isSelected

          public boolean isSelected(Section section)

      Return true when the given section is selected (i.e., its choice is among selected choices)

    - #### getName

          public String getName()

      Request name: A for alternative, 1 + priority, (w) when waitlist, list of course names
      Overrides:
        `getName` in class `Variable<Request,Enrollment>`

    - #### isWaitlist

          public boolean isWaitlist()

      True if the student can be put on a wait-list (no alternative course request will be given instead)

    - #### setWaitlist

          public void setWaitlist(boolean waitlist)

      True if the student can be put on a wait-list (no alternative course request will be given instead)

    - #### getTimeStamp

          public Long getTimeStamp()

      Time stamp of the request

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Variable<Request,Enrollment>`

    - #### getCourse

          public Course getCourse(long courseId)

      Return course of the requested courses with the given id

    - #### getConfig

          public Config getConfig(long configId)

      Return configuration of the requested courses with the given id

    - #### getSubpart

          public Subpart getSubpart(long subpartId)

      Return subpart of the requested courses with the given id

    - #### getSection

          public Section getSection(long sectionId)

      Return section of the requested courses with the given id

    - #### getMinPenalty

          public double getMinPenalty()

      Minimal penalty (minimum of `Offering.getMinPenalty()` among requested courses)

    - #### getMaxPenalty

          public double getMaxPenalty()

      Maximal penalty (maximum of `Offering.getMaxPenalty()` among requested courses)

    - #### clearCache

          public void clearCache()

      Clear cached min/max penalties and cached bound

    - #### getBound

          public double getBound()

      Estimated bound for this request -- it estimates the smallest value among all possible enrollments
      Specified by:
        `getBound` in class `Request`

    - #### isAssigned

          public boolean isAssigned()

      Return true if request is assigned.
      Overrides:
        `isAssigned` in class `Request`

    - #### equals

          public boolean equals(Object o)

      Overrides:
        `equals` in class `Request`

    - #### getReservations

          public List<Reservation> getReservations(Course course)

      Get reservations for this course requests

    - #### hasReservations

          public boolean hasReservations()

      Return true if there is a reservation for a course of this request

    - #### clearReservationCache

          public void clearReservationCache()

      Clear reservation information that was cached on this section