001: /**
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */package org.apache.geronimo.console.util;
017:
018: import java.util.ArrayList;
019: import java.util.Iterator;
020: import java.util.Hashtable;
021: import java.util.Collections;
022:
023: public class StringTree implements Comparable {
024: public String name = null;
025: public ArrayList childs = new ArrayList();
026:
027: public StringTree(String nm, ArrayList elements) {
028: name = nm;
029: childs = elements;
030: }
031:
032: public StringTree(String nm) {
033: name = nm;
034: }
035:
036: public String getName() {
037: return name;
038: }
039:
040: public void setName(String nm) {
041: name = nm;
042: ;
043: }
044:
045: public ArrayList getChilds() {
046: return childs;
047: }
048:
049: public void setChilds(ArrayList elements) {
050: childs = elements;
051: }
052:
053: public void addChild(Object obj) {
054: childs.add(obj);
055: }
056:
057: public StringTree findNode(String id) {
058: if (id == null)
059: return null;
060: if (name != null && name.equals(id))
061: return this ;
062: Iterator iter = childs.iterator();
063: while (iter.hasNext()) {
064: Object obj = iter.next();
065: if (obj instanceof StringTree) {
066: StringTree tree = ((StringTree) obj).findNode(id);
067: if (tree != null)
068: return tree;
069: }
070: }
071: return null;
072: }
073:
074: public boolean equals(Object node) {
075: if (node instanceof StringTree
076: && ((StringTree) node).name.equals(this .name))
077: return true;
078: return false;
079: }
080:
081: public String toJSONObject(String prependId) {
082: return toJSONObject(prependId, null);
083: }
084:
085: public String toJSONObject(String prependId, Hashtable htLinks) {
086: return toJSONObject(prependId, htLinks, false);
087: }
088:
089: public String toJSONObject(String prependId, Hashtable htLinks,
090: boolean level1) {
091: StringBuffer stb = new StringBuffer();
092: if (htLinks != null) {
093: if (!name.startsWith("class ")
094: && !name.startsWith("interface ")
095: && !name.equals("Classes")
096: && !name.equals("Interfaces")
097: && htLinks.containsKey(name) && !level1) {
098: stb.append("{title:'link::");
099: stb.append(htLinks.get(name));
100: stb.append("',widgetId:'");
101: stb.append(prependId);
102: stb.append("'}");
103: return stb.toString();
104: } else {
105: htLinks.put(name, prependId);
106: }
107: }
108: stb.append("{title:'");
109: if (name != null)
110: stb.append(name);
111: stb.append("',widgetId:'");
112: stb.append(prependId);
113: if (childs == null || childs.size() == 0) {
114: stb.append("',children:[]}");
115: } else {
116: stb.append("',children:[");
117: Collections.sort(childs);
118: for (int i = 0; i < childs.size(); i++) {
119: Object obj = childs.get(i);
120: if (i != 0)
121: stb.append(",");
122: if (obj instanceof StringTree)
123: stb.append(((StringTree) obj).toJSONObject(
124: prependId + "." + i, htLinks));
125: else {
126: stb.append("{title:'");
127: stb.append((String) obj);
128: stb.append("',widgetId:'");
129: stb.append(prependId + "." + i);
130: stb.append("'}");
131: }
132: }
133: stb.append("]}");
134: }
135: return stb.toString();
136: }
137:
138: public int compareTo(Object obj) {
139: if (name == null)
140: return -1;
141: return name.compareTo(((StringTree) obj).getName());
142: }
143: }
|