001 /*
002 @license.text@
003 */
004 package com.hammurapi.eventbus.tests.familyties.model;
005
006
007 public class Person implements Comparable<Person> {
008
009 private String name;
010
011 private boolean isMale;
012
013 private int age;
014
015 public Person(String name, int age, boolean isMale) {
016 super();
017 this.name = name;
018 this.age = age;
019 this.isMale = isMale;
020 }
021
022 public String toString() {
023 return name + " ["+(isMale ? "male " : "female ")+age+" "+identity()+"]";
024 }
025
026 private String identity() {
027 return ""; //Integer.toString(System.identityHashCode(this), Character.MAX_RADIX);
028 }
029
030 @Override
031 public int hashCode() {
032 final int prime = 31;
033 int result = 1;
034 result = prime * result + age;
035 result = prime * result + (isMale ? 1231 : 1237);
036 result = prime * result + ((name == null) ? 0 : name.hashCode());
037 return result;
038 }
039
040 @Override
041 public boolean equals(Object obj) {
042 if (this == obj) {
043 return true;
044 }
045 if (obj == null) {
046 return false;
047 }
048 if (getClass() != obj.getClass()) {
049 return false;
050 }
051 Person other = (Person) obj;
052 if (age != other.age) {
053 return false;
054 }
055 if (isMale != other.isMale) {
056 return false;
057 }
058 if (name == null) {
059 if (other.name != null) {
060 return false;
061 }
062 } else if (!name.equals(other.name)) {
063 return false;
064 }
065 return true;
066 }
067
068 public boolean isMale() {
069 return isMale;
070 }
071
072 public int getAge() {
073 return age;
074 }
075
076 public String getName() {
077 return name;
078 }
079
080 @Override
081 public int compareTo(Person o) {
082 if (this==o || this.equals(o)) {
083 return 0;
084 }
085
086 int nameCompare = getName().compareTo(o.getName());
087 if (nameCompare!=0) {
088 return nameCompare;
089 }
090
091 int ageCompare = getAge() - o.getAge();
092
093 if (ageCompare!=0) {
094 return ageCompare;
095 }
096
097 if (isMale()) {
098 if (!o.isMale()) {
099 return -1;
100 }
101 } else {
102 if (o.isMale()) {
103 return 1;
104 }
105 }
106 return hashCode()- o.hashCode();
107 }
108
109
110 }