package com.activequant.trading.datamodel; import java.text.SimpleDateFormat; import java.util.List; import com.activequant.domainmodel.TimeStamp; import com.activequant.domainmodel.trade.order.OrderSide; import com.activequant.trading.AbstractTSBase; @SuppressWarnings("serial") public class ExecutionsTable extends AQTableDataBase { private SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); public enum Columns{ ORDERID(0), EXECID(1), TIMESTAMP(2), INSTRUMENTID(3), SIDE(4), PRICE(5), QUANTITY(6); // int colIdx; private Columns(int pos){ this.colIdx = pos; } public int colIdx(){return colIdx;} } private Object[][] data = new Object[0][]; private String[] header; public ExecutionsTable(){ super(); header = new String[Columns.values().length]; for(int i=0;i<header.length;i++){ header[i] = Columns.values()[i].name(); } } public ExecutionsTable(AbstractTSBase abstractTSBase) { super(abstractTSBase); header = new String[Columns.values().length]; for(int i=0;i<header.length;i++){ header[i] = Columns.values()[i].name(); } } public void addExecution(String orderId, String execId, TimeStamp ts, String instrumentId, OrderSide side, double price, double quantity){ // convert data to list. List<Object[]> l = c(data); Object[] row = new Object[header.length]; row[Columns.ORDERID.colIdx] = orderId; row[Columns.EXECID.colIdx] = execId; row[Columns.TIMESTAMP.colIdx] = sdf.format(ts.getCalendar().getTime()); row[Columns.INSTRUMENTID.colIdx] = instrumentId; row[Columns.SIDE.colIdx] = side; row[Columns.PRICE.colIdx] = price; row[Columns.QUANTITY.colIdx] = quantity; l.add(row); data = c(l); } @Override public Object[][] getData() { return data; } @Override public String[] getHeader() { return header; } }