    001package org.cpsolver.instructor.model;
    002
    003import java.util.BitSet;
    004
    005import org.cpsolver.coursett.model.TimeLocation;
    006
    007/**
    008 * Enrolled class to be used as an instructor unavailability.
    009 *
    010 * @author  Tomáš Müller
    011 * @version IFS 1.3 (Instructor Sectioning)<br>
    012 *          Copyright (C) 2016 Tomáš Müller<br>
    013 *          <a href="mailto:muller@unitime.org">muller@unitime.org</a><br>
    014 *          <a href="http://muller.unitime.org">http://muller.unitime.org</a><br>
    015 * <br>
    016 *          This library is free software; you can redistribute it and/or modify
    017 *          it under the terms of the GNU Lesser General Public License as
    018 *          published by the Free Software Foundation; either version 3 of the
    019 *          License, or (at your option) any later version. <br>
    020 * <br>
    021 *          This library is distributed in the hope that it will be useful, but
    022 *          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. <br>
    025 * <br>
    026 *          You should have received a copy of the GNU Lesser General Public
    027 *          License along with this library; if not see
    028 *          <a href='http://www.gnu.org/licenses/'>http://www.gnu.org/licenses/</a>.
    029 */
    030public class EnrolledClass extends TimeLocation {
    031    private Long iCourseId;
    032    private Long iClassId;
    033    private String iCourse;
    034    private String iSection;
    035    private String iType;
    036    private String iExternalId;
    037    private String iRoom;
    038    private boolean iInstructor;
    039
    040    /**
    041     * Constructor
    042     * @param courseId course unique id
    043     * @param classId class unique id
    044     * @param course course name
    045     * @param type instructional type
    046     * @param section section name
    047     * @param externalId external id
    048     * @param dayCode days (combination of 1 for Monday, 2 for Tuesday, ...)
    049     * @param startTime start slot
    050     * @param length number of slots
    051     * @param datePatternId date pattern unique id
    052     * @param datePatternName date pattern name
    053     * @param weekCode date pattern (binary string with 1 for each day when classes take place)
    054     * @param breakTime break time in minutes
    055     * @param room assigned room(s)
    056     * @param instructor true if the instructor is teaching the class (not being a student)
    057     */
    058    public EnrolledClass(Long courseId, Long classId, String course, String type, String section, String externalId, int dayCode, int startTime, int length, Long datePatternId, String datePatternName, BitSet weekCode, int breakTime, String room, boolean instructor) {
    059        super(dayCode, startTime, length, 0, 0.0, 0, datePatternId, datePatternName, weekCode, breakTime);
    060        iCourseId = courseId;
    061        iClassId = classId;
    062        iCourse = course;
    063        iType = type;
    064        iSection = section;
    065        iExternalId = externalId;
    066        iRoom = room;
    067        iInstructor = instructor;
    068    }
    069
    070    /**
    071     * Unique id of the enrolled course
    072     * @return course unique id
    073     */
    074    public Long getCourseId() { return iCourseId; }
    075    /**
    076     * Unique id of the enrolled class
    077     * @return class unique id
    078     */
    079    public Long getClassId() { return iClassId; }
    080    /**
    081     * Name of the enrolled course
    082     * @return course name
    083     */
    084    public String getCourse() { return iCourse; }
    085    /**
    086     * Name of the enrolled class
    087     * @return section name
    088     */
    089    public String getSection() { return iSection; }
    090    /**
    091     * Name of the instructional type of the enrolled class
    092     * @return instructional type
    093     */
    094    public String getType() { return iType; }
    095    /**
    096     * External id of the enrolled class
    097     * @return external id
    098     */
    099    public String getExternalId() { return iExternalId; }
    100    /**
    101     * Room or rooms (comma separated) of the enrolled class
    102     * @return assigned room name
    103     */
    104    public String getRoom() { return iRoom; }
    105    /**
    106     * Role of the instructor
    107     * @return true if the instructor is teaching this class
    108     */
    109    public boolean isInstructor() { return iInstructor; }
    110    /**
    111     * Role of the instructor
    112     * @return true if the instructor is enrolled in this class as student
    113     */
    114    public boolean isStudent() { return !iInstructor; }
    115
    116    @Override
    117    public String toString() {
    118        return getCourse() + " " + getSection() + " " + getLongName(true);
    119    }
    120}