001    package net.sf.cpsolver.studentsct.filter;
002    
003    import net.sf.cpsolver.studentsct.model.Student;
004    
005    /**
006     * This student filter accepts students that are not accepted by the provided
007     * student filter.
008     * 
009     * @version StudentSct 1.2 (Student Sectioning)<br>
010     *          Copyright (C) 2007 - 2010 Tomas Muller<br>
011     *          <a href="mailto:muller@unitime.org">muller@unitime.org</a><br>
012     *          <a href="http://muller.unitime.org">http://muller.unitime.org</a><br>
013     * <br>
014     *          This library is free software; you can redistribute it and/or modify
015     *          it under the terms of the GNU Lesser General Public License as
016     *          published by the Free Software Foundation; either version 3 of the
017     *          License, or (at your option) any later version. <br>
018     * <br>
019     *          This library is distributed in the hope that it will be useful, but
020     *          WITHOUT ANY WARRANTY; without even the implied warranty of
021     *          MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
022     *          Lesser General Public License for more details. <br>
023     * <br>
024     *          You should have received a copy of the GNU Lesser General Public
025     *          License along with this library; if not see
026     *          <a href='http://www.gnu.org/licenses/'>http://www.gnu.org/licenses/</a>.
027     */
028    
029    public class ReverseStudentFilter implements StudentFilter {
030        private StudentFilter iFilter = null;
031    
032        /**
033         * Constructor
034         * 
035         * @param filter
036         *            student filter that is to be reversed
037         */
038        public ReverseStudentFilter(StudentFilter filter) {
039            iFilter = filter;
040        }
041    
042        /**
043         * Accept student. Student is accepted if the provided student filter
044         * refuses him/her.
045         **/
046        @Override
047        public boolean accept(Student student) {
048            return (iFilter == null ? false : !iFilter.accept(student));
049        }
050    
051    }