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