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.categoryexplorer;
18
19 import java.util.LinkedList;
20 import java.util.StringTokenizer;
21
22 /**
23 * CategoryPath is a collection of CategoryItems which represent a
24 * path of categories.
25 *
26 * @author Michael J. Sikorsky
27 * @author Robert Shaw
28 */
29
30 // Contributed by ThoughtWorks Inc.
31
32 public class CategoryPath {
33 //--------------------------------------------------------------------------
34 // Constants:
35 //--------------------------------------------------------------------------
36
37 //--------------------------------------------------------------------------
38 // Protected Variables:
39 //--------------------------------------------------------------------------
40 protected LinkedList _categoryElements = new LinkedList();
41
42 //--------------------------------------------------------------------------
43 // Private Variables:
44 //--------------------------------------------------------------------------
45
46 //--------------------------------------------------------------------------
47 // Constructors:
48 //--------------------------------------------------------------------------
49
50 public CategoryPath() {
51 super();
52 }
53
54 /**
55 * Construct a CategoryPath. If the category is null, it defaults to "Debug".
56 */
57 public CategoryPath(String category) {
58 String processedCategory = category;
59
60 if (processedCategory == null) {
61 processedCategory = "Debug";
62 }
63
64 processedCategory = processedCategory.replace('/', '.');
65 processedCategory = processedCategory.replace('\\', '.');
66
67 StringTokenizer st = new StringTokenizer(processedCategory, ".");
68 while (st.hasMoreTokens()) {
69 String element = st.nextToken();
70 addCategoryElement(new CategoryElement(element));
71 }
72 }
73
74 //--------------------------------------------------------------------------
75 // Public Methods:
76 //--------------------------------------------------------------------------
77
78 /**
79 * returns the number of CategoryElements.
80 */
81 public int size() {
82 int count = _categoryElements.size();
83
84 return (count);
85 }
86
87 public boolean isEmpty() {
88 boolean empty = false;
89
90 if (_categoryElements.size() == 0) {
91 empty = true;
92 }
93
94 return (empty);
95 }
96
97
98 /**
99 * Removes all categoryElements.
100 */
101 public void removeAllCategoryElements() {
102 _categoryElements.clear();
103 }
104
105 /**
106 * Adds the specified categoryElement to the end of the categoryElement set.
107 */
108 public void addCategoryElement(CategoryElement categoryElement) {
109 _categoryElements.addLast(categoryElement);
110 }
111
112 /**
113 * Returns the CategoryElement at the specified index.
114 */
115 public CategoryElement categoryElementAt(int index) {
116 return ((CategoryElement) _categoryElements.get(index));
117 }
118
119
120 public String toString() {
121 StringBuffer out = new StringBuffer(100);
122
123 out.append("\n");
124 out.append("===========================\n");
125 out.append("CategoryPath: \n");
126 out.append("---------------------------\n");
127
128 out.append("\nCategoryPath:\n\t");
129
130 if (this.size() > 0) {
131 for (int i = 0; i < this.size(); i++) {
132 out.append(this.categoryElementAt(i).toString());
133 out.append("\n\t");
134 }
135 } else {
136 out.append("<<NONE>>");
137 }
138
139 out.append("\n");
140 out.append("===========================\n");
141
142 return (out.toString());
143 }
144
145 //--------------------------------------------------------------------------
146 // Protected Methods:
147 //--------------------------------------------------------------------------
148
149 //--------------------------------------------------------------------------
150 // Private Methods:
151 //--------------------------------------------------------------------------
152
153 //--------------------------------------------------------------------------
154 // Nested Top-Level Classes or Interfaces:
155 //--------------------------------------------------------------------------
156
157 }