/*******************************************************************************
* 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;
import java.text.DateFormatSymbols;
import java.util.Arrays;
import java.util.Locale;
/**
* Utility class for converting between day names and offsets. This method handles
* international week day names based on the default locale.
*/
public class DayConverter {
/**
* Convert a day name (possibly abbreviated) to an offset.
*
* @param dayName the day name (unambiguous abbreviations to 2 letters are allowed)
* @return the week offset (starting at 1)
* @throws ConfigError raised if conversion failed.
*/
public static int toInteger(String dayName) throws ConfigError {
String dayNames[] = new DateFormatSymbols(Locale.US).getWeekdays();
dayName = dayName.toLowerCase();
for (int i = 1; i < dayNames.length; i++) {
if (dayNames[i].toLowerCase().startsWith(dayName)) {
return i;
}
}
throw new ConfigError("invalid format for day (valid values: "
+ Arrays.asList(dayNames).subList(1, dayNames.length)
+ " or prefix); actual value was '" + dayName + "'");
}
/**
* Convert a day offset into a day name. This method handles
* international week day names based on the default locale.
*
* @param dayOffset week day offset (starting at 1)
* @return the week day name
* @throws ConfigError raised if offset is invalid.
*/
public static String toString(int dayOffset) throws ConfigError {
String dayNames[] = new DateFormatSymbols(Locale.US).getWeekdays();
if (dayOffset > 0 && dayOffset < dayNames.length) {
return dayNames[dayOffset].toLowerCase();
}
throw new ConfigError("invalid offset for day: " + dayOffset);
}
}