package com.kritsit.casetracker.shared.domain.model;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.ObjectProperty;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.List;
public class Defendant extends Person {
private BooleanProperty secondOffenceProperty;
private ObjectProperty<List<Vehicle>> vehicleProperty;
public Defendant() {
super();
secondOffenceProperty = new SimpleBooleanProperty();
vehicleProperty = new SimpleObjectProperty<List<Vehicle>>(new ArrayList<Vehicle>());
}
public Defendant(int indexId, String id, String firstName, String lastName,
String address, String telephoneNumber, String emailAddress,
boolean secondOffence) {
super(indexId, id, firstName, lastName, address, telephoneNumber, emailAddress);
secondOffenceProperty = new SimpleBooleanProperty(secondOffence);
vehicleProperty = new SimpleObjectProperty<List<Vehicle>>(new ArrayList<Vehicle>());
}
public void addVehicle(Vehicle vehicle) {
getVehicles().add(vehicle);
}
public void addVehicles(Vehicle[] vehicle) {
for (Vehicle v : vehicle) {
addVehicle(v);
}
}
// Accessor methods:
public List<Vehicle> getVehicles() {
return vehicleProperty.get();
}
public boolean isSecondOffence() {
return secondOffenceProperty.get();
}
// Mutator methods:
public void setVehicles(List<Vehicle> vehicles) {
vehicleProperty.set(vehicles);
}
public void setSecondOffence(boolean secondOffence) {
secondOffenceProperty.set(secondOffence);
}
@Override
public int hashCode() {
Boolean so = Boolean.valueOf(isSecondOffence());
return super.hashCode() + (so.hashCode() / 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 {
super.writeExternal(out);
out.writeBoolean(isSecondOffence());
out.writeObject(getVehicles());
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
super.readExternal(in);
setSecondOffence(in.readBoolean());
setVehicles((List<Vehicle>) in.readObject());
}
}