package org.sculptor.examples.library.person.domain;
import java.util.Calendar;
/**
* Entity representing Person. This class is responsible for the domain object
* related business logic for Person. Properties and associations are
* implemented in the generated base class {@link PersonBase}.
*/
public class Person extends PersonBase {
private static final long serialVersionUID = 1L;
protected Person() {
}
public Person(Gender sex, Ssn ssn) {
super(sex, ssn);
}
public Integer getAge() {
if (getBirthDate() == null) {
return null;
}
Calendar birth = Calendar.getInstance();
birth.setTime(getBirthDate());
Calendar today = Calendar.getInstance();
// I wish we could use joda instead of this ugly
int age = today.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
Calendar birthDay = Calendar.getInstance();
birthDay.set(Calendar.YEAR, today.get(Calendar.YEAR));
birthDay.set(Calendar.MONTH, birth.get(Calendar.MONTH));
birthDay.set(Calendar.DAY_OF_MONTH, birth.get(Calendar.DAY_OF_MONTH));
birthDay.set(Calendar.HOUR_OF_DAY, 0);
birthDay.set(Calendar.MINUTE, 0);
birthDay.set(Calendar.SECOND, 0);
birthDay.set(Calendar.MILLISECOND, 0);
boolean birthDayIsAfter = birthDay.compareTo(today) > 0;
if (birthDayIsAfter) {
age -= 1;
}
return age;
}
}