1 30 31 34 package com.nightlabs.l10n; 35 36 import java.text.DateFormat ; 37 import java.util.Date ; 38 import java.util.Locale ; 39 40 import com.nightlabs.config.Config; 41 import com.nightlabs.config.ConfigException; 42 43 46 public class DateFormatter 47 { 48 private static DateFormatter _sharedInstance = null; 49 50 57 public static DateFormatter sharedInstance() 58 { 59 if (_sharedInstance == null) 60 _sharedInstance = new DateFormatter(Config.sharedInstance(), Locale.getDefault()); 61 62 return _sharedInstance; 63 } 64 65 protected Config config; 66 protected Locale locale; 67 68 71 public DateFormatter(Config config, Locale locale) 72 { 73 this.config = config; 74 this.locale = locale; 75 try { 76 config.createConfigModule(GlobalL10nSettings.class); 77 } catch (ConfigException e) { 78 throw new RuntimeException (e); 79 } 80 } 81 82 private DateFormatProvider dateFormatProvider = null; 83 84 public DateFormatProvider getDateFormatProvider() 85 { 86 if (dateFormatProvider != null) 87 return dateFormatProvider; 88 89 L10nFormatCfMod l10nFormatCfMod; 90 try { 91 l10nFormatCfMod = (L10nFormatCfMod) ConfigUtil.createConfigModule( 92 config, L10nFormatCfMod.class, locale.getLanguage(), locale.getCountry()); 93 94 String className = l10nFormatCfMod.getDateFormatProvider(); 95 96 Class clazz = Class.forName(className); 97 if (!DateFormatProvider.class.isAssignableFrom(clazz)) 98 throw new ClassCastException ("class \""+className+"\" defined in config module \""+L10nFormatCfMod.class.getName()+"\" does not implement interface \""+DateFormatProvider.class.getName()+"\"!"); 99 100 DateFormatProvider dfp = (DateFormatProvider) clazz.newInstance(); 101 dfp.init(config, locale.getLanguage(), locale.getCountry()); 102 103 this.dateFormatProvider = dfp; 104 return dateFormatProvider; 105 } catch (RuntimeException e) { 106 throw e; 107 } catch (Exception e) { 108 throw new RuntimeException (e); 109 } 110 } 111 112 public static String formatDateShortTimeHM(Date dt, boolean weekDay) 113 { 114 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 115 DateFormatProvider.DATE_SHORT | (weekDay ? DateFormatProvider.DATE_WEEKDAY : 0) 116 | DateFormatProvider.TIME); 117 return dateFormat.format(dt); 118 } 119 120 public static String formatDateLongTimeHM(Date dt, boolean weekDay) 121 { 122 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 123 DateFormatProvider.DATE_LONG | (weekDay ? DateFormatProvider.DATE_WEEKDAY : 0) 124 | DateFormatProvider.TIME); 125 return dateFormat.format(dt); 126 } 127 128 public static String formatDateShortTimeHMS(Date dt, boolean weekDay) 129 { 130 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 131 DateFormatProvider.DATE_SHORT | (weekDay ? DateFormatProvider.DATE_WEEKDAY : 0) 132 | DateFormatProvider.TIME_SEC); 133 return dateFormat.format(dt); 134 } 135 136 public static String formatDateLongTimeHMS(Date dt, boolean weekDay) 137 { 138 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 139 DateFormatProvider.DATE_LONG | (weekDay ? DateFormatProvider.DATE_WEEKDAY : 0) 140 | DateFormatProvider.TIME_SEC); 141 return dateFormat.format(dt); 142 } 143 144 145 149 public static String formatDateShort(Date dt, boolean weekDay) 150 { 151 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 152 DateFormatProvider.DATE_SHORT | (weekDay ? DateFormatProvider.DATE_WEEKDAY : 0)); 153 return dateFormat.format(dt); 154 } 155 156 159 public static String formatDateLong(Date dt, boolean weekDay) 160 { 161 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 162 DateFormatProvider.DATE_LONG | (weekDay ? DateFormatProvider.DATE_WEEKDAY : 0)); 163 return dateFormat.format(dt); 164 } 165 166 169 public static String formatTimeHM(Date dt) 170 { 171 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 172 DateFormatProvider.TIME); 173 return dateFormat.format(dt); 174 } 175 176 179 public static String formatTimeHMS(Date dt) 180 { 181 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 182 DateFormatProvider.TIME_SEC); 183 return dateFormat.format(dt); 184 } 185 186 189 public static String formatTimeHMSmsec(Date dt) 190 { 191 DateFormat dateFormat = sharedInstance().getDateFormatProvider().getDateFormat( 192 DateFormatProvider.TIME_MSEC); 193 return dateFormat.format(dt); 194 } 195 } | Popular Tags |