=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/AbstractCalendar.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/AbstractCalendar.java 2014-04-27 07:19:41 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/AbstractCalendar.java 2014-04-27 08:47:17 +0000 @@ -30,6 +30,8 @@ import org.joda.time.DateTime; import org.joda.time.chrono.ISOChronology; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; /** * @author Morten Olav Hansen @@ -86,6 +88,33 @@ "weekday.short.sunday" }; + protected static final String DEFAULT_ISO8601_DATE_FORMAT = "yyyy-MM-dd"; + + @Override + public String defaultDateFormat() + { + return DEFAULT_ISO8601_DATE_FORMAT; + } + + @Override + public String formattedDate( DateUnit dateUnit ) + { + DateTime dateTime = dateUnit.toDateTime(); + DateTimeFormatter format = DateTimeFormat.forPattern( defaultDateFormat() ); + + return format.print( dateTime ); + } + + @Override + public String formattedIsoDate( DateUnit dateUnit ) + { + dateUnit = toIso( dateUnit ); + DateTime dateTime = dateUnit.toDateTime(); + DateTimeFormatter format = DateTimeFormat.forPattern( defaultDateFormat() ); + + return format.print( dateTime ); + } + @Override public DateUnit toIso( int year, int month, int day ) { === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/Calendar.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/Calendar.java 2014-04-27 07:19:41 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/Calendar.java 2014-04-27 08:47:17 +0000 @@ -43,6 +43,26 @@ String name(); /** + * Default date format for this calendar + * @return Default date format + */ + String defaultDateFormat(); + + /** + * Formats dateUnit using defaultDateFormat + * @param dateUnit DateUnit representing local year, month, day + * @return Default date format + */ + String formattedDate( DateUnit dateUnit ); + + /** + * Formats dateUnit using defaultDateFormat and ISO 8601 + * @param dateUnit DateUnit representing local year, month, day + * @return Default date format + */ + String formattedIsoDate( DateUnit dateUnit ); + + /** * Convert local calendar to an ISO 8601 DateUnit. * @param year Local year * @param month Local month === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateUnit.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateUnit.java 2014-04-26 06:39:12 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/DateUnit.java 2014-04-27 08:47:17 +0000 @@ -33,6 +33,8 @@ import org.joda.time.chrono.ISOChronology; import javax.validation.constraints.NotNull; +import java.text.SimpleDateFormat; +import java.util.Date; /** * Class representing a specific calendar date. === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/impl/NepaliCalendar.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/impl/NepaliCalendar.java 2014-04-27 07:19:41 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/calendar/impl/NepaliCalendar.java 2014-04-27 08:47:17 +0000 @@ -47,9 +47,11 @@ @Component public class NepaliCalendar extends AbstractCalendar { - private final DateUnit startNepal = new DateUnit( 2000, 1, 1, java.util.Calendar.WEDNESDAY ); - - private final DateUnit startIso = new DateUnit( 1943, 4, 14, java.util.Calendar.WEDNESDAY ); + private static final DateUnit startNepal = new DateUnit( 2000, 1, 1, java.util.Calendar.WEDNESDAY ); + + private static final DateUnit startIso = new DateUnit( 1943, 4, 14, java.util.Calendar.WEDNESDAY ); + + private static final String DEFAULT_NEPALI_DATE_FORMAT = "dd-MM-yyyy"; private static final Calendar self = new NepaliCalendar(); @@ -59,6 +61,25 @@ } @Override + public String name() + { + return "nepali"; + } + + @Override + public String defaultDateFormat() + { + return DEFAULT_NEPALI_DATE_FORMAT; + } + + // TODO Add proper local date format for Nepali, can't use default.. since the month numbers are outside the valid ISO 8601 range + @Override + public String formattedDate( DateUnit dateUnit ) + { + return super.formattedDate( dateUnit ); + } + + @Override public DateUnit toIso( DateUnit dateUnit ) { DateTime dateTime = startIso.toDateTime(); @@ -221,12 +242,6 @@ } @Override - public String name() - { - return "nepali"; - } - - @Override public String nameOfMonth( int month ) { if ( month > DEFAULT_I18N_MONTH_NAMES.length || month <= 0 )