package no.ntnu.fp.model; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class User extends Model implements Serializable, Comparable, PropertyChangeListener { /** * */ private static final long serialVersionUID = 1L; private String username; private String password; private String name; private int age; private int phoneNumber; private String email; private ModelChangeListener modelChangeListener; private Calendar calendar = new Calendar(this); private List<Notification> notifications = new ArrayList<Notification>(); private PropertyChangeSupport pcs = new PropertyChangeSupport(this); public final static String UNAME_PROPERT ="Username"; public final static String PWORD_PROPERT ="Password"; public final static String NAME_PROPERT ="Name"; public final static String AGE_PROPERT ="Age"; public final static String PNUMBER_PROPERT ="Phonenumber"; public final static String EMAIL_PROPERT ="Email"; public final static String CAL_PROPERT ="Calendar"; public User() {} public User(String username) { this.username = username; } public User(String username, String password){ this.username = username; this.password = password; } public User(String username, String name, int age, int phoneNumber, String email) { this.username = username; this.name = name; this.age = age; this.phoneNumber = phoneNumber; this.email = email; } public String getId() { return username; } public void setUsername(String username){ String oldValue = this.username; this.username = username; pcs.firePropertyChange(UNAME_PROPERT, oldValue, username); } public String getUsername(){ return username; } public void setPassword(String password){ String oldValue = this.password; this.password = password; pcs.firePropertyChange(PWORD_PROPERT, oldValue, password); } public String getPassword(){ return password; } public void addNotification(Notification notification){ notifications.add(notification); } public void removeNotification(Notification notification){ notifications.remove(notification); } public List<Notification> getNotifications() { return calendar.getMeetingNotifications(); } public void setCalendar(Calendar calendar){ Calendar oldValue = this.calendar; this.calendar = calendar; pcs.firePropertyChange(CAL_PROPERT, oldValue, calendar); } public Calendar getCalendar(){ return calendar; } public void setName(String name){ String oldValue = this.name; this.name = name; pcs.firePropertyChange(NAME_PROPERT, oldValue, name); } public String getName(){ return name; } public void setAge(String age) { setAge(Integer.parseInt(age)); } public void setAge(int age){ int oldValue = this.age; this.age = age; pcs.firePropertyChange(AGE_PROPERT, oldValue, age); } public int getAge(){ return age; } public void setPhoneNumber(String phoneNumber) { setPhoneNumber(Integer.parseInt(phoneNumber)); } public void setPhoneNumber(int phoneNumber) { int oldValue = this.phoneNumber; this.phoneNumber = phoneNumber; pcs.firePropertyChange(PNUMBER_PROPERT, oldValue, phoneNumber); } public int getPhoneNumber() { return phoneNumber; } public void setEmail(String email) { String oldValue = this.email; this.email = email; pcs.firePropertyChange(EMAIL_PROPERT, oldValue, email); } public String getEmail() { return email; } public String toString() { return "Username: " + username + "\n" + "Name: " + name + "\n" + "Age: " + age + "\n" + "PhoneNumber: " + phoneNumber + "\n" + "Email: " + email; } public static void main(String[] args) { } @Override public boolean equals(Object obj) { if (obj instanceof User) { User user = (User)obj; return username.equals(user.username); } return false; } @Override public int hashCode() { return username.hashCode(); } @Override public int compareTo(Object o) { if (o instanceof User) { username.compareTo(((User)o).username); } return -1; } @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getSource() == calendar) { pcs.firePropertyChange(evt); } } }