Set timezone in IsoValue itself #106

This commit is contained in:
Enrique Zamudio
2018-04-17 11:25:11 -05:00
parent e7306681eb
commit a84dacb9f3
7 changed files with 25 additions and 40 deletions
@@ -67,13 +67,7 @@ public class Date10ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.SECOND, ((buf[pos + 8] - 48) * 10) + buf[pos + 9] - 48);
}
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);
return createValue(cal, true);
}
@Override
@@ -59,13 +59,7 @@ public class Date12ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.YEAR, 2000+year);
}
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);
return createValue(cal, true);
}
@Override
@@ -53,13 +53,7 @@ public class Date14ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.SECOND, ((buf[pos + 12] - 48) * 10) + buf[pos + 13] - 48);
}
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);
return createValue(cal, true);
}
@Override
@@ -62,13 +62,7 @@ public class Date4ParseInfo extends DateTimeParseInfo {
cal.set(Calendar.MONTH, ((buf[pos] - 48) * 10) + buf[pos + 1] - 49);
cal.set(Calendar.DATE, ((buf[pos + 2] - 48) * 10) + buf[pos + 3] - 48);
}
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
Date10ParseInfo.adjustWithFutureTolerance(cal);
return new IsoValue<>(type, cal.getTime(), null);
return createValue(cal, true);
}
@Override
@@ -64,12 +64,7 @@ public class DateExpParseInfo extends DateTimeParseInfo {
+ ((buf[pos] - 48) * 10) + buf[pos + 1] - 48);
cal.set(Calendar.MONTH, ((buf[pos + 2] - 48) * 10) + buf[pos + 3] - 49);
}
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
return new IsoValue<>(type, cal.getTime(), null);
return createValue(cal, false);
}
@Override
@@ -1,8 +1,10 @@
package com.solab.iso8583.parse;
import com.solab.iso8583.IsoType;
import com.solab.iso8583.IsoValue;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
@@ -48,4 +50,21 @@ public abstract class DateTimeParseInfo extends FieldParseInfo {
}
}
protected IsoValue<Date> createValue(Calendar cal, boolean adjusting) {
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
if (adjusting) {
adjustWithFutureTolerance(cal);
}
IsoValue<Date> v = new IsoValue<>(type, cal.getTime(), null);
if (tz != null) {
v.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
v.setTimeZone(getDefaultTimeZone());
}
return v;
}
}
@@ -59,12 +59,7 @@ public class TimeParseInfo extends DateTimeParseInfo {
cal.set(Calendar.MINUTE, ((buf[pos + 2] - 48) * 10) + buf[pos + 3] - 48);
cal.set(Calendar.SECOND, ((buf[pos + 4] - 48) * 10) + buf[pos + 5] - 48);
}
if (tz != null) {
cal.setTimeZone(tz);
} else if (getDefaultTimeZone() != null) {
cal.setTimeZone(getDefaultTimeZone());
}
return new IsoValue<>(type, cal.getTime(), null);
return createValue(cal, false);
}
@Override