package tradingphysics;
import java.sql.*;
import java.util.Calendar;
import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import taskmanager.HedgeException;
import taskrunner.Database;
import taskrunner.Indicator;
import taskrunner.Task;
public class Stock extends Security {
private static final long serialVersionUID = 6338531383740536872L;
protected static Integer logLevel = Task.DEBUG;
public static HashMap<String, Stock> stockInstance = new HashMap<String, Stock>();
public static Stock factory(String symbol)
{
if(!stockInstance.containsKey(symbol)) {
stockInstance.put(symbol, new Stock(symbol));
}
return stockInstance.get(symbol);
}
public Stock(String symbol) {
super(symbol, null);
}
public Stock(String symbol, ExecutorService threadPool) {
super(symbol, threadPool);
}
public void parseData(String newData, String[] dataTypes, Calendar date) {
String dataParts[] = newData.split(",");
TimeSlice slice = new TimeSlice(date, dataParts[0]);
if(!dataParts[0].equals("Tick")) {
for(Integer i = 0; i < dataTypes.length && i < dataParts.length-1; i++) {
slice.addDatumPair(new Indicator(dataTypes[i]), dataParts[i+1]);
}
this.addTimeSlice(slice);
}
}
@Override
protected Boolean securityExists() {
ResultSet security = Database.query("SELECT COUNT(1) FROM security WHERE symbol = '" + this.symbol + "';");
Boolean hasRows = false;
try {
hasRows = security.next();
security.getStatement().getConnection().close();
security.getStatement().close();
} catch (SQLException e) {
HedgeException.handle(e);
}
return hasRows;
}
@Override
protected void insertSecurityToDb() {
// TODO Auto-generated method stub
}
@Override
protected void loadSecurity() {
ResultSet security = Database.query("SELECT security_id, symbol FROM security WHERE symbol = '" + this.symbol + "';");
try {
if(security.next()) {
this.id = security.getInt(1);
}
} catch (SQLException e) {
HedgeException.handle(e);
} finally {
try {
security.getStatement().getConnection().close();
security.getStatement().close();
} catch (SQLException e) {
HedgeException.handle(e);
}
}
}
}