diff options
Diffstat (limited to 'src/com/memberwebs/ldapxml/LXResults.java')
-rw-r--r-- | src/com/memberwebs/ldapxml/LXResults.java | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/com/memberwebs/ldapxml/LXResults.java b/src/com/memberwebs/ldapxml/LXResults.java new file mode 100644 index 0000000..b07d4af --- /dev/null +++ b/src/com/memberwebs/ldapxml/LXResults.java @@ -0,0 +1,123 @@ +package com.memberwebs.ldapxml; + +import java.util.*; + +import org.w3c.dom.*; + +/** + * Represents a set of elements retrieved from an LDAP tree + * by the LXReader. + * + * @author nielsen@memberwebs.com + * @version 0.5 + */ +public class LXResults +{ + /** + * Construct a new LXResults object + * + * @param doc The owner document for the elements + * @param els The elements + */ + LXResults(Document doc, Vector els, Element root) + { + m_document = doc; + m_elements = els; + m_root = root; + } + + /** + * Get the number of elements + * + * @return The number of elements. + */ + public final int getLength() + { + return m_elements.size(); + } + + /** + * Get a certain element in the results. + * + * @param i The index to the element. + * @return The element. + */ + public final Element getResult(int i) + { + return (Element)m_elements.elementAt(i); + } + + /** + * Get all the elements as an array + * + * @return All the result elements. + */ + public final Element[] getElements() + { + Object[] values = m_elements.toArray(); + Element[] array = new Element[values.length]; + for(int i = 0; i < array.length; i++) + array[i] = (Element)values[i]; + + return array; + } + + /** + * Get the elements' owner document + * + * @return The document. + */ + public final Document getOwnerDocument() + { + return m_document; + } + + /** + * Get the root document element defined in map + * + * @return The root element. + */ + public final Element getRootElement() + { + return m_root; + } + + /** + * Puts together the result set into the result document. + * + * @return The assembled document. + */ + public final Document assembleDocument() + { + while(m_document.hasChildNodes()) + m_document.removeChild(m_document.getFirstChild()); + + Node root = m_root.cloneNode(true); + + for(int i = 0; i < m_elements.size(); i++) + root.appendChild((Element)m_elements.elementAt(i)); + + m_document.appendChild(root); + + return m_document; + } + + /** + * Add the results from another set to this one. + * + * @param results The results to add. + */ + public final void addResults(LXResults results) + { + m_elements.addAll(results.m_elements); + } + + // The elements that make up the results + private Vector m_elements; + + // The parent document of the results + private Document m_document; + + // The root element + private Element m_root; +}
\ No newline at end of file |