001    package railo.runtime.format;
002    
003    import java.text.DateFormatSymbols;
004    import java.util.Locale;
005    
006    public abstract class BaseFormat implements Format {
007    
008            private Locale locale;
009    
010            public BaseFormat(Locale locale) {
011                    this.locale=locale;
012            }
013            
014            protected final String getMonthAsString(int month) {
015                    if(getLocale().equals(Locale.US)) {
016                            switch(month) {
017                                    case 1: return "January";
018                                    case 2: return "February";
019                                    case 3: return "March";
020                                    case 4: return "April";
021                                    case 5: return "May";
022                                    case 6: return "June";
023                                    case 7: return "July";
024                                    case 8: return "August";
025                                    case 9: return "September";
026                                    case 10: return "October";
027                                    case 11: return "November";
028                                    case 12: return "December";
029                                    default: return null;
030                            }
031                    }
032                    return new DateFormatSymbols(locale).getMonths()[month-1];
033                    
034            }
035            
036            protected final String getMonthShortAsString(int month) {
037                    if(getLocale().equals(Locale.US)) {
038                            switch(month) {
039                                    case 1: return "Jan";
040                                    case 2: return "Feb";
041                                    case 3: return "Mar";
042                                    case 4: return "Apr";
043                                    case 5: return "May";
044                                    case 6: return "Jun";
045                                    case 7: return "Jul";
046                                    case 8: return "Aug";
047                                    case 9: return "Sep";
048                                    case 10: return "Oct";
049                                    case 11: return "Nov";
050                                    case 12: return "Dec";
051                                    default: return null;
052                            }
053                    }
054                    return new DateFormatSymbols(locale).getShortMonths()[month-1];
055                    
056            }
057            
058            protected final String getDayOfWeekAsString(int dayOfWeek) {
059                    if(getLocale().equals(Locale.US)) {
060                            switch(dayOfWeek) {
061                                    case 1: return "Sunday";
062                                    case 2: return "Monday";
063                                    case 3: return "Tuesday";
064                                    case 4: return "Wednesday";
065                                    case 5: return "Thursday";
066                                    case 6: return "Friday";
067                                    case 7: return "Saturday";
068                                    default:  return null;
069                            }
070                    }
071                    return new DateFormatSymbols(locale).getWeekdays()[dayOfWeek];
072                    
073            }
074            
075            protected final String getDayOfWeekShortAsString(int dayOfWeek) {
076                    if(getLocale().equals(Locale.US)) {
077                            switch(dayOfWeek) {
078                                    case 1: return "Sun";
079                                    case 2: return "Mon";
080                                    case 3: return "Tue";
081                                    case 4: return "Wed";
082                                    case 5: return "Thu";
083                                    case 6: return "Fri";
084                                    case 7: return "Sat";
085                                    default:  return null;
086                            }
087                    }
088                    return new DateFormatSymbols(locale).getShortWeekdays()[dayOfWeek];
089            }
090            
091            protected final Locale getLocale() {
092                    return locale==null?Locale.US:locale;   
093            }
094    }