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

net.intelie.liverig.witsml.query.LogUpdate141 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.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

class LogUpdate141 extends AbstractUpdate implements Constants141 {
    private final LogHeader header;
    private final List> data;

    LogUpdate141(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, "logData");

        List mnemonics = new ArrayList<>(header.getLogCurveInfos().size());
        Map units = new HashMap<>(header.getLogCurveInfos().size());
        for (Map curve : header.getLogCurveInfos()) {
            String mnemonic = getString(curve, "mnemonic");
            String unit = getString(curve, "unit");
            if (!Strings.isNullOrEmpty(mnemonic)) {
                mnemonics.add(mnemonic);
                units.put(mnemonic, unit);
            }
        }

        writer.writeStartElement(WITSML_NS, "mnemonicList");
        for (int i = 0; i < mnemonics.size(); i++) {
            if (i > 0)
                writer.writeCharacters(",");
            writer.writeCharacters(mnemonics.get(i));
        }
        writer.writeEndElement();

        writer.writeStartElement(WITSML_NS, "unitList");
        for (int i = 0; i < mnemonics.size(); i++) {
            if (i > 0)
                writer.writeCharacters(",");
            writer.writeCharacters(units.get(mnemonics.get(i)));
        }
        writer.writeEndElement();

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy