| 1 | import java.util.Comparator; |
| 2 | |
| 3 | public class Person implements Comparator<Person> { |
| 4 | private Firstname firstname; |
| 5 | private Origin origin; |
| 6 | private Country country; |
| 7 | private Size size; |
| 8 | private Weight weight; |
| 9 | private Eye eye; |
| 10 | private Integer distanceFromReference; |
| 11 | |
| 12 | Person() { |
| 13 | setFirstname(new Firstname()); |
| 14 | setOrigin(new Origin()); |
| 15 | setPersonSize(new Size()); |
| 16 | setWeight(new Weight()); |
| 17 | setEye(new Eye()); |
| 18 | setDistanceFromReference(0); |
| 19 | } |
| 20 | |
| 21 | Person(String firstname, String country, Integer size, Integer weight, String colorEye) { |
| 22 | setFirstname(new Firstname(firstname)); |
| 23 | setOrigin(new Origin(country)); |
| 24 | setPersonSize(new Size(size)); |
| 25 | setWeight(new Weight(weight)); |
| 26 | setEye(new Eye(colorEye)); |
| 27 | setDistanceFromReference(0); |
| 28 | } |
| 29 | |
| 30 | public void setFirstname(Firstname firstname) { |
| 31 | this.firstname = firstname; |
| 32 | } |
| 33 | |
| 34 | public Firstname getFirstname() { |
| 35 | return firstname; |
| 36 | } |
| 37 | |
| 38 | public void setOrigin(Origin origin) { |
| 39 | this.origin = origin; |
| 40 | } |
| 41 | |
| 42 | public Origin getOrigin() { |
| 43 | return origin; |
| 44 | } |
| 45 | |
| 46 | public void setCountry(Country country) { |
| 47 | this.country = country; |
| 48 | } |
| 49 | |
| 50 | public Country getCountry() { |
| 51 | return country; |
| 52 | } |
| 53 | |
| 54 | public void setPersonSize(Size size) { |
| 55 | this.size = size; |
| 56 | } |
| 57 | |
| 58 | public Size getPersonSize() { |
| 59 | return size; |
| 60 | } |
| 61 | |
| 62 | public void setWeight(Weight weight) { |
| 63 | this.weight = weight; |
| 64 | } |
| 65 | |
| 66 | public Weight getWeight() { |
| 67 | return weight; |
| 68 | } |
| 69 | |
| 70 | public void setEye(Eye eye) { |
| 71 | this.eye = eye; |
| 72 | } |
| 73 | |
| 74 | public Eye getEye() { |
| 75 | return eye; |
| 76 | } |
| 77 | |
| 78 | public void setDistanceFromReference(Integer distanceFromReference) { |
| 79 | this.distanceFromReference = distanceFromReference; |
| 80 | } |
| 81 | |
| 82 | public Integer getDistanceFromReference() { |
| 83 | return distanceFromReference; |
| 84 | } |
| 85 | |
| 86 | @Override |
| 87 | public String toString() { |
| 88 | return "Person{" + |
| 89 | "firstname=" + firstname.getFirstname() + |
| 90 | ", origin=" + origin.getCountry() + |
| 91 | ", country=" + country + |
| 92 | ", size=" + size.getSize() + |
| 93 | ", weight=" + weight.getWeight() + |
| 94 | ", eye=" + eye.getStrColor() + "(" + this.getEye().getColor().getRed() + "," + this.getEye().getColor().getGreen() + "," + this.getEye().getColor().getBlue() + ")" + |
| 95 | ", distanceFromReference=" + this.getDistanceFromReference() + |
| 96 | '}'; |
| 97 | } |
| 98 | |
| 99 | public Integer distanceTo(Person person) { |
| 100 | return this.getFirstname().distanceTo(person.getFirstname()) + this.getOrigin().distanceTo(person.getOrigin()) |
| 101 | + this.getCountry().distanceTo(person.getCountry()) + this.getPersonSize().distanceTo(person.getPersonSize()) |
| 102 | + this.getWeight().distanceTo(person.getWeight()) + this.getEye().distanceTo(person.getEye()); |
| 103 | } |
| 104 | |
| 105 | @Override |
| 106 | public int compare(Person p1, Person p2) { |
| 107 | return p1.getDistanceFromReference().compareTo(p2.getDistanceFromReference()); |
| 108 | } |
| 109 | } |