Author: jleroux
Date: Mon Nov 12 03:50:09 2007 New Revision: 594088 URL: http://svn.apache.org/viewvc?rev=594088&view=rev Log: A patch from Adrian Crum "Improved UtilDateTime.java, Framework Default TimeZone Suppor, with getMonthNames also" (https://issues.apache.org/jira/browse/OFBIZ-1377) - OFBIZ-1377 Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/ObjectType.java ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilDateTime.java ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java ofbiz/trunk/framework/common/config/general.properties ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/ObjectType.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/ObjectType.java?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/ObjectType.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/ObjectType.java Mon Nov 12 03:50:09 2007 @@ -426,7 +426,7 @@ } public static Object simpleTypeConvert(Object obj, String type, String format, Locale locale, boolean noTypeFail) throws GeneralException { - return simpleTypeConvert(obj, type, format, TimeZone.getDefault(), locale, noTypeFail); + return simpleTypeConvert(obj, type, format, UtilDateTime.getDefaultTimeZone(), locale, noTypeFail); } /** Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilDateTime.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilDateTime.java?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilDateTime.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilDateTime.java Mon Nov 12 03:50:09 2007 @@ -207,7 +207,7 @@ } public static java.sql.Timestamp getDayStart(java.sql.Timestamp stamp, int daysLater) { - return getDayStart(stamp, daysLater, TimeZone.getDefault(), Locale.getDefault()); + return getDayStart(stamp, daysLater, getDefaultTimeZone(), Locale.getDefault()); } public static java.sql.Timestamp getNextDayStart(java.sql.Timestamp stamp) { @@ -219,7 +219,7 @@ } public static java.sql.Timestamp getDayEnd(java.sql.Timestamp stamp, int daysLater) { - return getDayEnd(stamp, daysLater, TimeZone.getDefault(), Locale.getDefault()); + return getDayEnd(stamp, daysLater, getDefaultTimeZone(), Locale.getDefault()); } /** @@ -240,7 +240,7 @@ return getYearStart(stamp, daysLater, 0, yearsLater); } public static java.sql.Timestamp getYearStart(java.sql.Timestamp stamp, int daysLater, int monthsLater, int yearsLater) { - return getYearStart(stamp, daysLater, monthsLater, yearsLater, TimeZone.getDefault(), Locale.getDefault()); + return getYearStart(stamp, daysLater, monthsLater, yearsLater, getDefaultTimeZone(), Locale.getDefault()); } public static java.sql.Timestamp getYearStart(java.sql.Timestamp stamp, Number daysLater, Number monthsLater, Number yearsLater) { return getYearStart(stamp, (daysLater == null ? 0 : daysLater.intValue()), @@ -262,7 +262,7 @@ } public static java.sql.Timestamp getMonthStart(java.sql.Timestamp stamp, int daysLater, int monthsLater) { - return getMonthStart(stamp, daysLater, monthsLater, TimeZone.getDefault(), Locale.getDefault()); + return getMonthStart(stamp, daysLater, monthsLater, getDefaultTimeZone(), Locale.getDefault()); } /** @@ -280,11 +280,11 @@ } public static java.sql.Timestamp getWeekStart(java.sql.Timestamp stamp, int daysLater, int weeksLater) { - return getWeekStart(stamp, daysLater, weeksLater, TimeZone.getDefault(), Locale.getDefault()); + return getWeekStart(stamp, daysLater, weeksLater, getDefaultTimeZone(), Locale.getDefault()); } public static java.sql.Timestamp getWeekEnd(java.sql.Timestamp stamp) { - return getWeekEnd(stamp, TimeZone.getDefault(), Locale.getDefault()); + return getWeekEnd(stamp, getDefaultTimeZone(), Locale.getDefault()); } public static java.util.Calendar toCalendar(java.sql.Timestamp stamp) { @@ -717,7 +717,7 @@ * @return A int containing the week number */ public static int weekNumber(Timestamp input) { - return weekNumber(input, TimeZone.getDefault(), Locale.getDefault()); + return weekNumber(input, getDefaultTimeZone(), Locale.getDefault()); } public static int weekNumber(Timestamp input, int startOfWeek) { @@ -903,10 +903,31 @@ } /** + * Returns a List of month name Strings - suitable for calendar headings. + * + * @param locale + * @return List of month name Strings + */ + public static List<String> getMonthNames(Locale locale) { + Calendar tempCal = Calendar.getInstance(locale); + tempCal.set(Calendar.MONTH, Calendar.JANUARY); + SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM", locale); + List<String> resultList = new ArrayList<String>(); + for (int i = Calendar.JANUARY; i <= tempCal.getActualMaximum(Calendar.MONTH); i++) { + resultList.add(dateFormat.format(tempCal.getTime())); + tempCal.roll(Calendar.MONTH, 1); + } + return resultList; + } + + /** * Returns an initialized DateFormat object. - * @param dateFormat optional format string + * + * @param dateFormat + * optional format string * @param tz - * @param locale can be null if dateFormat is not null + * @param locale + * can be null if dateFormat is not null * @return DateFormat object */ public static DateFormat toDateFormat(String dateFormat, TimeZone tz, Locale locale) { @@ -1013,6 +1034,27 @@ } return availableTimeZoneList; } + + protected static TimeZone defaultTimeZone = null; + /** Returns the OFBiz default TimeZone object. The default time zone is configured in + * the <code>general.properties</code> file (<code>timeZone.default</code>). + * @see java.util.TimeZone + */ + public static TimeZone getDefaultTimeZone() { + if (defaultTimeZone == null) { + synchronized(UtilDateTime.class) { + if (defaultTimeZone == null) { + String tzId = UtilProperties.getPropertyValue("general", "timeZone.default"); + if (UtilValidate.isNotEmpty(tzId)) { + defaultTimeZone = TimeZone.getTimeZone(tzId); + } else { + defaultTimeZone = TimeZone.getDefault(); + } + } + } + } + return defaultTimeZone; + } /** Returns a TimeZone object based upon a time zone ID. Method defaults to * server's time zone if tzID is null or empty. @@ -1020,10 +1062,20 @@ */ public static TimeZone toTimeZone(String tzId) { if (UtilValidate.isEmpty(tzId)) { - return TimeZone.getDefault(); + return getDefaultTimeZone(); } else { return TimeZone.getTimeZone(tzId); } } + /** Returns a TimeZone object based upon an hour offset from GMT. + * @see java.util.TimeZone + */ + public static TimeZone toTimeZone(int gmtOffset) { + if (gmtOffset > 12 || gmtOffset < -14) { + throw new IllegalArgumentException("Invalid GMT offset"); + } + String tzId = gmtOffset > 0 ? "Etc/GMT+" : "Etc/GMT"; + return TimeZone.getTimeZone(tzId + gmtOffset); + } } Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java Mon Nov 12 03:50:09 2007 @@ -190,7 +190,7 @@ if (timeZone == null) { timeZone = (TimeZone) context.get("timeZone"); if (timeZone == null) { - timeZone = TimeZone.getDefault(); + timeZone = UtilDateTime.getDefaultTimeZone(); } } Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java (original) +++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/template/FreeMarkerWorker.java Mon Nov 12 03:50:09 2007 @@ -44,6 +44,7 @@ import org.ofbiz.base.location.FlexibleLocation; import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilDateTime; import org.ofbiz.base.util.UtilGenerics; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilProperties; @@ -221,7 +222,7 @@ TimeZone timeZone = (TimeZone) context.get("timeZone"); if (timeZone == null) { - timeZone = TimeZone.getDefault(); + timeZone = UtilDateTime.getDefaultTimeZone(); } env.setTimeZone(timeZone); } Modified: ofbiz/trunk/framework/common/config/general.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/config/general.properties?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/common/config/general.properties (original) +++ ofbiz/trunk/framework/common/config/general.properties Mon Nov 12 03:50:09 2007 @@ -29,6 +29,9 @@ # -- locales made available separated by commas #locales.available=en,fr,nl +# -- default Time Zone +#timeZone.default=GMT + # -- time zone IDs made available separated by commas #timeZones.available=US/Eastern,US/Central,US/Mountain,US/Pacific,US/Alaska,US/Hawaii Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java Mon Nov 12 03:50:09 2007 @@ -42,6 +42,7 @@ import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.GeneralException; import org.ofbiz.base.util.ObjectType; +import org.ofbiz.base.util.UtilDateTime; import org.ofbiz.base.util.UtilProperties; import org.ofbiz.base.util.UtilValidate; import org.ofbiz.base.util.UtilMisc; @@ -740,7 +741,7 @@ timeZone = (TimeZone) source.get("timeZone"); } if (timeZone == null) { - timeZone = TimeZone.getDefault(); + timeZone = UtilDateTime.getDefaultTimeZone(); } } Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=594088&r1=594087&r2=594088&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Mon Nov 12 03:50:09 2007 @@ -618,7 +618,7 @@ Locale locale = (Locale) context.get("locale"); if (locale == null) locale = Locale.getDefault(); TimeZone timeZone = (TimeZone) context.get("timeZone"); - if (timeZone == null) timeZone = TimeZone.getDefault(); + if (timeZone == null) timeZone = UtilDateTime.getDefaultTimeZone(); // if useRequestParameters is TRUE then parameters will always be used, if FALSE then parameters will never be used // if isError is TRUE and useRequestParameters is not FALSE (ie is null or TRUE) then parameters will be used |
Free forum by Nabble | Edit this page |