/*******************************************************************************
* Copyright (c) 2007 Jeff Mesnil
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package net.jmesnil.jmx.ui.internal.tree;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
public class NodeBuilder {
public static void addToList(Node root, ObjectName on) {
Node node = buildDomainNode(root, on.getDomain());
node = buildObjectNameNode(node, "on", on.getKeyPropertyListString(), on); //$NON-NLS-1$
}
public static void addToTree(Node root, ObjectName on) {
Node node = buildDomainNode(root, on.getDomain());
String keyPropertyListString = on.getKeyPropertyListString();
String[] properties = keyPropertyListString.split(","); //$NON-NLS-1$
for (int i = 0; i < properties.length; i++) {
String property = properties[i];
String key = property.substring(0, property.indexOf('='));
String value = property.substring(property.indexOf('=') + 1,
property.length());
if (i == properties.length - 1) {
node = buildObjectNameNode(node, key, value, on);
} else {
node = buildPropertyNode(node, key, value);
}
}
}
public static Node createRoot(MBeanServerConnection mbsc) {
return new Root(mbsc);
}
static Node buildDomainNode(Node parent, String domain) {
Node n = new DomainNode(parent, domain);
if (parent != null) {
return parent.addChildren(n);
}
return n;
}
static Node buildPropertyNode(Node parent, String key, String value) {
Node n = new PropertyNode(parent, key, value);
if (parent != null) {
return parent.addChildren(n);
}
return n;
}
static Node buildObjectNameNode(Node parent, String key, String value,
ObjectName on) {
Node n = new ObjectNameNode(parent, key, value, on);
if (parent != null) {
return parent.addChildren(n);
}
return n;
}
}