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