summaryrefslogtreecommitdiff
path: root/src/com/memberwebs/ldapxml/LXResults.java
blob: b07d4af01c8bfe594145c527528dfd7998d1344c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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;
}