package cc.fascinated.bat.features.birthday; import cc.fascinated.bat.common.Serializable; import com.google.gson.Gson; import lombok.Getter; import lombok.Setter; import org.bson.Document; import java.util.Calendar; import java.util.Date; /** * @author Fascinated (fascinated7) */ @Getter @Setter public class UserBirthday extends Serializable { /** * The user's birthday */ private Date birthday; /** * If the birthday should be hidden */ private boolean hidden; /** * Calculates the age of the user * * @return the age of the user */ public int calculateAge() { Calendar birthdayCalendar = Calendar.getInstance(); birthdayCalendar.setTime(this.getBirthday()); Calendar today = Calendar.getInstance(); int age = today.get(Calendar.YEAR) - birthdayCalendar.get(Calendar.YEAR); // Check if the birthday hasn't occurred yet this year if (today.get(Calendar.DAY_OF_YEAR) < birthdayCalendar.get(Calendar.DAY_OF_YEAR)) { age--; } return age; } @Override public void load(Document document, Gson gson) { this.birthday = document.getDate("birthday"); this.hidden = document.getBoolean("hidden", false); } @Override public Document serialize(Gson gson) { Document document = new Document(); document.put("birthday", this.birthday); document.put("hidden", this.hidden); return document; } @Override public void reset() { } }