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

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

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

import net.intelie.liverig.parser.ParseException;
import net.intelie.liverig.witsml.WITSMLResult;
import net.intelie.liverig.witsml.objects.GeologyInterval;
import net.intelie.liverig.witsml.objects.LogDepthIndex;
import net.intelie.liverig.witsml.objects.MudLogData;
import net.intelie.liverig.witsml.objects.MudLogHeader;

import java.util.List;
import java.util.Map;
import java.util.Objects;

public interface MudLogQuery extends RawDataQuery {
    MudLogData parse(WITSMLResult witsmlResult) throws ParseException;

    class Parser extends AbstractParser {
        private final MudLogData result;

        public Parser(MudLogData result) {
            this.result = result;
        }

        static MudLogHeader getHeader(Map object) {
            MudLogHeader header = new MudLogHeader();

            header.setUidWell(getString(object, "uidWell"));
            header.setUidWellbore(getString(object, "uidWellbore"));
            header.setUid(getString(object, "uid"));
            header.setNameWell(getString(object, "nameWell"));
            header.setNameWellbore(getString(object, "nameWellbore"));
            header.setName(getString(object, "name"));

            LogDepthIndex depth = new LogDepthIndex();
            depth.setStartIndex(getDouble(getMapOrValue(object, "startMd"), "value"));
            depth.setStartIndexUom(getString(getMapOrValue(object, "startMd"), "uom"));
            depth.setStartIndexDatum(getString(getMapOrValue(object, "startMd"), "datum"));
            depth.setEndIndex(getDouble(getMapOrValue(object, "endMd"), "value"));
            depth.setEndIndexUom(getString(getMapOrValue(object, "endMd"), "uom"));
            depth.setEndIndexDatum(getString(getMapOrValue(object, "endMd"), "datum"));
            header.setDepth(depth);

            return header;
        }

        @Override
        protected void event(Map object, Map data) {
            if (!"mudLog".equals(object.get("object")))
                return;

            MudLogHeader header = result.getHeader();
            if (header == null) {
                header = getHeader(object);
                result.setHeader(header);
            } else {
                if (!Objects.equals(header.getUidWell(), getString(object, "uidWell")))
                    return;
                if (!Objects.equals(header.getUidWellbore(), getString(object, "uidWellbore")))
                    return;
                if (!Objects.equals(header.getUid(), getString(object, "uid")))
                    return;
            }

            List geologyIntervals = result.getData();
            if (geologyIntervals != null) {
                GeologyInterval geologyInterval = new GeologyInterval();
                geologyInterval.setUid(getString(data, "uid"));
                geologyInterval.setMdTop(getDouble(getMapOrValue(data, "mdTop"), "value"));
                geologyInterval.setMdTopUom(getString(getMapOrValue(data, "mdTop"), "uom"));
                geologyInterval.setMdTopDatum(getString(getMapOrValue(data, "mdTop"), "datum"));
                geologyInterval.setMdBottom(getDouble(getMapOrValue(data, "mdBottom"), "value"));
                geologyInterval.setMdBottomUom(getString(getMapOrValue(data, "mdBottom"), "uom"));
                geologyInterval.setMdBottomDatum(getString(getMapOrValue(data, "mdBottom"), "datum"));
                geologyIntervals.add(geologyInterval);
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy