Implement the person comparator :
[Persons_Comparator.git] / src / Person.java
index 4eabb1b9b651a662d6994799bbab666b78cae90f..5d9d812924ec1daf2c66351c4f90272a397e7bce 100644 (file)
@@ -1,15 +1,12 @@
-import java.util.ArrayList;
 import java.util.Comparator;
-import java.util.ListIterator;
 
-public class Person implements Comparable<Person>, Comparator<Person> {
+public class Person implements Comparator<Person> {
     private Firstname firstname;
     private Origin origin;
     private Size size;
     private Weight weight;
     private Eye eye;
-    //List of persons in the database to compare to.
-    private ArrayList<Person> personArrayList;
+    private Integer distanceFromReference;
 
     Person() {
         setFirstname(new Firstname());
@@ -17,7 +14,7 @@ public class Person implements Comparable<Person>, Comparator<Person> {
         setPersonSize(new Size());
         setWeight(new Weight());
         setEye(new Eye());
-        setPersonArrayList(new ArrayList<>());
+        setDistanceFromReference(0);
     }
 
     Person(String firstname, String country, Integer size, Integer weight, String colorEye) {
@@ -26,7 +23,7 @@ public class Person implements Comparable<Person>, Comparator<Person> {
         setPersonSize(new Size(size));
         setWeight(new Weight(weight));
         setEye(new Eye(colorEye));
-        setPersonArrayList(new ArrayList<>());
+        setDistanceFromReference(0);
     }
 
     public void setFirstname(Firstname firstname) {
@@ -69,25 +66,12 @@ public class Person implements Comparable<Person>, Comparator<Person> {
         return eye;
     }
 
-    public void setPersonArrayList(ArrayList<Person> personArrayList) {
-        this.personArrayList = personArrayList;
+    public void setDistanceFromReference(Integer distanceFromReference) {
+        this.distanceFromReference = distanceFromReference;
     }
 
-    public ArrayList<Person> getPersonArrayList() {
-        return personArrayList;
-    }
-
-    public void displayArrayList(ArrayList arrayList) {
-        ListIterator iter = arrayList.listIterator();
-        Integer i = 0;
-        while (iter.hasNext()) {
-            System.out.println(i.toString() + " " + iter.next());
-            i++;
-        }
-    }
-
-    public void displayPersonArrayList() {
-        this.displayArrayList(this.personArrayList);
+    public Integer getDistanceFromReference() {
+        return distanceFromReference;
     }
 
     @Override
@@ -98,18 +82,18 @@ public class Person implements Comparable<Person>, Comparator<Person> {
                 ", size=" + size.getSize() +
                 ", weight=" + weight.getWeight() +
                 ", eye=" + eye.getStrColor() + "(" + this.getEye().getColor().getRed() + "," + this.getEye().getColor().getGreen() + "," + this.getEye().getColor().getBlue() + ")" +
+                ", distanceFromReference=" + this.getDistanceFromReference() +
                 '}';
     }
 
-    @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 Integer distanceTo(Person person) {
+        return this.getFirstname().distanceTo(person.getFirstname()) + this.getOrigin().distanceTo(person.getOrigin())
+                + 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());
     }
 }