package com.activequant.trading.datamodel;
import java.util.List;
import com.activequant.trading.AbstractTSBase;
@SuppressWarnings("serial")
public class InstrumentTable extends AQTableDataBase {
public enum Columns{
INSTRUMENTID(0),
TRADEABLEID(1),
CURRENCY(2),
LASTTRADDATE(3),
TICKSIZE(4),
TICKVALUE(5),
OPENTIME(6),
CLOSETIME(7);
//
int colIdx;
private Columns(int pos){
this.colIdx = pos;
}
public int colIdx(){return colIdx;}
}
private Object[][] data = new Object[0][];
private String[] header = new String[]{"InstrumentID", "TradeableID", "currency", "lastTradingDate", "tickSize", "tickValue", "marketStart", "marketEnd"};
public InstrumentTable(){
super();
}
public InstrumentTable(AbstractTSBase abstractTSBase) {
super(abstractTSBase);
}
public void addInstrument(String instrumentId, String tradeableId, String currency, long lastTradDate8, double tickSize, double tickVal, double openTime6, double closeTime6){
// convert data to list.
List<Object[]> l = c(data);
Object[] row = new Object[header.length];
row[0] = instrumentId;
row[1] = tradeableId;
row[2] = currency;
row[3] = lastTradDate8;
row[4] = tickSize;
row[5] = tickVal;
row[6] = openTime6;
row[7] = closeTime6;
l.add(row);
data = c(l);
}
public void deleteInstrument(String instrumentId){
if(containsInstrumentId(instrumentId)){
int pos = getPosition(instrumentId);
//
List<Object[]> l = c(data);
l.remove(pos);
data = c(l);
}
}
@Override
public Object[][] getData() {
return data;
}
@Override
public String[] getHeader() {
return header;
}
public boolean containsInstrumentId(String instId){
for(Object[] row : data){
if(row[0].equals(instId))return true;
}
return false;
}
public int getRowIndexOf(String mdiId){
int pos = -1;
for(Object[] row : data){
pos++;
if(row[0].equals(mdiId))return pos;
}
throw new RuntimeException("MDI ID not present in current system configuration. Cannot continue. ");
}
public int getRowIndexOfByTradeId(String tdiId){
int pos = -1;
for(Object[] row : data){
pos++;
if(row[1].equals(tdiId))return pos;
}
throw new RuntimeException("TDI ID not present in current system configuration. Cannot continue. ");
}
/**
* rather use getRowIndexOf
* @param instId
* @return
*/
@Deprecated
public int getPosition(String instId){
return getRowIndexOf(instId);
}
}