    001package org.cpsolver.studentsct.model;
    002
    003import java.util.ArrayList;
    004import java.util.List;
    005
    006/**
    007 * Representation of an instructor. Each instructor contains id, and a name. <br>
    008 * <br>
    009 *
    010 * @author  Tomáš Müller
    011 * @version StudentSct 1.3 (Student Sectioning)<br>
    012 *          Copyright (C) 2007 - 2016 Tomáš Müller<br>
    013 *          <a href="mailto:muller@unitime.org">muller@unitime.org</a><br>
    014 *          <a href="http://muller.unitime.org">http://muller.unitime.org</a><br>
    015 * <br>
    016 *          This library is free software; you can redistribute it and/or modify
    017 *          it under the terms of the GNU Lesser General Public License as
    018 *          published by the Free Software Foundation; either version 3 of the
    019 *          License, or (at your option) any later version. <br>
    020 * <br>
    021 *          This library is distributed in the hope that it will be useful, but
    022 *          WITHOUT ANY WARRANTY; without even the implied warranty of
    023 *          MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    024 *          Lesser General Public License for more details. <br>
    025 * <br>
    026 *          You should have received a copy of the GNU Lesser General Public
    027 *          License along with this library; if not see
    028 *          <a href='http://www.gnu.org/licenses/'>http://www.gnu.org/licenses/</a>.
    029 */
    030public class Instructor {
    031    private long iId;
    032    private String iExternalId = null, iName = null;
    033    private String iEmail;
    034
    035    /**
    036     * Constructor
    037     * @param id instructor unique id
    038     */
    039    public Instructor(long id) {
    040        this(id, null, null, null);
    041    }
    042
    043    /**
    044     * Constructor
    045     * @param id instructor unique id
    046     * @param externalId instructor external id
    047     * @param name instructor name
    048     * @param email instructor email
    049     */
    050    public Instructor(long id, String externalId, String name, String email) {
    051        iId = id; iName = name; iExternalId = externalId; iEmail = email;
    052    }
    053
    054    /** Instructor unique id
    055     * @return instructor unique id
    056     **/
    057    public long getId() {
    058        return iId;
    059    }
    060
    061    /** Set instructor unique id
    062     * @param id instructor unique id
    063     **/
    064    public void setId(long id) {
    065        iId = id;
    066    }
    067
    068    @Override
    069    public String toString() {
    070        return getName() == null ? "I" + getId() : getName();
    071    }
    072
    073    /**
    074     * Compare two instructors for equality. Two instructors are considered equal if
    075     * they have the same id.
    076     */
    077    @Override
    078    public boolean equals(Object object) {
    079        if (object == null || !(object instanceof Instructor))
    080            return false;
    081        return getId() == ((Instructor) object).getId();
    082    }
    083
    084    /**
    085     * Hash code (based only on instructor id)
    086     */
    087    @Override
    088    public int hashCode() {
    089        return (int) (iId ^ (iId >>> 32));
    090    }
    091
    092    /**
    093     * Get instructor external id
    094     * @return instructor external unique id
    095     */
    096    public String getExternalId() { return iExternalId; }
    097
    098    /**
    099     * Set instructor external id
    100     * @param externalId instructor external id
    101     */
    102    public void setExternalId(String externalId) { iExternalId = externalId; }
    103
    104    /**
    105     * Get instructor name
    106     * @return instructor name
    107     */
    108    public String getName() { return iName; }
    109
    110    /**
    111     * Set instructor name
    112     * @param name instructor name
    113     */
    114    public void setName(String name) { iName = name; }
    115
    116    /**
    117     * Get instructor email
    118     * @return instructor email
    119     */
    120    public String getEmail() { return iEmail; }
    121
    122    /**
    123     * Set instructor email
    124     * @param email instructor email
    125     */
    126    public void setEmail(String email) { iEmail = email; }
    127
    128    @Deprecated
    129    public static List<Instructor> toInstructors(String instructorIds, String instructorNames) {
    130        if (instructorIds == null || instructorIds.isEmpty()) return null;
    131        String[] names = (instructorNames == null ? new String[] {}: instructorNames.split(":"));
    132        List<Instructor> instructors = new ArrayList<Instructor>();
    133        for (String id: instructorIds.split(":")) {
    134            Instructor instructor = new Instructor(Long.parseLong(id));
    135            if (instructors.size() < names.length) {
    136                String name = names[instructors.size()];
    137                if (name.indexOf('|') >= 0) {
    138                    instructor.setName(name.substring(0, name.indexOf('|')));
    139                    instructor.setEmail(name.substring(name.indexOf('|') + 1));
    140                } else {
    141                    instructor.setName(name);
    142                }
    143            }
    144            instructors.add(instructor);
    145        }
    146        return instructors;
    147    }
    148}