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 public final static int PRICE_HISTORY = 0; 016 public final static int ORDER_HISTORY = 1; 017 018 private List data; 019 private int type; 020 021 /** 022 * @param data the history to be displayed 023 * @param type the kind of history: 024 * <ul><li>0: interpreted as {@link market.statistics.CISalesStats#priceHistory}</li> 025 * <li>1: interpreted as {@link market.statistics.CISalesStats#orderHistory}</li></ul> 026 */ 027 public HistoryEntryModel(List data, int type) { 028 super(); 029 this.data = data; 030 this.type = type; 031 } 032 033 /** 034 * @param i the affected column. 035 * @return columns' names. 036 */ 037 public String getColumnName(int i) { 038 return new String[] {"Datum", type == 0 ? "Preis" : "Bestellt"}[i]; 039 } 040 041 /** 042 * @return the number of the table's rows. 043 */ 044 public int getRowCount() { 045 return data.size(); 046 } 047 048 /** 049 * @return the number of the table's columns. 050 */ 051 public int getColumnCount() { 052 return 2; 053 } 054 055 /** 056 * @param column the affected column. 057 * @return columns' classes. They indicate how column's values should be aligned. 058 */ 059 public Class getColumnClass(int column) { 060 return String.class; 061 } 062 063 /** 064 * @param row the affected row. 065 * @param column the affected column. 066 * @return the table cell's value. 067 */ 068 public Object getValueAt(int row, int column) { 069 HistoryEntry oRecord = (HistoryEntry)data.get(row); 070 switch (column) { 071 case 0: 072 return oRecord.getDate(); 073 case 1: 074 return type == 0 ? Conversions.doubleToCurrency(oRecord.getValue()) : 075 Integer.toString(oRecord.getValue()); 076 default: 077 return ""; 078 } 079 } 080 }