View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17  package org.apache.log4j.lf5.viewer;
    18
    19  import java.util.Arrays;
    20  import java.util.HashMap;
    21  import java.util.List;
    22  import java.util.Map;
    23
    24  /**
    25   * LogTableColumn
    26   *
    27   * @author Michael J. Sikorsky
    28   * @author Brad Marlborough
    29   */
    30
    31  // Contributed by ThoughtWorks Inc.
    32
    33  public class LogTableColumn implements java.io.Serializable {
    34    private static final long serialVersionUID = -4275827753626456547L;
    35
    36    // log4j table columns.
    37    public final static LogTableColumn DATE = new LogTableColumn("Date");
    38    public final static LogTableColumn THREAD = new LogTableColumn("Thread");
    39    public final static LogTableColumn MESSAGE_NUM = new LogTableColumn("Message #");
    40    public final static LogTableColumn LEVEL = new LogTableColumn("Level");
    41    public final static LogTableColumn NDC = new LogTableColumn("NDC");
    42    public final static LogTableColumn CATEGORY = new LogTableColumn("Category");
    43    public final static LogTableColumn MESSAGE = new LogTableColumn("Message");
    44    public final static LogTableColumn LOCATION = new LogTableColumn("Location");
    45    public final static LogTableColumn THROWN = new LogTableColumn("Thrown");
    46
    47
    48    //--------------------------------------------------------------------------
    49    //   Protected Variables:
    50    //--------------------------------------------------------------------------
    51    protected String _label;
    52
    53    //--------------------------------------------------------------------------
    54    //   Private Variables:
    55    //--------------------------------------------------------------------------
    56    private static LogTableColumn[] _log4JColumns;
    57    private static Map _logTableColumnMap;
    58
    59    //--------------------------------------------------------------------------
    60    //   Constructors:
    61    //--------------------------------------------------------------------------
    62    static {
    63      _log4JColumns = new LogTableColumn[]{DATE, THREAD, MESSAGE_NUM, LEVEL, NDC, CATEGORY,
    64                                           MESSAGE, LOCATION, THROWN};
    65
    66      _logTableColumnMap = new HashMap();
    67
    68      for (int i = 0; i < _log4JColumns.length; i++) {
    69        _logTableColumnMap.put(_log4JColumns[i].getLabel(), _log4JColumns[i]);
    70      }
    71    }
    72
    73
    74    public LogTableColumn(String label) {
    75      _label = label;
    76    }
    77
    78    //--------------------------------------------------------------------------
    79    //   Public Methods:
    80    //--------------------------------------------------------------------------
    81
    82    /**
    83     * Return the Label of the LogLevel.
    84     */
    85    public String getLabel() {
    86      return _label;
    87    }
    88
    89    /**
    90     * Convert a column label into a LogTableColumn object.
    91     *
    92     * @param column The label of a level to be converted into a LogTableColumn.
    93     * @return LogTableColumn The LogTableColumn with a label equal to column.
    94     * @throws LogTableColumnFormatException Is thrown when the column can not be
    95     *         converted into a LogTableColumn.
    96     */
    97    public static LogTableColumn valueOf(String column)
    98        throws LogTableColumnFormatException {
    99      LogTableColumn tableColumn = null;
    100     if (column != null) {
    101       column = column.trim();
    102       tableColumn = (LogTableColumn) _logTableColumnMap.get(column);
    103     }
    104
    105     if (tableColumn == null) {
    106       StringBuffer buf = new StringBuffer();
    107       buf.append("Error while trying to parse (" + column + ") into");
    108       buf.append(" a LogTableColumn.");
    109       throw new LogTableColumnFormatException(buf.toString());
    110     }
    111     return tableColumn;
    112   }
    113
    114
    115   public boolean equals(Object o) {
    116     boolean equals = false;
    117
    118     if (o instanceof LogTableColumn) {
    119       if (this.getLabel() ==
    120           ((LogTableColumn) o).getLabel()) {
    121         equals = true;
    122       }
    123     }
    124
    125     return equals;
    126   }
    127
    128   public int hashCode() {
    129     return _label.hashCode();
    130   }
    131
    132   public String toString() {
    133     return _label;
    134   }
    135
    136   /**
    137    * @return A <code>List</code> of <code>LogTableColumn/code> objects that map
    138    * to log4j <code>Column</code> objects.
    139    */
    140   public static List getLogTableColumns() {
    141     return Arrays.asList(_log4JColumns);
    142   }
    143
    144   public static LogTableColumn[] getLogTableColumnArray() {
    145     return _log4JColumns;
    146   }
    147
    148   //--------------------------------------------------------------------------
    149   //   Protected Methods:
    150   //--------------------------------------------------------------------------
    151
    152   //--------------------------------------------------------------------------
    153   //   Private Methods:
    154   //--------------------------------------------------------------------------
    155
    156   //--------------------------------------------------------------------------
    157   //   Nested Top-Level Classes or Interfaces:
    158   //--------------------------------------------------------------------------
    159
    160 }
    161
    162
    163
    164
    165
    166