package com.projity.timescale; import java.text.DateFormat; import java.text.DateFormatSymbols; import java.text.FieldPosition; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import com.projity.strings.Messages; public class ExtendedDateFormat extends SimpleDateFormat { protected boolean quarter,half,normal; protected String text; public ExtendedDateFormat() { super(); } public ExtendedDateFormat(String pattern, DateFormatSymbols formatSymbols) { super(pattern, formatSymbols); } public ExtendedDateFormat(String pattern, Locale locale) { super(pattern, locale); } public ExtendedDateFormat(String pattern) { super(pattern); } @Override public void applyPattern(String pattern) { quarter=false; half=false; normal=false; if (pattern.startsWith("Q")){ int l=pattern.startsWith("QQ")?2:1; text=Messages.getString("Date.Quarter"+l); if (l==2) text+=" "; pattern=pattern.substring(l); quarter=true; }else if (pattern.startsWith("L")){ int l=pattern.startsWith("LL")?2:1; text=Messages.getString("Date.Half"+l); if (l==2) text+=" "; pattern=pattern.substring(l); half=true; } if (pattern.length()>0){ super.applyPattern(pattern); normal=true; } } @Override public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos) { if (quarter||half){ calendar.setTime(date); int month=calendar.get(Calendar.MONTH); toAppendTo.append(text).append(month/(quarter?3:6)+1); } if (normal) super.format(date, toAppendTo, pos); return toAppendTo; } }