diff --git a/src/main/java/com/solab/iso8583/MessageFactory.java b/src/main/java/com/solab/iso8583/MessageFactory.java index c339279..03a3f15 100644 --- a/src/main/java/com/solab/iso8583/MessageFactory.java +++ b/src/main/java/com/solab/iso8583/MessageFactory.java @@ -21,14 +21,9 @@ package com.solab.iso8583; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.text.ParseException; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import com.solab.iso8583.parse.DateTimeParseInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -275,6 +270,20 @@ public class MessageFactory { return resp; } + /** Sets the timezone for the specified FieldParseInfo, if it's indeed for parsing dates. */ + public void setTimezoneForParseGuide(int messageType, int field, TimeZone tz) { + Map guide = parseMap.get(messageType); + if (guide != null) { + FieldParseInfo fpi = guide.get(field); + if (fpi instanceof DateTimeParseInfo) { + ((DateTimeParseInfo) fpi).setTimeZone(tz); + return; + } + } + log.warn("Field {} for message type {} is not for dates, cannot set timezone", + field, messageType); + } + /** Creates a new message instance from the buffer, which must contain a valid ISO8583 * message. If the factory is set to use binary messages then it will try to parse * a binary message.