/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.money;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import au.com.bytecode.opencsv.CSVReader;
import com.opengamma.util.tuple.Pair;
import com.opengamma.util.tuple.Pairs;
/**
* Look up whether you a pair of currencies is in the standard order
*/
public class StandardCurrencyPairs {
private static final Logger s_logger = LoggerFactory.getLogger(StandardCurrencyPairs.class);
private static Set<Pair<Currency, Currency>> s_currencyPairs = new HashSet<Pair<Currency, Currency>>();
static {
InputStream is = StandardCurrencyPairs.class.getClassLoader().getResourceAsStream("com/opengamma/util/money/standard-currency-pairs.csv");
parseCSV("standard-currency-pairs.csv", is);
}
private static void parseCSV(String filename, InputStream is) {
List<String[]> rows;
try (CSVReader reader = new CSVReader(new InputStreamReader(new BufferedInputStream(is)))) {
rows = reader.readAll();
int line = 1;
for (String[] row : rows) {
String numerator = row[0].trim();
String denominator = row[1].trim();
try {
s_currencyPairs.add(Pairs.of(Currency.of(numerator), Currency.of(denominator)));
} catch (IllegalArgumentException iae) {
s_logger.warn("Couldn't create currency from " + filename + ":" + line);
}
line++;
}
} catch (IOException ex) {
s_logger.warn("Couldn't read " + filename);
}
}
public static boolean isStandardPair(Currency numerator, Currency denominator) {
return s_currencyPairs.contains(Pairs.of(numerator, denominator));
}
public static boolean isSingleCurrencyNumerator(Currency ccy) {
return s_currencyPairs.contains(Pairs.of(ccy, Currency.USD));
}
}