StAXParser.java 1.88 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.day.cq.searchpromote.xml;

import com.day.cq.searchpromote.xml.result.CustomerResult;
import java.io.Reader;
import java.io.StringReader;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

public class StAXParser {
    private static final String SELECTED_NODE = "selected";
    private XMLEventReader reader;

    public StAXParser(String resultXML) throws Exception {
        XMLInputFactory f = XMLInputFactory.newInstance();
        f.setProperty("javax.xml.stream.isSupportingExternalEntities", Boolean.FALSE);
        f.setProperty("javax.xml.stream.supportDTD", Boolean.FALSE);
        this.reader = f.createXMLEventReader(new StringReader(resultXML));
    }

    public CustomerResult parse() throws Exception {
        StAXParser.getNextEvent(this.reader);
        StAXParser.getNextEvent(this.reader);
        CustomerResult customerResult = new CustomerResult();
        customerResult.parse(this.reader);
        return customerResult;
    }

    public static boolean isSelected(StartElement startElement) {
        Attribute attribute = startElement.getAttributeByName(new QName("selected"));
        return attribute != null && StAXParser.strToBool(attribute.getValue());
    }

    public static XMLEvent getNextEvent(XMLEventReader reader) throws XMLStreamException {
        XMLEvent event = null;
        while (reader.hasNext() && (event = reader.nextEvent()).isCharacters()) {
        }
        return event;
    }

    public static boolean strToBool(String value) {
        if (value != null && value.equals("1") || value.toLowerCase().equals("true")) {
            return true;
        }
        return false;
    }
}