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

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

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

import com.google.common.base.Strings;
import net.intelie.liverig.parser.ParseException;
import net.intelie.liverig.witsml.WITSMLResult;
import net.intelie.liverig.witsml.objects.ApiVers;
import net.intelie.liverig.witsml.objects.CapServer;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

public interface CapabilityQuery extends Query {
    List parse(WITSMLResult witsmlResult) throws ParseException;

    class Parser extends AbstractParser {
        private final List result;
        private final ApiVers version;

        public Parser(List result, ApiVers version) {
            this.result = result;
            this.version = version;
        }

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

            CapServer entry = new CapServer(version);
            entry.setName(getString(object, "name"));
            entry.setVersion(getString(object, "version"));
            entry.setVendor(getString(object, "vendor"));

            List listOfFunctions = getListOrEmpty(object, "functions");
            Map> map = new HashMap<>();
            listOfFunctions.stream()
                    .filter(o -> o instanceof Map)
                    .map(o -> (Map) o)
                    .forEach(o -> {
                                String name = Strings.nullToEmpty(getString(o, "name")).replace("WMLS_", "");
                                if (!Strings.isNullOrEmpty(name)) {
                                    List dataObjects = getListOrEmpty(o, "dataObjects").stream()
                                            .map(o1 -> (String) ((o1 instanceof String) ? o1 : (o1 instanceof Map) ? getString((Map) o1, "value") : null))
                                            .filter(Objects::nonNull)
                                            .collect(Collectors.toList());
                                    map.put(name, dataObjects);
                                }
                            }
                    );
            entry.setFunctions(map);
            result.add(entry);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy