001 package market.swing;
002
003 import java.util.List;
004
005 import javax.swing.table.AbstractTableModel;
006
007 import market.Conversions;
008 import market.statistics.HistoryEntry;
009
010 /**
011 * TableModel for tables that display {@link HistoryEntry HistoryEntries}.
012 */
013 public class HistoryEntryModel extends AbstractTableModel {
014
015 /**
016 * ID for serialization.
017 */
018 private static final long serialVersionUID = -9112475436033459400L;
019
020 public final static int PRICE_HISTORY = 0;
021 public final static int ORDER_HISTORY = 1;
022
023 private List data;
024 private int type;
025
026 /**
027 * @param data the history to be displayed
028 * @param type the kind of history:
029 * <ul><li>0: interpreted as {@link market.statistics.CISalesStats#priceHistory}</li>
030 * <li>1: interpreted as {@link market.statistics.CISalesStats#orderHistory}</li></ul>
031 */
032 public HistoryEntryModel(List data, int type) {
033 super();
034 this.data = data;
035 this.type = type;
036 }
037
038 /**
039 * @param i the affected column.
040 * @return columns' names.
041 */
042 public String getColumnName(int i) {
043 return new String[] {"Datum", type == 0 ? "Preis" : "Bestellt"}[i];
044 }
045
046 /**
047 * @return the number of the table's rows.
048 */
049 public int getRowCount() {
050 return data.size();
051 }
052
053 /**
054 * @return the number of the table's columns.
055 */
056 public int getColumnCount() {
057 return 2;
058 }
059
060 /**
061 * @param column the affected column.
062 * @return columns' classes. They indicate how column's values should be aligned.
063 */
064 public Class<?> getColumnClass(int column) {
065 return String.class;
066 }
067
068 /**
069 * @param row the affected row.
070 * @param column the affected column.
071 * @return the table cell's value.
072 */
073 public Object getValueAt(int row, int column) {
074 HistoryEntry oRecord = (HistoryEntry)data.get(row);
075 switch (column) {
076 case 0:
077 return oRecord.getDate();
078 case 1:
079 return type == 0 ? Conversions.doubleToCurrency(oRecord.getValue()) :
080 Integer.toString(oRecord.getValue());
081 default:
082 return "";
083 }
084 }
085 }