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

net.intelie.liverig.witsml.query.WellboreGeometryQuery 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.*;

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

public interface WellboreGeometryQuery extends RawDataQuery {
    @Override
    WellboreGeometryData parse(WITSMLResult witsmlResult) throws ParseException;

    class Parser extends AbstractParser {
        private final WellboreGeometryData result;

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

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

            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"));

            MeasureValue mdBottom = new MeasureValue();
            mdBottom.setValue(getDouble(getMapOrValue(object, "mdBottom"), "value"));
            mdBottom.setDatum(getString(getMapOrValue(object, "mdBottom"), "datum"));
            mdBottom.setUom(getString(getMapOrValue(object, "mdBottom"), "uom"));
            header.setMdBottom(mdBottom);
            return header;
        }

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

            WellboreGeometryHeader 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 wellboreGeometrySections = result.getData();

            if (wellboreGeometrySections != null) {
                WellboreGeometrySection wellboreGeometrySection = new WellboreGeometrySection();

                wellboreGeometrySection.setUid(getString(data, "uid"));

                MeasureValue mdTop = new MeasureValue();
                mdTop.setValue(getDouble(getMapOrValue(data, "mdTop"), "value"));
                mdTop.setDatum(getString(getMapOrValue(data, "mdTop"), "datum"));
                mdTop.setUom(getString(getMapOrValue(data, "mdTop"), "uom"));

                MeasureValue mdBottom = new MeasureValue();
                mdBottom.setValue(getDouble(getMapOrValue(data, "mdBottom"), "value"));
                mdBottom.setDatum(getString(getMapOrValue(data, "mdBottom"), "datum"));
                mdBottom.setUom(getString(getMapOrValue(data, "mdBottom"), "uom"));

                WellVerticalDepth tvdTop = new WellVerticalDepth();
                tvdTop.setValue(getDouble(getMapOrValue(data, "tvdTop"), "value"));
                tvdTop.setDatum(getString(getMapOrValue(data, "tvdTop"), "datum"));
                tvdTop.setUom(getString(getMapOrValue(data, "tvdTop"), "uom"));

                WellVerticalDepth tvdBottom = new WellVerticalDepth();
                tvdBottom.setValue(getDouble(getMapOrValue(data, "tvdBottom"), "value"));
                tvdBottom.setDatum(getString(getMapOrValue(data, "tvdBottom"), "datum"));
                tvdBottom.setUom(getString(getMapOrValue(data, "tvdBottom"), "uom"));

                wellboreGeometrySection.setMdTop(mdTop);
                wellboreGeometrySection.setMdBottom(mdBottom);
                wellboreGeometrySection.setTvdTop(tvdTop);
                wellboreGeometrySection.setTvdBottom(tvdBottom);

                wellboreGeometrySections.add(wellboreGeometrySection);
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy