default timezone to fix #107

This commit is contained in:
Enrique Zamudio
2018-04-16 19:50:57 -05:00
parent b92bd46a0e
commit e7306681eb
8 changed files with 24 additions and 1 deletions
@@ -280,6 +280,9 @@ public class MessageFactory<T extends IsoMessage> {
/** Sets the timezone for the specified FieldParseInfo, if it's needed for parsing dates. */
public void setTimezoneForParseGuide(int messageType, int field, TimeZone tz) {
if (field == 0) {
DateTimeParseInfo.setDefaultTimeZone(tz);
}
Map<Integer, FieldParseInfo> guide = parseMap.get(messageType);
if (guide != null) {
FieldParseInfo fpi = guide.get(field);
@@ -69,6 +69,8 @@ public class Date10ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.MILLISECOND,0);
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
adjustWithFutureTolerance(cal);
return new IsoValue<>(type, cal.getTime(), null);
@@ -61,6 +61,8 @@ public class Date12ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.MILLISECOND,0);
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
adjustWithFutureTolerance(cal);
return new IsoValue<>(type, cal.getTime(), null);
@@ -55,6 +55,8 @@ public class Date14ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.MILLISECOND,0);
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
adjustWithFutureTolerance(cal);
return new IsoValue<>(type, cal.getTime(), null);
@@ -64,6 +64,8 @@ public class Date4ParseInfo extends DateTimeParseInfo {
}
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
Date10ParseInfo.adjustWithFutureTolerance(cal);
return new IsoValue<>(type, cal.getTime(), null);
@@ -66,6 +66,8 @@ public class DateExpParseInfo extends DateTimeParseInfo {
}
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
return new IsoValue<>(type, cal.getTime(), null);
}
@@ -15,11 +15,19 @@ public abstract class DateTimeParseInfo extends FieldParseInfo {
protected static final long FUTURE_TOLERANCE;
protected TimeZone tz;
private static TimeZone defaultTimezone;
static {
FUTURE_TOLERANCE = Long.parseLong(System.getProperty("j8583.future.tolerance", "900000"));
}
public static void setDefaultTimeZone(TimeZone tz) {
defaultTimezone = tz;
}
public static TimeZone getDefaultTimeZone() {
return defaultTimezone;
}
protected DateTimeParseInfo(IsoType type, int length) {
super(type, length);
}
@@ -61,8 +61,10 @@ public class TimeParseInfo extends DateTimeParseInfo {
}
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
return new IsoValue<Date>(type, cal.getTime(), null);
return new IsoValue<>(type, cal.getTime(), null);
}
@Override