package hip.ch3.proto;
import au.com.bytecode.opencsv.CSVParser;
import com.google.common.collect.Lists;
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;
import static hip.ch3.proto.StockProtos.Stock;
/**
* IO utilities for {@link Stock}s.
*/
public class StockUtils {
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);
return Stock.newBuilder()
.setSymbol(parts[0])
.setDate(parts[1])
.setOpen(Double.valueOf(parts[2]))
.setHigh(Double.valueOf(parts[3]))
.setLow(Double.valueOf(parts[4]))
.setClose(Double.valueOf(parts[5]))
.setVolume(Integer.valueOf(parts[6]))
.setAdjClose(Double.valueOf(parts[7])).build();
}
}