package jtrade.io;
import java.io.File;
import java.io.IOException;
import jtrade.Symbol;
import jtrade.marketfeed.Bar;
import org.joda.time.DateTime;
public class MarketDataIO {
public static File createReadFile(Symbol symbol, DateTime date, File dataDir) {
return createReadFile(symbol, date, 0, dataDir);
}
public static File createReadFile(Symbol symbol, DateTime date, int barSizeSeconds, File dataDir) {
String barSize = barSizeSeconds > 0 ? String.valueOf(barSizeSeconds) : "TICK";
String filename = new StringBuilder(symbol.getFullCode()).append('-').append(date.toString("yyyyMM")).append('-').append(barSize).toString();
File f = new File(dataDir, filename.concat(".bin.gz"));
if (f.exists()) {
return f;
}
f = new File(dataDir, filename.concat(".bin"));
if (f.exists()) {
return f;
}
f = new File(dataDir, filename.concat(".txt.gz"));
if (f.exists()) {
return f;
}
return new File(dataDir, filename.concat(".txt"));
}
public static File createWriteFile(Bar bar, File dataDir) {
return createWriteFile(bar.getSymbol(), bar.getDateTime(), bar.getBarSize().toStandardSeconds().getSeconds(), dataDir);
}
public static File createWriteFile(Symbol symbol, DateTime date, File dataDir) {
return createWriteFile(symbol, date, 0, dataDir);
}
public static File createWriteFile(Symbol symbol, DateTime date, int barSizeSeconds, File dataDir) {
String barSize = barSizeSeconds > 0 ? String.valueOf(barSizeSeconds) : "TICK";
String filename = new StringBuilder(symbol.getFullCode()).append('-').append(date.toString("yyyyMM")).append('-').append(barSize).append(".txt").toString();
return new File(dataDir, filename);
}
public static BarReader createBarTickReader(File file, int barSizeSeconds) throws IOException {
return new BarTickFileReader(file, barSizeSeconds);
}
public static BarReader createBarReader(File file) throws IOException {
if (file.getPath().endsWith(".bin.gz") || file.getPath().endsWith(".bin")) {
return new BinaryBarFileReader(file);
}
return new CsvBarFileReader(file);
}
public static TickReader createTickReader(File file) throws IOException {
return createTickReader(file, true);
}
public static TickReader createTickReader(File file, boolean skipMarketDepth) throws IOException {
if (file.getPath().endsWith(".bin.gz") || file.getPath().endsWith(".bin")) {
return new BinaryTickFileReader(file, skipMarketDepth);
}
return new CsvTickFileReader(file, skipMarketDepth);
}
public static BarWriter createBarWriter(File file, boolean append, String source) throws IOException {
return createBarWriter(file, append, false, source);
}
public static BarWriter createBarWriter(File file, boolean append, boolean compress, String source) throws IOException {
return new CsvBarFileWriter(file, append, compress, source);
}
public static TickWriter createTickWriter(File file, boolean append, String source) throws IOException {
return createTickWriter(file, append, false, source);
}
public static TickWriter createTickWriter(File file, boolean append, boolean compress, String source) throws IOException {
return new CsvTickFileWriter(file, append, compress, source);
}
}