1 package net.logAnalyzer.gui.messages;
2
3 import java.util.Vector;
4
5 import javax.swing.table.AbstractTableModel;
6
7 import net.logAnalyzer.converters.LAConverter;
8 import net.logAnalyzer.handlers.LALogHandler;
9 import net.logAnalyzer.handlers.LALogHandlerListener;
10
11 public class MessagesModel extends AbstractTableModel implements
12 LALogHandlerListener {
13 private static final long serialVersionUID = 1L;
14
15 /***
16 * Log handler to display.
17 */
18 private LALogHandler handler;
19
20 /***
21 * Index of the non literal columns.
22 */
23 private int[] nonliteralConverters;
24
25 /***
26 * Constructs a new messages model under the specified handler.
27 *
28 * @param handler
29 * Handler used as data source.
30 */
31 public MessagesModel(LALogHandler handler) {
32 super();
33 setLogHandler(handler);
34 }
35
36 protected void setLogHandler(LALogHandler logHandler) {
37 this.handler = logHandler;
38 handler.addLogHandlerListener(this);
39 LAConverter[] converters = handler.getConverters();
40 Vector columns = new Vector();
41 for (int i = 0; i < converters.length; i++) {
42 if (!converters[i].isLiteral()) {
43 columns.add(new Integer(i));
44 }
45 }
46 nonliteralConverters = new int[columns.size()];
47 for (int i = 0; i < columns.size(); i++) {
48 nonliteralConverters[i] = ((Integer) columns.get(i)).intValue();
49 }
50 fireTableDataChanged();
51 }
52
53 /***
54 * Returns the number of visible rows from the handler, after filters was
55 * applied.
56 *
57 * @see javax.swing.table.TableModel#getRowCount()
58 */
59 public int getRowCount() {
60 return handler.getSize();
61 }
62
63 /***
64 * Returns the log handler converter at the specified index in the data
65 * model.
66 *
67 * @param columnIndex
68 * Column index in the data model.
69 * @return Log handler column.
70 */
71 public LAConverter getConverter(int columnIndex) {
72 return handler.getConverter(nonliteralConverters[columnIndex]);
73 }
74
75 /***
76 * Returns all log handler converters in the data model. Literal converters
77 * are hidden.
78 *
79 * @return Log handler converters in the data model.
80 */
81 public LAConverter[] getConverters() {
82 LAConverter[] converters = new LAConverter[nonliteralConverters.length];
83 for (int i = 0; i < converters.length; i++) {
84 converters[i] = handler.getConverter(nonliteralConverters[i]);
85 }
86 return converters;
87 }
88
89 /***
90 * Returns the count of columns in the model.
91 *
92 * @return Columns count.
93 * @see javax.swing.table.TableModel#getColumnCount()
94 */
95 public int getColumnCount() {
96 return nonliteralConverters.length;
97 }
98
99 /***
100 * Returns the label of the converter of the column at the specified index
101 * in the model.
102 *
103 * @param columnIndex
104 * Column index in the model.
105 * @return Label of the column.
106 * @see javax.swing.table.TableModel#getColumnName(int)
107 */
108 public String getColumnName(int columnIndex) {
109 return handler.getConverter(nonliteralConverters[columnIndex])
110 .getLabel();
111 }
112
113 /***
114 * Returns the class of the column values at the specified index in the
115 * model.
116 *
117 * @param columnIndex
118 * Column index in the model.
119 * @return Class of the column values.
120 * @see javax.swing.table.TableModel#getColumnClass(int)
121 */
122 public Class getColumnClass(int columnIndex) {
123 return handler.getConverter(nonliteralConverters[columnIndex])
124 .getValueClass();
125 }
126
127 /***
128 * Returns <tt>true</tt> if the cell is editable.
129 *
130 * @return <tt>true</tt> if the cell is editable.
131 * @see javax.swing.table.TableModel#isCellEditable(int, int)
132 */
133 public boolean isCellEditable(int rowIndex, int columnIndex) {
134 return false;
135 }
136
137 /***
138 * Returns the value of the cell at the specified row and column.
139 *
140 * @return Value of the specified cell.
141 * @see javax.swing.table.TableModel#getValueAt(int, int)
142 */
143 public Object getValueAt(int rowIndex, int columnIndex) {
144 return handler.getMessage(rowIndex).getValue(
145 nonliteralConverters[columnIndex]);
146 }
147
148 /***
149 * NOP.
150 *
151 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
152 */
153 public void setValueAt(Object value, int rowIndex, int columnIndex) {
154
155 }
156
157 /***
158 * Receives a start parsing event.
159 *
160 * @param logHander
161 * Log handler used as data source.
162 * @see net.logAnalyzer.handlers.LALogHandlerListener#startParsing(LALogHandler)
163 */
164 public void startParsing(LALogHandler logHander) {
165
166 }
167
168 /***
169 * Receives a step parsing event.
170 *
171 * @param logHandler
172 * Log handler used as data source.
173 * @see net.logAnalyzer.handlers.LALogHandlerListener#stepParsing(LALogHandler)
174 */
175 public void stepParsing(LALogHandler logHandler) {
176
177 }
178
179 /***
180 * Receives an end parsing event. Calls {@link #setLogHandler(LALogHandler)}.
181 *
182 * @see net.logAnalyzer.handlers.LALogHandlerListener#endParsing(LALogHandler)
183 */
184 public void endParsing(LALogHandler logHander) {
185 setLogHandler(logHander);
186 }
187 }