package hip.ch3.avro;
import au.com.bytecode.opencsv.CSVParser;
import com.google.common.collect.Lists;
import hip.ch3.avro.gen.Stock;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* IO utilities for {@link hip.ch3.avro.gen.Stock}s.
*/
public class AvroStockUtils {
private static CSVParser parser = new CSVParser();
public static List<Stock> fromCsvFile(File file) throws IOException {
return fromCsvStream(FileUtils.openInputStream(file));
}
public static List<Stock> fromCsvStream(InputStream is) throws IOException {
List<Stock> stocks = Lists.newArrayList();
for(String line: IOUtils.readLines(is)) {
stocks.add(fromCsv(line));
}
is.close();
return stocks;
}
public static Stock fromCsv(String line) throws IOException {
String parts[] = parser.parseLine(line);
Stock stock = new Stock();
stock.setSymbol(parts[0]);
stock.setDate(parts[1]);
stock.setOpen(Double.valueOf(parts[2]));
stock.setHigh(Double.valueOf(parts[3]));
stock.setLow(Double.valueOf(parts[4]));
stock.setClose(Double.valueOf(parts[5]));
stock.setVolume(Integer.valueOf(parts[6]));
stock.setAdjClose(Double.valueOf(parts[7]));
return stock;
}
}