001package org.cpsolver.studentsct.reservation; 002 003import org.cpsolver.studentsct.model.Course; 004import org.cpsolver.studentsct.model.Student; 005 006/** 007 * Group restriction. Students are matched based on their course requests. 008 * <br> 009 * <br> 010 * 011 * @author Tomáš Müller 012 * @version StudentSct 1.3 (Student Sectioning)<br> 013 * Copyright (C) 2007 - 2020 Tomáš Müller<br> 014 * <a href="mailto:muller@unitime.org">muller@unitime.org</a><br> 015 * <a href="http://muller.unitime.org">http://muller.unitime.org</a><br> 016 * <br> 017 * This library is free software; you can redistribute it and/or modify 018 * it under the terms of the GNU Lesser General Public License as 019 * published by the Free Software Foundation; either version 3 of the 020 * License, or (at your option) any later version. <br> 021 * <br> 022 * This library is distributed in the hope that it will be useful, but 023 * WITHOUT ANY WARRANTY; without even the implied warranty of 024 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 025 * Lesser General Public License for more details. <br> 026 * <br> 027 * You should have received a copy of the GNU Lesser General Public 028 * License along with this library; if not see 029 * <a href='http://www.gnu.org/licenses/'>http://www.gnu.org/licenses/</a>. 030 */ 031public class CourseRestriction extends Restriction { 032 private Course iCourse; 033 034 /** 035 * Constructor 036 * @param id restriction unique id 037 * @param course course offering on which the restriction is set 038 */ 039 public CourseRestriction(long id, Course course) { 040 super(id, course.getOffering()); 041 iCourse = course; 042 } 043 044 /** 045 * Course offering 046 * @return course offering 047 */ 048 public Course getCourse() { 049 return iCourse; 050 } 051 052 /** 053 * Check the area, classifications and majors 054 */ 055 @Override 056 public boolean isApplicable(Student student, Course course) { 057 return course != null && course.equals(getCourse()); 058 } 059}