package net.sf.minuteProject.configuration.bean.xml.impl.dom4j;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Node;
import net.sf.minuteProject.configuration.bean.AbstractConfiguration;
import net.sf.minuteProject.configuration.bean.xml.Document;
import net.sf.minuteProject.configuration.bean.xml.Element;
public class DocumentDom4j extends AbstractConfiguration implements Document{
private org.dom4j.Document document;
private List<Element> elements;
public DocumentDom4j (org.dom4j.Document document) {
this.document = document;
treeWalkWithParent (document.getRootElement());
}
public List<Element> getElements() {
if (elements == null)
elements = new ArrayList<Element>();
return elements;
}
public Element getFirstElementByNameAttribute (String elementName) {
for (Element element : elements) {
if (element.getNameAttributeValue()!=null &&
element.getNameAttributeValue().equals(elementName))
return element;
}
return null;
}
public Element getFirstComplexTypeElementByNameAttribute (String elementName) {
for (Element element : elements) {
if (element.getNameAttributeValue()!=null &&
element.isComplexType() &&
element.getNameAttributeValue().equals(elementName))
return element;
}
return null;
}
public void treeWalkWithParent(org.dom4j.Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof org.dom4j.Element ) {
org.dom4j.Element ele = (org.dom4j.Element)node;
ElementDom4j elementDom4jParent = new ElementDom4j(element);
ElementDom4j elementDom4j = new ElementDom4j(ele);
elementDom4j.setParentElement((Element)elementDom4jParent);
getElements().add(elementDom4j);
treeWalkWithParent( ele);
}
}
}
}