package org.commcare.views.widgets;
import android.content.Context;
import org.javarosa.form.api.FormEntryPrompt;
import org.javarosa.xform.util.CalendarUtils;
import org.javarosa.xform.util.UniversalDate;
import org.joda.time.Chronology;
import org.joda.time.DateTime;
import org.joda.time.chrono.EthiopicChronology;
/**
* Ethiopian Date Widget.
*
* @author Alex Little (alex@alexlittle.net), Richard Lu
*/
public class EthiopianDateWidget extends AbstractUniversalDateWidget {
private static final Chronology CHRON_ETH = EthiopicChronology.getInstance();
public EthiopianDateWidget(Context context, FormEntryPrompt prompt) {
super(context, prompt);
}
private UniversalDate constructUniversalDate(DateTime dt) {
return new UniversalDate(
dt.getYear(),
dt.getMonthOfYear(),
dt.getDayOfMonth(),
dt.getMillis()
);
}
@Override
protected UniversalDate decrementMonth(long millisFromJavaEpoch) {
DateTime dt = new DateTime(millisFromJavaEpoch)
.withChronology(CHRON_ETH)
.minusMonths(1);
return constructUniversalDate(dt);
}
@Override
protected UniversalDate decrementYear(long millisFromJavaEpoch) {
DateTime dt = new DateTime(millisFromJavaEpoch)
.withChronology(CHRON_ETH)
.minusYears(1);
return constructUniversalDate(dt);
}
@Override
protected UniversalDate fromMillis(long millisFromJavaEpoch) {
DateTime dt = new DateTime(millisFromJavaEpoch)
.withChronology(CHRON_ETH);
return constructUniversalDate(dt);
}
@Override
protected String[] getMonthsArray() {
return CalendarUtils.getMonthsArray("ethiopian_months");
}
@Override
protected UniversalDate incrementMonth(long millisFromJavaEpoch) {
DateTime dt = new DateTime(millisFromJavaEpoch)
.withChronology(CHRON_ETH)
.plusMonths(1);
return constructUniversalDate(dt);
}
@Override
protected UniversalDate incrementYear(long millisFromJavaEpoch) {
DateTime dt = new DateTime(millisFromJavaEpoch)
.withChronology(CHRON_ETH)
.plusYears(1);
return constructUniversalDate(dt);
}
@Override
protected long toMillisFromJavaEpoch(int year, int month, int day) {
DateTime dt = new DateTime(CHRON_ETH)
.withYear(year)
.withMonthOfYear(month)
.withDayOfMonth(day);
return dt.getMillis();
}
}