ResultParser.java 2.16 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.day.cq.searchpromote.xml.result;

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 ResultParser {
    private static final String SELECTED_NODE = "selected";
    private XMLInputFactory factory = XMLInputFactory.newInstance();
    private XMLEventReader reader;

    public CustomerResult parse(String resultXml) throws Exception {
        this.reader = this.factory.createXMLEventReader(new StringReader(resultXml));
        CustomerResult customerResult = new CustomerResult();
        ResultParser.getNextEvent(this.reader);
        ResultParser.getNextEvent(this.reader);
        customerResult.parse(this.reader);
        return customerResult;
    }

    public static boolean isSelected(StartElement startElement) {
        Attribute attribute = startElement.getAttributeByName(new QName("selected"));
        return attribute != null && ResultParser.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;
    }

    public static long strToLong(String value) {
        if (value != null && !"".equals(value)) {
            return Long.parseLong(value);
        }
        return 0;
    }

    public static void parseUnknownTag(XMLEventReader reader) throws Exception {
        XMLEvent subElement;
        while (reader.hasNext() && !(subElement = ResultParser.getNextEvent(reader)).isEndElement()) {
            ResultParser.parseUnknownTag(reader);
        }
    }
}