* Add Levenshtein distance to Firstname class Comparable.
[Persons_Comparator.git] / src / Eye.java
CommitLineData
97491195 1import java.awt.Color;
1c118933 2import java.util.List;
6b48f570 3import java.util.Arrays;
97491195 4
1c118933 5public class Eye implements Comparable<Eye> {
97491195 6 private Color color;
6b48f570 7 private List<String> colorList = Arrays.asList("black", "green", "blue", "brown");
97491195 8
ac6c3ea2
JB
9 /**
10 *
11 * @param color
12 */
1c118933 13 Eye(String color) {
97491195
JB
14 setColor(color);
15 }
16
ac6c3ea2
JB
17 /**
18 *
19 * @return
20 */
97491195
JB
21 public Color getColor() {
22 return color;
23 }
24
ac6c3ea2
JB
25 /**
26 *
27 * @param color
28 */
1c118933 29 public void setColor(String color) {
6b48f570 30 if (validateColor(color)) {
6977e614 31 if (color.equals("brown"))
6b48f570 32 this.color = new Color(88, 41, 0);
6977e614
JB
33 else
34 this.color = Color.getColor(color);
35
6b48f570
JB
36 } else {
37 throw new IllegalArgumentException("Color must be " + colorList.toString());
38 }
39 }
40
ac6c3ea2
JB
41 /**
42 *
43 * @param color
44 * @return
45 */
6b48f570
JB
46 private boolean validateColor(String color) {
47 return colorList.contains(color);
1c118933
JB
48 }
49
ac6c3ea2
JB
50 /**
51 *
52 * @param eye
53 * @return
54 */
1c118933
JB
55 @Override
56 public int compareTo(Eye eye) {
6b48f570
JB
57 double r_diff = this.getColor().getRed() - eye.getColor().getRed();
58 double g_diff = this.getColor().getGreen() - eye.getColor().getGreen();
59 double b_diff = this.getColor().getBlue() - eye.getColor().getBlue();
60 // See https://en.wikipedia.org/wiki/Color_difference
61 Double distance = Math.sqrt(2 * Math.pow(r_diff, 2) + 4 * Math.pow(g_diff, 2) + 3 * Math.pow(b_diff, 2));
62 return distance.intValue();
97491195
JB
63 }
64}