Rearrange code.
[Persons_Comparator.git] / src / Person.java
index d1ceb350724cbae919c3642f77b51fa8548278f2..6e5ff4012e13f44e14f3df3e023a51f58bca8f00 100644 (file)
 import java.util.Comparator;
 
-public class Person implements Comparable<Person>, Comparator<Person> {
+public class Person implements Comparator<Person> {
     private Firstname firstname;
     private Origin origin;
+    private Country country;
     private Size size;
     private Weight weight;
     private Eye eye;
+    private Integer distanceFromReference;
 
-    Person(Firstname firstname, Origin origin, Size size, Weight weight, Eye eye) {
-        setFirstname(firstname);
-        setOrigin(origin);
-        setPersonSize(size);
-        setWeight(weight);
-        setEye(eye);
+    Person() {
+        setFirstname(new Firstname());
+        setOrigin(new Origin());
+        setCountry(new Country());
+        setPersonSize(new Size());
+        setWeight(new Weight());
+        setEye(new Eye());
+        setDistanceFromReference(0);
     }
 
-    public void setFirstname(Firstname firstname) {
-        this.firstname = firstname;
+    Person(String firstname, String countryName, Integer size, Integer weight, String colorEye) {
+        setFirstname(new Firstname(firstname));
+        setOrigin(new Origin(countryName));
+        setCountry(new Country(countryName));
+        setPersonSize(new Size(size));
+        setWeight(new Weight(weight));
+        setEye(new Eye(colorEye));
+        setDistanceFromReference(0);
     }
 
     public Firstname getFirstname() {
         return firstname;
     }
 
-    public void setOrigin(Origin origin) {
-        this.origin = origin;
+    public void setFirstname(Firstname firstname) {
+        this.firstname = firstname;
     }
 
     public Origin getOrigin() {
         return origin;
     }
 
-    public void setPersonSize(Size size) {
-        this.size = size;
+    public void setOrigin(Origin origin) {
+        this.origin = origin;
+    }
+
+    public Country getCountry() {
+        return country;
+    }
+
+    public void setCountry(Country country) {
+        this.country = country;
     }
 
     public Size getPersonSize() {
         return size;
     }
 
-    public void setWeight(Weight weight) {
-        this.weight = weight;
+    public void setPersonSize(Size size) {
+        this.size = size;
     }
 
     public Weight getWeight() {
         return weight;
     }
 
-    public void setEye(Eye eye) {
-        this.eye = eye;
+    public void setWeight(Weight weight) {
+        this.weight = weight;
     }
 
     public Eye getEye() {
         return eye;
     }
 
+    public void setEye(Eye eye) {
+        this.eye = eye;
+    }
+
+    public Integer getDistanceFromReference() {
+        return distanceFromReference;
+    }
+
+    public void setDistanceFromReference(Integer distanceFromReference) {
+        this.distanceFromReference = distanceFromReference;
+    }
+
     @Override
-    public int compareTo(Person person) {
-        return this.firstname.compareTo(person.getFirstname()) + this.origin.compareTo(person.getOrigin())
-                + this.size.compareTo(person.getPersonSize()) + this.weight.compareTo(person.getWeight())
-                + this.eye.compareTo(person.getEye());
+    public String toString() {
+        return "Person{" +
+                "firstname=" + firstname.getFirstname() +
+                ", origin=" + origin.getCountry() +
+                ", country=" + country.getName() +
+                ", size=" + size.getSize() +
+                ", weight=" + weight.getWeight() +
+                ", eye=" + eye.getStrColor() + "(" + this.getEye().getColor().getRed() + "," + this.getEye().getColor().getGreen() + "," + this.getEye().getColor().getBlue() + ")" +
+                ", distanceFromReference=" + this.getDistanceFromReference() +
+                '}';
+    }
+
+    public Integer distanceTo(Person person) {
+        return this.getFirstname().distanceTo(person.getFirstname()) + this.getOrigin().distanceTo(person.getOrigin())
+                + this.getCountry().distanceTo(person.getCountry()) + this.getPersonSize().distanceTo(person.getPersonSize())
+                + this.getWeight().distanceTo(person.getWeight()) + this.getEye().distanceTo(person.getEye());
     }
 
     @Override
     public int compare(Person p1, Person p2) {
-        return p1.compareTo(p2);
+        return p1.getDistanceFromReference().compareTo(p2.getDistanceFromReference());
     }
 }