/* * Copyright (c) 2004, Stefan Walter * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * Redistributions in binary form must reproduce the * above copyright notice, this list of conditions and * the following disclaimer in the documentation and/or * other materials provided with the distribution. * * The names of contributors to this software may not be * used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * * CONTRIBUTORS * Stef Walter * */ package com.memberwebs.ldapxml; import java.util.Vector; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; /** * Represents a set of elements retrieved from an LDAP tree * by the LXReader. * * @author stef@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); } /** * Add a single element to these results * * @param el The element to add */ public final void addElement(Element el) { m_elements.add(el); } // 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; }