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