package com.sams.jws.chapter15;
/**
 * DocumentUtils
 * Metody pomocnicze umożliwiające pracę z dokumentami JAXM SOAP
 */
import java.util.Iterator;
import javax.xml.soap.SOAPElement;

public class DocumentUtils {
/**
 * Konstruktor prywatny uniemożliwia tworzenie instancji oraz rozszerzeń klas 
 * pomocniczych.
 */
private DocumentUtils() {}
/**
 * findChild
 * Zwraca element SOAPElement reprezentujący bezpośredni węzeł potomny węzła głównego 
 * wskazany w childName. Metoda rozróżnia małe i wielkie litery.
 */
public static SOAPElement findChild(SOAPElement root, String childName) {
    Iterator i = root.getChildElements();
    while (i.hasNext()) {
        SOAPElement soapElement = (SOAPElement) i.next();
        if (soapElement.getElementName().getLocalName().equals(childName))
            return soapElement;
    } 
    return null;
}  // findChild()
/**
 * findValueOfChild
 * Zwraca element SOAPElement reprezentujący bezpośredni węzeł potomny węzła głównego 
 * wskazany w childName. Jeżeli węzeł potomny jest węzłem tekstowym, zwracana jest jego 
 * wartość. W przeciwnym wypadku zwracana jest wartość null.
 *
 * Na przykład dla: <Foo> bar </Foo> gdzie Foo jest korzeniem, zwracana jest wartość 
 * bar.
 * Metoda childName rozróżnia małe i wielkie litery.
 */
public static String findValueOfChild(SOAPElement root, String childName) {
    SOAPElement childElement = findChild(root, childName);
    if (childElement == null) {
        return null;
    }
    return childElement.getValue();
}  // findValueOfChild()
}  // DocumentUtils
