Implement the person comparator :
[Persons_Comparator.git] / src / Eye.java
index ed2231b7aaa81da839726fea50b760f917f178f3..822e6f83dd3fc7aabc5bcf5d864671c828c6f999 100644 (file)
@@ -1,17 +1,34 @@
 import java.awt.Color;
+import java.util.Arrays;
 
-public class Eye implements Comparable<Eye> {
+public class Eye {
+    private String strColor;
     private Color color;
-    private String[] colorsList = {"black", "green", "blue", "brown"};
+    private String[] colorsList = {"black", "blue", "brown", "green"};
 
     Eye() {
+        sortColorList();
     }
 
     /**
      * @param color
      */
     Eye(String color) {
+        setStrColor(color);
         setColor(color);
+        sortColorList();
+    }
+
+    public String getStrColor() {
+        return strColor;
+    }
+
+    public void setStrColor(String strColor) {
+        if (validateColor(strColor)) {
+            this.strColor = strColor;
+        } else {
+            throw new IllegalArgumentException("Color must be" + this.colorListToString());
+        }
     }
 
     public String[] getColorsList() {
@@ -30,13 +47,16 @@ public class Eye implements Comparable<Eye> {
      */
     public void setColor(String color) {
         if (validateColor(color)) {
-            if (color.equals("brown"))
+            if (color.equals("black"))
+                this.color = Color.black;
+            else if (color.equals("blue"))
+                this.color = Color.blue;
+            else if (color.equals("brown"))
                 this.color = new Color(88, 41, 0);
-            else
-                this.color = Color.getColor(color);
-
+            else if (color.equals("green"))
+                this.color = Color.green;
         } else {
-            throw new IllegalArgumentException("Color must be " + colorsList);
+            throw new IllegalArgumentException("Color must be" + this.colorListToString());
         }
     }
 
@@ -53,12 +73,15 @@ public class Eye implements Comparable<Eye> {
         return false;
     }
 
+    private void sortColorList() {
+        Arrays.sort(this.colorsList);
+    }
+
     /**
      * @param eye
      * @return
      */
-    @Override
-    public int compareTo(Eye eye) {
+    public int distanceTo(Eye eye) {
         double r_diff = this.getColor().getRed() - eye.getColor().getRed();
         double g_diff = this.getColor().getGreen() - eye.getColor().getGreen();
         double b_diff = this.getColor().getBlue() - eye.getColor().getBlue();
@@ -66,4 +89,13 @@ public class Eye implements Comparable<Eye> {
         Double distance = Math.sqrt(2 * Math.pow(r_diff, 2) + 4 * Math.pow(g_diff, 2) + 3 * Math.pow(b_diff, 2));
         return distance.intValue();
     }
+
+    private String colorListToString() {
+        StringBuilder stringBuilder = new StringBuilder();
+        for (String c : colorsList) {
+            stringBuilder.append(" ");
+            stringBuilder.append(c);
+        }
+        return stringBuilder.toString();
+    }
 }