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

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

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

import com.opengamma.OpenGammaRuntimeException;

/**
 * Standard provider of exchange data based on a CSV file.
 */
public class DefaultExchangeDataProvider implements ExchangeDataProvider {

  private static final DefaultExchangeDataProvider INSTANCE = new DefaultExchangeDataProvider();
  private static final String EXCHANGE_ISO_FILE = "ISO10383MIC.csv";
  private final Map<String, Exchange> _exchangeMap = new HashMap<>();
  private final Map<String, Exchange> _exchangeDescriptionMap = new HashMap<>();

  /**
   * Creates an instance.
   */
  private DefaultExchangeDataProvider() {
    loadExchangeData();
  }

  /**
   * Get the exchange data provider
   * @return the exchange data provider
   */
  public static ExchangeDataProvider getInstance() {
    return INSTANCE;
  }

  /**
   * Loads the exchange data
   * 
   * @param filename  the filename, not null
   */
  private void loadExchangeData() {
    InputStream is = getClass().getResourceAsStream(EXCHANGE_ISO_FILE);
    if (is == null) {
      throw new OpenGammaRuntimeException("Unable to locate " + EXCHANGE_ISO_FILE);
    }
    CSVReader exchangeIsoReader = new CSVReader(new InputStreamReader(is), CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, CSVParser.DEFAULT_ESCAPE_CHARACTER, 1);
    String [] nextLine;
    try {
      while ((nextLine = exchangeIsoReader.readNext()) != null) {
        String micCode = nextLine[0];
        String description = nextLine[1];
        String countryCode = nextLine[2];
        String country = nextLine[3];
        String city = nextLine[4];
        String acr = nextLine[5];
        String status = nextLine[7];
        if (StringUtils.isNotBlank(micCode) && StringUtils.isNotBlank(countryCode)) {
          Exchange exchange = new Exchange();
          exchange.setMic(micCode);
          exchange.setDescription(description);
          exchange.setCountryCode(countryCode);
          exchange.setCountry(country);
          exchange.setCity(city);
          exchange.setAcr(acr);
          exchange.setStatus(status);
          _exchangeMap.put(micCode, exchange);
          _exchangeDescriptionMap.put(description.toUpperCase(), exchange);
        }
      }
      exchangeIsoReader.close();
    } catch (IOException e) {
      throw new OpenGammaRuntimeException("Unable to read from " + EXCHANGE_ISO_FILE, e);
    }
  }

  @Override
  public Exchange getExchange(final String micCode) {
    return _exchangeMap.get(micCode);
  }

  @Override
  public Exchange getExchangeFromDescription(final String description) {
    return _exchangeDescriptionMap.get(description.toUpperCase());
  }

}

@@ -577,16 +577,22 @@
 %0Apublic 
+final 
 class De

Fix checkstyle