001package org.javamoney.moneta.internal.convert;
002
003import java.io.Serializable;
004import java.util.Calendar;
005import java.util.GregorianCalendar;
006
007/**
008 * Class to model a local date without timezone info.
009 * @deprecated Do not use this class in your code, it will be removed/replaced with Java 8 by java.time.
010 */
011@Deprecated
012public final class LocalDate implements Comparable<LocalDate>, Serializable{
013    final int year;
014    final int month;
015    final int dayOfMonth;
016
017    LocalDate(int year, int month, int dayOfMonth){
018    this.year = year;
019        this.month = month;
020        this.dayOfMonth = dayOfMonth;
021    }
022
023    static LocalDate now(){
024        Calendar cal = GregorianCalendar.getInstance();
025        return from(cal);
026    }
027
028    static LocalDate yesterday(){
029        return beforeDays(1);
030    }
031
032    static LocalDate beforeDays(int days){
033        Calendar cal = GregorianCalendar.getInstance();
034        cal.add(Calendar.DAY_OF_YEAR, days*-1);
035        return from(cal);
036    }
037
038    public LocalDate minusDays(int days){
039        Calendar cal = toCalendar();
040        cal.add(Calendar.DAY_OF_YEAR, days*-1);
041        return from(cal);
042    }
043
044    /**
045     * Create a new (local/default Locale based) GregorianCalendar instance.
046     * @return a new (local/default Locale based) GregorianCalendar instance, not null.
047     */
048    public Calendar toCalendar() {
049        return new GregorianCalendar(year, month-1, dayOfMonth);
050    }
051
052    /**
053     * Cerates a new instance from the given Calendar.
054     * @param cal the Calendar, not null.
055     * @return the corresponding LocalDate instance, never null.
056     */
057    public static LocalDate from(Calendar cal) {
058        int year = cal.get(Calendar.YEAR);
059        int month = cal.get(Calendar.MONTH)+1;
060        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
061        return new LocalDate(year, month, dayOfMonth);
062    }
063
064    public int getYear() {
065        return year;
066    }
067
068    public int getMonth() {
069        return month;
070    }
071
072    public int getDayOfMonth() {
073        return dayOfMonth;
074    }
075
076    public boolean before(LocalDate localDate){
077        return compareTo(localDate)<0;
078    }
079
080    public boolean after(LocalDate localDate){
081        return compareTo(localDate)>0;
082    }
083
084    @Override
085    public int compareTo(LocalDate o) {
086        return 0;
087    }
088
089    @Override
090    public boolean equals(Object o) {
091        if (this == o) return true;
092        if (!(o instanceof LocalDate)) return false;
093
094        LocalDate localDate = (LocalDate) o;
095
096        return dayOfMonth == localDate.dayOfMonth && month == localDate.month && year == localDate.year;
097
098    }
099
100    @Override
101    public int hashCode() {
102        int result = year;
103        result = 31 * result + month;
104        result = 31 * result + dayOfMonth;
105        return result;
106    }
107
108    @Override
109    public String toString() {
110        return "LocalDate{" +
111                "year=" + year +
112                ", month=" + month +
113                ", dayOfMonth=" + dayOfMonth +
114                '}';
115    }
116
117
118}