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

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

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

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import net.intelie.liverig.witsml.HeaderElements;
import net.intelie.liverig.witsml.WitsmlFilters;
import net.intelie.liverig.witsml.objects.LogDateTimeIndex;
import net.intelie.liverig.witsml.objects.LogIndex;
import net.intelie.liverig.witsml.objects.LogRange;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

import static net.intelie.liverig.witsml.query.QueryUtil.addFilter;

abstract class AbstractLogQuery131 extends AbstractQuery131 {
    private final String uidWell;
    private final String uidWellbore;
    private final String uid;
    private final WitsmlFilters filters;
    private final LogRange range;
    private final HeaderElements header;
    private final boolean logData;

    AbstractLogQuery131(String uidWell, String uidWellbore, String uid, WitsmlFilters filters, LogRange range, HeaderElements header,
                        boolean logData) {
        Preconditions.checkArgument(header.hasIndex() || range == null);
        this.uidWell = uidWell;
        this.uidWellbore = uidWellbore;
        this.uid = uid;
        this.filters = filters;
        this.range = range;
        this.header = header;
        this.logData = logData;
    }

    boolean hasLogData() {
        return logData;
    }

    @Override
    public String type() {
        return "log";
    }

    @Override
    void query(XMLStreamWriter writer) throws XMLStreamException {
        writeRootElement(writer, "logs");
        writer.writeStartElement(WITSML_NS, "log");
        writer.writeAttribute("uidWell", uidWell);
        writer.writeAttribute("uidWellbore", uidWellbore);
        writer.writeAttribute("uid", Strings.nullToEmpty(uid));
        writer.writeEmptyElement(WITSML_NS, "nameWell");
        writer.writeEmptyElement(WITSML_NS, "nameWellbore");
        writer.writeEmptyElement(WITSML_NS, "name");
        addFilter(writer, WITSML_NS, "objectGrowing", filters.objectGrowing());

        if (header.hasShortHeader()) {
            if (Strings.isNullOrEmpty(filters.objectGrowing()))
                writer.writeEmptyElement(WITSML_NS, "objectGrowing");

            writer.writeEmptyElement(WITSML_NS, "dataRowCount");
            writer.writeEmptyElement(WITSML_NS, "serviceCompany");
            writer.writeEmptyElement(WITSML_NS, "runNumber");
            writer.writeEmptyElement(WITSML_NS, "bhaRunNumber");
            writer.writeEmptyElement(WITSML_NS, "pass");
            writer.writeEmptyElement(WITSML_NS, "creationDate");
            writer.writeEmptyElement(WITSML_NS, "description");
        }

        if (header.hasIndex()) {
            LogIndex index = range instanceof LogIndex ? (LogIndex) range : new LogIndex();
            LogDateTimeIndex dateTimeIndex = range instanceof LogDateTimeIndex ? (LogDateTimeIndex) range : new LogDateTimeIndex();

            if (range instanceof LogIndex && index.getIndexType() != null) {
                writer.writeStartElement(WITSML_NS, "indexType");
                writer.writeCharacters(index.getIndexType().toString());
                writer.writeEndElement();
            } else if (range instanceof LogDateTimeIndex) {
                writer.writeStartElement(WITSML_NS, "indexType");
                writer.writeCharacters("date time");
                writer.writeEndElement();
            } else {
                writer.writeEmptyElement(WITSML_NS, "indexType");
            }

            writer.writeStartElement(WITSML_NS, "startIndex");
            writer.writeAttribute("uom", Strings.nullToEmpty(index.getStartIndexUom()));
            writer.writeCharacters(index.getStartIndex() != null ? index.getStartIndex().toString() : "");
            writer.writeEndElement();
            writer.writeStartElement(WITSML_NS, "endIndex");
            writer.writeAttribute("uom", Strings.nullToEmpty(index.getEndIndexUom()));
            writer.writeCharacters(index.getEndIndex() != null ? index.getEndIndex().toString() : "");
            writer.writeEndElement();

            writer.writeStartElement(WITSML_NS, "stepIncrement");
            writer.writeAttribute("uom", range != null ? Strings.nullToEmpty(range.getStepIncrementUom()) : "");
            writer.writeAttribute("numerator", "");
            writer.writeAttribute("denominator", "");
            if (range != null && range.getStepIncrement() != null)
                writer.writeCharacters(String.valueOf(range.getStepIncrement()));
            writer.writeEndElement();

            writer.writeStartElement(WITSML_NS, "startDateTimeIndex");
            writer.writeCharacters(Strings.nullToEmpty(dateTimeIndex.getStartDateTimeIndex()));
            writer.writeEndElement();
            writer.writeStartElement(WITSML_NS, "endDateTimeIndex");
            writer.writeCharacters(Strings.nullToEmpty(dateTimeIndex.getEndDateTimeIndex()));
            writer.writeEndElement();
        }

        if (header.hasShortHeader()) {
            writer.writeEmptyElement(WITSML_NS, "direction");
            writer.writeEmptyElement(WITSML_NS, "indexCurve");
            writer.writeAttribute("columnIndex", "");
            writer.writeEmptyElement(WITSML_NS, "nullValue");

            writer.writeEmptyElement(WITSML_NS, "logParam");
            writer.writeAttribute("index", "");
            writer.writeAttribute("name", "");
            writer.writeAttribute("uom", "");
            writer.writeAttribute("description", "");
        }

        if (header.hasFullHeader()) {
            writer.writeStartElement(WITSML_NS, "logCurveInfo");
            writer.writeAttribute("uid", "");
            writer.writeEmptyElement(WITSML_NS, "mnemonic");
            writer.writeEmptyElement(WITSML_NS, "classWitsml");
            writer.writeEmptyElement(WITSML_NS, "unit");
            writer.writeEmptyElement(WITSML_NS, "mnemAlias");
            writer.writeEmptyElement(WITSML_NS, "nullValue");
            writer.writeEmptyElement(WITSML_NS, "alternateIndex");
            writer.writeEmptyElement(WITSML_NS, "wellDatum");
            writer.writeAttribute("uidRef", "");
            writer.writeEmptyElement(WITSML_NS, "minIndex");
            writer.writeAttribute("uom", "");
            writer.writeEmptyElement(WITSML_NS, "maxIndex");
            writer.writeAttribute("uom", "");
            writer.writeEmptyElement(WITSML_NS, "minDateTimeIndex");
            writer.writeEmptyElement(WITSML_NS, "maxDateTimeIndex");
            writer.writeEmptyElement(WITSML_NS, "columnIndex");
            writer.writeEmptyElement(WITSML_NS, "curveDescription");
            writer.writeEmptyElement(WITSML_NS, "sensorOffset");
            writer.writeAttribute("uom", "");
            writer.writeEmptyElement(WITSML_NS, "dataSource");
            writer.writeEmptyElement(WITSML_NS, "densData");
            writer.writeAttribute("uom", "");
            writer.writeEmptyElement(WITSML_NS, "traceState");
            writer.writeEmptyElement(WITSML_NS, "traceOrigin");
            writer.writeEmptyElement(WITSML_NS, "typeLogData");
            writer.writeStartElement(WITSML_NS, "axisDefinition");
            writer.writeAttribute("uid", "");
            writer.writeEmptyElement(WITSML_NS, "order");
            writer.writeEmptyElement(WITSML_NS, "count");
            writer.writeEmptyElement(WITSML_NS, "name");
            writer.writeEmptyElement(WITSML_NS, "propertyType");
            writer.writeEmptyElement(WITSML_NS, "uom");
            writer.writeEndElement();
            writer.writeEndElement();
        }

        if (logData) {
            writer.writeStartElement(WITSML_NS, "logData");
            writer.writeEmptyElement(WITSML_NS, "data");
            writer.writeEndElement();
        }

        if (header.hasShortHeader()) {
            writeCommonData(writer);
            writer.writeEmptyElement(WITSML_NS, "customData");
        }
        writer.writeEndElement();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy