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

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

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

import com.google.common.base.Strings;
import net.intelie.liverig.witsml.objects.LogHeader;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;

import static net.intelie.liverig.witsml.query.AbstractQuery131.writeRootElement;
import static net.intelie.liverig.witsml.query.Query.AbstractParser.getString;

class LogUpdate131 extends AbstractUpdate implements Constants131 {
    private final LogHeader header;
    private final List> data;

    LogUpdate131(LogHeader header, List> data) {
        this.header = header;
        this.data = data;
    }

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

    @Override
    public String options() {
        return "";
    }

    @Override
    public void xml(XMLStreamWriter writer) throws XMLStreamException {
        writeRootElement(writer, "logs");
        writer.writeStartElement(WITSML_NS, "log");
        writer.writeAttribute("uidWell", header.getUidWell());
        writer.writeAttribute("uidWellbore", header.getUidWellbore());
        writer.writeAttribute("uid", header.getUid());

        writer.writeStartElement(WITSML_NS, "indexType");
        writer.writeCharacters(header.getIndexType());
        writer.writeEndElement();

        String indexCurveColumnIndex = null;
        for (Map logCurveInfo : header.getLogCurveInfos()) {
            if (header.getIndexCurve().equalsIgnoreCase(getString(logCurveInfo, "mnemonic"))) {
                indexCurveColumnIndex = getString(logCurveInfo, "columnIndex");
                break;
            }
        }

        if (indexCurveColumnIndex != null) {
            writer.writeStartElement(WITSML_NS, "indexCurve");
            writer.writeAttribute("columnIndex", indexCurveColumnIndex);
            writer.writeCharacters(header.getIndexCurve());
            writer.writeEndElement();
        }

        SortedMap mnemonics = new TreeMap<>();
        for (Map logCurveInfo : header.getLogCurveInfos()) {
            String uid = Strings.nullToEmpty(getString(logCurveInfo, "uid"));
            String mnemonic = Strings.nullToEmpty(getString(logCurveInfo, "mnemonic"));
            String unit = Strings.nullToEmpty(getString(logCurveInfo, "unit"));
            String columnIndex = Strings.nullToEmpty(getString(logCurveInfo, "columnIndex"));
            String typeLogData = Strings.nullToEmpty(getString(logCurveInfo, "typeLogData"));

            mnemonics.put(Integer.valueOf(columnIndex), mnemonic);

            writer.writeStartElement(WITSML_NS, "logCurveInfo");
            writer.writeAttribute("uid", uid);
            writer.writeStartElement(WITSML_NS, "mnemonic");
            writer.writeCharacters(mnemonic);
            writer.writeEndElement();
            writer.writeStartElement(WITSML_NS, "unit");
            writer.writeCharacters(unit);
            writer.writeEndElement();
            writer.writeStartElement(WITSML_NS, "columnIndex");
            writer.writeCharacters(columnIndex);
            writer.writeEndElement();
            writer.writeStartElement(WITSML_NS, "typeLogData");
            writer.writeCharacters(typeLogData);
            writer.writeEndElement();
            writer.writeEndElement();
        }

        int last = mnemonics.lastKey();

        writer.writeStartElement(WITSML_NS, "logData");
        for (Map row : data) {
            writer.writeStartElement(WITSML_NS, "data");
            for (int i = 1; i <= last; i++) {
                if (i > 1)
                    writer.writeCharacters(",");
                Object value = row.get(mnemonics.get(i));
                writer.writeCharacters(value != null ? value.toString() : "");
            }
            writer.writeEndElement();
        }
        writer.writeEndElement();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy