/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.currency; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Set; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.core.config.impl.ConfigItem; import com.opengamma.master.config.ConfigMaster; import com.opengamma.master.config.ConfigMasterUtils; /** * Loads a default currency pair into the configuration database. */ public class CurrencyPairsConfigPopulator { /** Logger. */ private static final Logger s_logger = LoggerFactory.getLogger(CurrencyPairsConfigPopulator.class); public static ConfigMaster populateCurrencyPairsConfigMaster(final ConfigMaster cfgMaster) { storeCurrencyPairs(cfgMaster, CurrencyPairs.DEFAULT_CURRENCY_PAIRS, createCurrencyPairs()); return cfgMaster; } public static CurrencyPairs createCurrencyPairs() { final InputStream inputStream = CurrencyPairsConfigPopulator.class.getResourceAsStream("market-convention-currency-pairs.csv"); final BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String pairStr; final Set<CurrencyPair> pairs = new HashSet<CurrencyPair>(); try { while ((pairStr = reader.readLine()) != null) { try { final CurrencyPair pair = CurrencyPair.parse(pairStr.trim()); pairs.add(pair); } catch (final IllegalArgumentException e) { s_logger.debug/*warn*/("Unable to create currency pair from " + pairStr, e); } } } catch (final IOException ex) { throw new OpenGammaRuntimeException("Problem loading currency pairs into configuration database", ex); } finally { IOUtils.closeQuietly(inputStream); } return CurrencyPairs.of(pairs); } private static void storeCurrencyPairs(final ConfigMaster cfgMaster, final String name, final CurrencyPairs currencyPairs) { final ConfigItem<CurrencyPairs> doc = ConfigItem.of(currencyPairs); doc.setName(name); ConfigMasterUtils.storeByName(cfgMaster, doc); } }