package com.kritsit.casetracker.shared.domain.model; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.IntegerProperty; import javafx.beans.property.StringProperty; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Objects; public class Person implements Externalizable { private static final long serialVersionUID = 10L; private IntegerProperty indexIdProperty; private StringProperty idProperty; private StringProperty firstNameProperty; private StringProperty lastNameProperty; private StringProperty addressProperty; private StringProperty telephoneNumberProperty; private StringProperty emailAddressProperty; public Person() { indexIdProperty = new SimpleIntegerProperty(); idProperty = new SimpleStringProperty(); firstNameProperty = new SimpleStringProperty(); lastNameProperty = new SimpleStringProperty(); addressProperty = new SimpleStringProperty(); telephoneNumberProperty = new SimpleStringProperty(); emailAddressProperty = new SimpleStringProperty(); } public Person(int indexId, String id, String firstName, String lastName, String address, String telephoneNumber, String emailAddress) { indexIdProperty = new SimpleIntegerProperty(indexId); idProperty = new SimpleStringProperty(id); firstNameProperty = new SimpleStringProperty(firstName); lastNameProperty = new SimpleStringProperty(lastName); addressProperty = new SimpleStringProperty(address); telephoneNumberProperty = new SimpleStringProperty(telephoneNumber); emailAddressProperty = new SimpleStringProperty(emailAddress); } // Accessor methods: public int getIndexId() { return indexIdProperty.get(); } public String getId() { return idProperty.get(); } public String getName() { return getFirstName() + " " + getLastName(); } public String getFirstName() { return firstNameProperty.get(); } public String getLastName() { return lastNameProperty.get(); } public String getAddress() { return addressProperty.get(); } public String getTelephoneNumber() { return telephoneNumberProperty.get(); } public String getEmailAddress() { return emailAddressProperty.get(); } // Mutator methods: public void setIndexId(int indexId) { indexIdProperty.set(indexId); } public void setId(String id) { idProperty.set(id); } public void setFirstName(String firstName) { firstNameProperty.set(firstName); } public void setLastName(String lastName) { lastNameProperty.set(lastName); } public void setAddress(String address) { addressProperty.set(address); } public void setTelephoneNumber(String telephoneNumber) { telephoneNumberProperty.set(telephoneNumber); } public void setEmailAddress(String emailAddress) { emailAddressProperty.set(emailAddress); } @Override public int hashCode() { return ((getId() + getFirstName() + getLastName() + getAddress() + getTelephoneNumber() + getEmailAddress()).hashCode() + getIndexId()) / 3; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } return obj.hashCode() == hashCode(); } @Override public String toString() { String result = getName(); return result; } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(getIndexId()); out.writeObject(getId()); out.writeObject(getFirstName()); out.writeObject(getLastName()); out.writeObject(getAddress()); out.writeObject(getTelephoneNumber()); out.writeObject(getEmailAddress()); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { setIndexId((int) in.readObject()); setId((String) in.readObject()); setFirstName((String) in.readObject()); setLastName((String) in.readObject()); setAddress((String) in.readObject()); setTelephoneNumber((String) in.readObject()); setEmailAddress((String) in.readObject()); } }