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