001 package log.swing;
002
003 import log.*;
004
005 import util.swing.*;
006
007 import java.util.*;
008
009 /**
010 * Swing model for tables that can display log file contents. This model is static and cannot be changed.
011 *
012 * @see log.LogInputStream
013 * @see JLogTable
014 * @see DefaultLogEntryTED
015 *
016 * @author Steffen Zschaler
017 * @version 2.0 14/07/1999
018 * @since v2.0
019 */
020 public class LogTableModel extends AbstractTableModel {
021
022 /**
023 * ID for serialization.
024 */
025 private static final long serialVersionUID = 128798650167833401L;
026
027 /**
028 * The LogEntries in the same order in which they appear in the table.
029 *
030 * @serial
031 */
032 protected List<LogEntry> m_lEntries;
033
034 /**
035 * Set the table's data. This actually has no effect here.
036 */
037 public void setData(Object n_lModel) {
038 }
039
040 /**
041 * Create a new LogTableModel. Usually you do not create a new model directly, but rather instantiate a
042 * new {@link JLogTable}.
043 *
044 * @param lfc the LogFileContent that contains the LogEntries to be displayed.
045 * @param cmp a Comparator that defines the order the LogEntries appear in. May be <code>null</code> in
046 * which case LogEntries will be sorted by the {@link LogEntry#getLogDate log date}.
047 * @param ted a TableEntryDescriptor defining how LogEntries are to be displayed with respect to rows and
048 * columns in a table.
049 *
050 * @see DefaultLogEntryTED
051 */
052 public LogTableModel(LogFileContent lfc, Comparator<LogEntry> cmp, TableEntryDescriptor ted) {
053 super(ted);
054
055 m_lEntries = lfc.getContentList();
056
057 if (cmp == null) {
058 cmp = new Comparator<LogEntry>() {
059 public int compare(LogEntry le1, LogEntry le2) {
060 return le1.getLogDate().compareTo(le2.getLogDate());
061 }
062 };
063 }
064
065 Collections.sort(m_lEntries, cmp);
066 }
067
068 /**
069 * Return the LogEntry at row <code>nRow</code>.
070 */
071 public Object getRecord(int nRow) {
072 if ((nRow >= 0) && (nRow < m_lEntries.size())) {
073 return m_lEntries.get(nRow);
074 } else {
075 return null;
076 }
077 }
078
079 /**
080 * Return the total amount of LogEntries in the model.
081 */
082 public int getRowCount() {
083 return m_lEntries.size();
084 }
085 }