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

net.intelie.liverig.witsml.StoreSoapPortService Maven / Gradle / Ivy

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

import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.witsml.wsdl._120.StoreSoapPort;

import javax.jws.WebService;
import javax.xml.ws.Holder;

import static net.intelie.liverig.witsml.WITSMLException.SUCCESS;
import static net.intelie.liverig.witsml.WITSMLException.UNKNOWN_PROGRAM_ERROR;

@WebService(targetNamespace = "http://www.witsml.org/wsdl/120",
        serviceName = "WMLS", portName = "StoreSoapPort",
        wsdlLocation = "wsdl/witsml-1.2.0.wsdl",
        endpointInterface = "org.witsml.wsdl._120.StoreSoapPort")
public class StoreSoapPortService implements StoreSoapPort {
    private static final Logger LOGGER = LoggerFactory.getLogger(StoreSoapPortService.class);

    private final StoreSoapPortInterface impl;

    public StoreSoapPortService() {
        this(null);
    }

    public StoreSoapPortService(StoreSoapPortInterface impl) {
        this.impl = impl;
    }

    @Override
    public Short wmlsAddToStore(String wmLtypeIn, String xmLin, String optionsIn, String capabilitiesIn,
                                Holder suppMsgOut) {
        try {
            checkState();
            return success(suppMsgOut, impl.addToStore(wmLtypeIn, xmLin, optionsIn, capabilitiesIn));
        } catch (Exception e) {
            return error(e, suppMsgOut);
        }
    }

    @Override
    public Short wmlsDeleteFromStore(String wmLtypeIn, String queryIn, String optionsIn, String capabilitiesIn,
                                     Holder suppMsgOut) {
        try {
            checkState();
            impl.deleteFromStore(wmLtypeIn, queryIn, optionsIn, capabilitiesIn);
            return success(suppMsgOut);
        } catch (Exception e) {
            return error(e, suppMsgOut);
        }
    }

    @Override
    public String wmlsGetBaseMsg(short returnValueIn) {
        checkState();
        return impl.getBaseMsg(returnValueIn);
    }

    @Override
    public Short wmlsGetCap(String optionsIn,
                            Holder capabilitiesOut, Holder suppMsgOut) {
        try {
            checkState();
            return success(suppMsgOut, capabilitiesOut, impl.getCap(optionsIn));
        } catch (Exception e) {
            return error(e, suppMsgOut, capabilitiesOut);
        }
    }

    @Override
    public Short wmlsGetFromStore(String wmLtypeIn, String queryIn, String optionsIn, String capabilitiesIn,
                                  Holder xmLout, Holder suppMsgOut) {
        try {
            checkState();
            return success(suppMsgOut, xmLout, impl.getFromStore(wmLtypeIn, queryIn, optionsIn, capabilitiesIn));
        } catch (Exception e) {
            return error(e, suppMsgOut, xmLout);
        }
    }

    @Override
    public String wmlsGetVersion() {
        checkState();
        return impl.getVersion();
    }

    @Override
    public Short wmlsUpdateInStore(String wmLtypeIn, String xmLin, String optionsIn, String capabilitiesIn,
                                   Holder suppMsgOut) {
        try {
            checkState();
            impl.updateInStore(wmLtypeIn, xmLin, optionsIn, capabilitiesIn);
            return success(suppMsgOut);
        } catch (Exception e) {
            return error(e, suppMsgOut);
        }
    }

    private void checkState() {
        Preconditions.checkState(impl != null, "Using default initialized StoreSoapPortService");
    }

    private static short success(Holder suppMsgOut, Holder out, WITSMLResult value) {
        success(suppMsgOut, out, value.getXml());
        return value.getResult();
    }

    private static short success(Holder suppMsgOut, Holder out, String value) {
        out.value = Strings.nullToEmpty(value);
        return success(suppMsgOut);
    }

    private static short success(Holder suppMsgOut, String value) {
        suppMsgOut.value = Strings.nullToEmpty(value);
        return SUCCESS;
    }

    private static short success(Holder suppMsgOut) {
        return success(suppMsgOut, "");
    }

    private static short error(Throwable t, Holder suppMsgOut, Holder out) {
        out.value = "";
        return error(t, suppMsgOut);
    }

    private static short error(Throwable t, Holder suppMsgOut) {
        suppMsgOut.value = Strings.nullToEmpty(t.getMessage());
        log(t);
        return t instanceof WITSMLException ? ((WITSMLException) t).getReturnValue() : UNKNOWN_PROGRAM_ERROR;
    }

    private static void log(Throwable t) {
        if (!(t instanceof WITSMLException) || ((WITSMLException) t).getReturnValue() == UNKNOWN_PROGRAM_ERROR)
            LOGGER.error("Unexpected exception", t);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy