/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.configuration.xml;
import org.w3c.dom.*;
import net.java.sip.communicator.util.xml.*;
/**
* Common XML Tasks.
*
* @author Damian Minkov
* @author Emil Ivov
*/
public class XMLConfUtils extends XMLUtils
{
/**
* Returns the element which is at the end of the specified
* String chain. <great...grandparent>...<grandparent>.<parent>.<child>
* @param parent the xml element that is the parent of the root of this
* chain.
* @param chain a String array containing the names of all the child's
* parent nodes.
* @return the node represented by the specified chain
*/
public static Element getChildElementByChain(Element parent,
String[] chain)
{
if(chain == null)
return null;
Element e = parent;
for(int i=0; i<chain.length; i++)
{
if(e == null)
return null;
e = findChild(e, chain[i]);
}
return e;
}
/**
* Creates (only if necessary) and returns the element which is at the end
* of the specified path.
* @param doc the target document where the specified path should be created
* @param path a dot separated string indicating the path to be created
* @return the component at the end of the newly created path.
*/
public static Element createLastPathComponent(Document doc, String[] path)
{
Element parent = (Element)doc.getFirstChild();
if( path == null
|| parent == null
|| doc == null)
throw new IllegalArgumentException(
"Document parent and path must not be null");
Element e = parent;
for(int i=0; i < path.length; i++)
{
Element newEl = findChild(e, path[i]);
if(newEl == null)
{
newEl = doc.createElement(path[i]);
e.appendChild(newEl);
}
e = newEl;
}
return e;
}
}