001    package ttsolver.model;
002    
003    import ifs.util.FastVector;
004    
005    import java.util.Vector;
006    
007    /**
008     * Cross-listed lectures of a lecture.
009     * <br><br>
010     * This is used only when the model is loaded directly from the database. One class can have several 
011     * identifications there.
012     *
013     * @author <a href="mailto:muller@ktiml.mff.cuni.cz">Tomáš Müller</a>
014     * @version 1.0
015     */
016    
017    public class CrossListedLecture {
018        private String iSubject;
019        private String iCourseNbr;
020        private String iIType;
021        private int iSection;
022        private String iName;
023        
024        private Lecture iLecture = null;;
025        private Vector iStudents = new FastVector(1);
026    
027        /** Constructor
028         * @param subject subject
029         * @param courseNbr course number
030         * @param iType instructional type
031         * @param section section
032         */
033        public CrossListedLecture(String subject, String courseNbr, String iType, int section) {
034            this(subject,courseNbr,iType,section,subject+" "+courseNbr+" "+iType+" "+section);
035        }
036        
037        /** Constructor
038         * @param subject subject
039         * @param courseNbr course number
040         * @param iType instructional type
041         * @param section section
042         * @param name (string representation of this class)
043         */
044        public CrossListedLecture(String subject, String courseNbr, String iType, int section, String name) {
045            iSubject = subject;
046            iCourseNbr = courseNbr;
047            iIType = iType;
048            iSection = section;
049            iName = name;
050        }
051        
052        /** Subject */
053        public String getSubject() { return iSubject; }
054        /** Course number */
055        public String getCourseNbr() { return iCourseNbr; }
056        /** Instructional type */
057        public String getIType() { return iIType; }
058        /** Section */
059        public int getSection() { return iSection; }
060        /** Name */
061        public String getName() { return iName; }
062        
063        /** Parent lecture */
064        public Lecture getLecture() { return iLecture; }
065        /** Parent lecture */
066        public void setLecture(Lecture lecture) { iLecture = lecture; }
067        
068        /** List of enrolled students */
069        public Vector students() { return iStudents; }
070        /** Add student enrollment */
071        public void addStudent(String student) {
072            iStudents.addElement(student);
073            iLecture.addSameLectureStudent(student);
074        }
075        /** Has given student enrollment */
076        public boolean hasStudent(String student) { return iStudents.contains(student);}
077    
078        public boolean equals(Object o) {
079            if (o==null || !(o instanceof CrossListedLecture)) return false;
080            CrossListedLecture sl = (CrossListedLecture)o;
081            return (getSubject().equals(sl.getSubject()) &&
082                    getCourseNbr().equals(sl.getCourseNbr()) &&
083                    getIType().equals(sl.getIType()) &&
084                    getSection() == sl.getSection());
085        }
086    }