View Javadoc
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         // NOP
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         // NOP
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         // NOP
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 }