    001package org.cpsolver.studentsct.online;
    002
    003import java.util.List;
    004
    005import org.cpsolver.coursett.model.Placement;
    006import org.cpsolver.studentsct.model.Instructor;
    007import org.cpsolver.studentsct.model.Section;
    008import org.cpsolver.studentsct.model.Student;
    009import org.cpsolver.studentsct.model.Subpart;
    010
    011/**
    012 * An online section. A simple extension of the {@link Section} class that allows to set the current section enrollment.
    013 * This class is particularly useful when a model containing only the given student is constructed (to provide him/her with a schedule or suggestions).
    014 *
    015 * @author  Tomáš Müller
    016 * @version StudentSct 1.3 (Student Sectioning)<br>
    017 *          Copyright (C) 2014 Tomáš Müller<br>
    018 *          <a href="mailto:muller@unitime.org">muller@unitime.org</a><br>
    019 *          <a href="http://muller.unitime.org">http://muller.unitime.org</a><br>
    020 * <br>
    021 *          This library is free software; you can redistribute it and/or modify
    022 *          it under the terms of the GNU Lesser General Public License as
    023 *          published by the Free Software Foundation; either version 3 of the
    024 *          License, or (at your option) any later version. <br>
    025 * <br>
    026 *          This library is distributed in the hope that it will be useful, but
    027 *          WITHOUT ANY WARRANTY; without even the implied warranty of
    028 *          MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    029 *          Lesser General Public License for more details. <br>
    030 * <br>
    031 *          You should have received a copy of the GNU Lesser General Public
    032 *          License along with this library; if not see <a href='http://www.gnu.org/licenses'>http://www.gnu.org/licenses</a>.
    033 *
    034 */
    035public class OnlineSection extends Section {
    036    private int iEnrollment = 0;
    037    private boolean iAlwaysEnabled = false;
    038    private Integer iDayOfWeekOffset = null;
    039
    040    public OnlineSection(long id, int limit, String name, Subpart subpart, Placement placement, List<Instructor> instructors, Section parent) {
    041        super(id, limit, name, subpart, placement, instructors, parent);
    042    }
    043
    044    @Deprecated
    045    public OnlineSection(long id, int limit, String name, Subpart subpart, Placement placement, String instructorIds, String instructorNames, Section parent) {
    046        super(id, limit, name, subpart, placement, instructorIds, instructorNames, parent);
    047    }
    048
    049    /**
    050     * Set current enrollment
    051     * @param enrollment current enrollment
    052     */
    053    public void setEnrollment(int enrollment) { iEnrollment = enrollment; }
    054
    055    /**
    056     * Get current enrollment
    057     * @return current enrollment
    058     */
    059    public int getEnrollment() { return iEnrollment; }
    060
    061    public void setAlwaysEnabled(boolean alwaysEnabled) { iAlwaysEnabled = alwaysEnabled; }
    062    public boolean isAlwaysEnabled() { return iAlwaysEnabled; }
    063
    064    @Override
    065    public boolean isEnabled() {
    066        if (iAlwaysEnabled) return true;
    067        return super.isEnabled();
    068    }
    069
    070    @Override
    071    public boolean isEnabled(Student student) {
    072        if (iAlwaysEnabled) return true;
    073        return super.isEnabled(student);
    074    }
    075
    076    @Override
    077    protected int getDayOfWeekOffset() {
    078        if (iDayOfWeekOffset != null) return iDayOfWeekOffset;
    079        return super.getDayOfWeekOffset();
    080    }
    081    public void setDayOfWeekOffset(Integer dayOfWeekOffset) {
    082        iDayOfWeekOffset = dayOfWeekOffset;
    083    }
    084
    085}