All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.intelie.liverig.witsml.query.AbstractQuery Maven / Gradle / Ivy

The newest version!
package net.intelie.liverig.witsml.query;

import com.google.common.base.Strings;
import net.intelie.liverig.metadata.Metadata;
import net.intelie.liverig.parser.MultiMapEventBuilder;
import net.intelie.liverig.parser.ParseException;
import net.intelie.liverig.parser.Parser;
import net.intelie.liverig.parser.ParserFactory;
import net.intelie.liverig.util.XMLOutputFactoryFactory;
import net.intelie.liverig.util.XMLStreamWriterAutoCloseable;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;

abstract class AbstractQuery implements Query {
    @Override
    public String query() {
        StringWriter sw = new StringWriter();
        try (XMLStreamWriterAutoCloseable ac = XMLOutputFactoryFactory.createXMLStreamWriter(sw)) {
            XMLStreamWriter writer = ac.get();
            query(writer);
            writer.writeEndDocument();
        } catch (XMLStreamException e) {
            throw new RuntimeException(e);
        }
        return sw.toString();
    }

    abstract void query(XMLStreamWriter writer) throws XMLStreamException;

    protected static Parser getParser() throws ParseException {
        Metadata metadata = new Metadata();
        metadata.source_protocol_name = "witsml";
        return ParserFactory.getParser(metadata);
    }

    static void parse(String xml, MultiMapEventBuilder.EventOutput eventOutput) throws ParseException {
        if (Strings.isNullOrEmpty(xml))
            throw new ParseEmptyException("Empty response to WITSML query");

        try {
            Parser parser = getParser();
            parser.setVerbose(true);
            parser.parse(new StringReader(xml), new MultiMapEventBuilder(eventOutput));
        } catch (IOException e) {
            throw new ParseException(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy