Package com.opengamma.bbg.loader

Source Code of com.opengamma.bbg.loader.BloombergSwaptionFileLoader

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.loader;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.CSVWriter;

import com.opengamma.bbg.referencedata.cache.MongoDBValueCachingReferenceDataProvider;
import com.opengamma.bbg.referencedata.impl.BloombergReferenceDataProvider;
import com.opengamma.bbg.test.MongoCachedReferenceData;

/**
* Little util for parsing swaption files
*/
public class BloombergSwaptionFileLoader {

  /** Logger. */
  private static final Logger s_logger = LoggerFactory.getLogger(BloombergSwaptionFileLoader.class);

  /* package */static final String CONTEXT_CONFIGURATION_PATH = "/com/opengamma/bbg/loader/bloomberg-security-loader-context.xml";
  private static final int NAME_FIELD = 0;
  private static final int BUID_FIELD = 8;
  private static BloombergReferenceDataProvider getBloombergSecurityFileLoader() {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(CONTEXT_CONFIGURATION_PATH);
    context.start();
    BloombergReferenceDataProvider dataProvider = (BloombergReferenceDataProvider) context.getBean("refDataProvider");
    return dataProvider;
  }
 
  /**
   * Little util to parse swaption tickers into a csv for further analysis.
   * @param args command line params
   */
  public static void main(String[] args) {  // CSIGNORE
    CSVReader csvReader = null;
    CSVWriter csvWriter = null;
    try {
      csvReader = new CSVReader(new BufferedReader(new FileReader(args[0])));
      csvWriter = new CSVWriter(new BufferedWriter(new FileWriter(args[1])));
      String[] line;
      Pattern pattern = Pattern.compile("^(\\w\\w\\w).*?(\\d+)(M|Y)(\\d+)(M|Y)\\s*?(PY|RC)\\s*?(.*)$");
      BloombergReferenceDataProvider rawBbgRefDataProvider = getBloombergSecurityFileLoader();
      MongoDBValueCachingReferenceDataProvider bbgRefDataProvider = MongoCachedReferenceData.makeMongoProvider(rawBbgRefDataProvider, BloombergSwaptionFileLoader.class);
      while ((line = csvReader.readNext()) != null) {
        String name = line[NAME_FIELD];
        Matcher matcher = pattern.matcher(name);
        if (matcher.matches()) {
          String ccy = matcher.group(1);
          String swapTenorSize = matcher.group(2);
          String swapTenorUnit = matcher.group(3);
          String optionTenorSize = matcher.group(4);
          String optionTenorUnit = matcher.group(5);
          String payReceive = matcher.group(6);
          String distanceATM = matcher.group(7);
         
          String buid = "/buid/" + line[BUID_FIELD];
          String value = bbgRefDataProvider.getReferenceDataValue(buid, "TICKER");
          csvWriter.writeNext(new String[] {name, ccy, swapTenorSize, swapTenorUnit, optionTenorSize, optionTenorUnit, payReceive, distanceATM, value });
        } else {
          s_logger.error("Couldn't parse " + name + " field");
        }
       
      }
    } catch (IOException ioe) {
      s_logger.error("Error while reading file", ioe);
    } finally {
      IOUtils.closeQuietly(csvReader);
      IOUtils.closeQuietly(csvWriter);
    }
  }

}
TOP

Related Classes of com.opengamma.bbg.loader.BloombergSwaptionFileLoader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.