summaryrefslogtreecommitdiff
path: root/src/com/memberwebs/ldapxml/LXResults.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/memberwebs/ldapxml/LXResults.java')
-rw-r--r--src/com/memberwebs/ldapxml/LXResults.java123
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