/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.copier.sheet.reader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Map;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.integration.copier.sheet.SheetFormat;
import com.opengamma.util.ArgumentChecker;
/**
* An abstract table class for importing portfolio data from spreadsheets
*/
public abstract class SheetReader {
private String[] _columns; // The column names and order
public static SheetReader newSheetReader(SheetFormat sheetFormat, InputStream inputStream) {
ArgumentChecker.notNull(sheetFormat, "sheetFormat");
ArgumentChecker.notNull(inputStream, "outputStream");
switch (sheetFormat) {
case CSV:
return new CsvSheetReader(inputStream);
case XLS:
return new XlsSheetReader(inputStream, 0);
default:
throw new OpenGammaRuntimeException("Could not create a reader for the sheet input format " + sheetFormat.toString());
}
}
public static SheetReader newSheetReader(String filename) {
ArgumentChecker.notEmpty(filename, "filename");
InputStream inputStream = openFile(filename);
return newSheetReader(SheetFormat.of(filename), inputStream);
}
public abstract Map<String, String> loadNextRow();
public String[] getColumns() {
return _columns;
}
public void setColumns(String[] columns) {
_columns = columns;
}
protected static InputStream openFile(String filename) {
// Open input file for reading
FileInputStream fileInputStream;
try {
fileInputStream = new FileInputStream(filename);
} catch (FileNotFoundException ex) {
throw new OpenGammaRuntimeException("Could not open file " + filename + " for reading, exiting immediately.");
}
return fileInputStream;
}
public abstract void close();
}