package dailyBot.analysis.view;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.text.DecimalFormat;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import dailyBot.analysis.Utils;
import dailyBot.model.StrategySignal;
import dailyBot.model.Strategy.StrategyId;
import dailyBot.model.SignalProvider.SignalProviderId;
public class DailyTable extends JFrame
{
private static final long serialVersionUID = -1585479366228991191L;
StrategyId strategyId;
final static String columnNames[] = { "Estrategia", "Compra", "Par", "Precio de entrada", "Ganancia" };
JTable table;
Object[][] toShow;
public DailyTable(StrategyId strategyId)
{
super(strategyId.toString());
fillShowArray(strategyId);
createTable();
}
public DailyTable(SignalProviderId signalProviderId)
{
super(signalProviderId.toString());
fillShowArray(signalProviderId);
createTable();
}
private void fillShowArray(StrategyId strategyId)
{
DecimalFormat df = new DecimalFormat("0.0000");
List<StrategySignal> listaE = null;
try
{
listaE = Utils.getStrategySignals(strategyId.ordinal());
}
catch(Exception e)
{
RMIClientMain.logRMI(e.getMessage() + " Error haciendo la conexion RMI");
System.exit(0);
}
toShow = new Object[listaE.size()][5];
for(int i = 0; i < listaE.size(); i++)
{
toShow[i][0] = listaE.get(i).getStrategyId().toString();
toShow[i][1] = listaE.get(i).isBuy() + " toco: " + listaE.get(i).isStopTouched();
toShow[i][2] = listaE.get(i).getPair().toString();
toShow[i][3] = df.format(listaE.get(i).getEntryPrice()) + " " + df.format(listaE.get(i).stopDaily()) + " "
+ df.format(listaE.get(i).getStop());
try
{
toShow[i][4] = "Not available";
}
catch(Exception e)
{
RMIClientMain.logRMI(e.getMessage() + " Error haciendo la conexion RMI");
System.exit(0);
}
}
}
private void fillShowArray(SignalProviderId signalProviderId)
{
DecimalFormat df = new DecimalFormat("0.0000");
List<StrategySignal> listaE = null;
try
{
listaE = Utils.getSignalProviderSignals(signalProviderId.ordinal());
}
catch(Exception e)
{
RMIClientMain.logRMI(e.getMessage() + " Error haciendo la conexion RMI");
System.exit(0);
}
toShow = new Object[listaE.size()][5];
for(int i = 0; i < listaE.size(); i++)
{
toShow[i][0] = listaE.get(i).getStrategyId().toString();
try
{
StrategySignal esta = Utils.getStrategySignal(listaE.get(i).getStrategyId()
.ordinal(), listaE.get(i).getPair().ordinal());
if(esta == null)
{
toShow[i][1] = "Error: no existe en Estrategia";
toShow[i][2] = listaE.get(i).getPair().toString();
continue;
}
toShow[i][1] = listaE.get(i).isBuy() + " toco: " + esta.isStopTouched();
toShow[i][2] = listaE.get(i).getPair().toString();
toShow[i][3] = df.format(esta.getEntryPrice()) + " " + df.format(esta.stopDaily()) + " "
+ df.format(esta.getStop());
toShow[i][4] = "Not available"
+ " "
+ listaE.get(i).getUniqueId("zulutrade-" + signalProviderId.toString());
}
catch(Exception e)
{
RMIClientMain.logRMI(e.getMessage() + " Error haciendo la conexion RMI");
System.exit(0);
}
}
}
private void createTable()
{
table = new JTable(toShow, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(1000, 97));
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);
ListSelectionModel listMod = table.getSelectionModel();
listMod.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listMod.addListSelectionListener(table);
table.setModel(new AbstractTableModel()
{
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount()
{
return 5;
}
@Override
public int getRowCount()
{
return toShow.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
try
{
return toShow[rowIndex][columnIndex];
}
catch(Exception e)
{
return "";
}
}
@Override
public boolean isCellEditable(int a, int b)
{
return false;
}
});
pack();
setVisible(true);
}
}