/*******************************************************************************
* Copyright (c) quickfixengine.org All rights reserved.
*
* This file is part of the QuickFIX FIX Engine
*
* This file may be distributed under the terms of the quickfixengine.org
* license as defined by quickfixengine.org and appearing in the file
* LICENSE included in the packaging of this file.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
* THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE.
*
* See http://www.quickfixengine.org/LICENSE for licensing information.
*
* Contact ask@quickfixengine.org if any conditions of this licensing
* are not clear to you.
******************************************************************************/
package quickfix.field.converter;
import java.text.DateFormat;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.TimeZone;
import quickfix.FieldConvertError;
abstract class AbstractDateTimeConverter {
protected static void assertLength(String value, int i, String type) throws FieldConvertError {
if (value.length() != i) {
throwFieldConvertError(value, type);
}
}
protected static void assertDigitSequence(String value, int i, int j, String type)
throws FieldConvertError {
for (int offset = i; offset < j; offset++) {
if (!Character.isDigit(value.charAt(offset))) {
throwFieldConvertError(value, type);
}
}
}
protected static void assertSeparator(String value, int offset, char ch, String type)
throws FieldConvertError {
if (value.charAt(offset) != ch) {
throwFieldConvertError(value, type);
}
}
protected static void throwFieldConvertError(String value, String type)
throws FieldConvertError {
throw new FieldConvertError("invalid UTC " + type + " value: " + value);
}
protected static long parseLong(String s) {
long n = 0;
for (int i = 0; i < s.length(); i++) {
n = (n * 10) + (s.charAt(i) - '0');
}
return n;
}
protected DateFormat createDateFormat(String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
sdf.setDateFormatSymbols(new DateFormatSymbols(Locale.US));
return sdf;
}
}