Search in sources :

Example 1 with SensorDescriptionType

use of net.opengis.swes.x20.SensorDescriptionType in project arctic-sea by 52North.

the class SwesDecoderv20 method parseUpdateSensorDescription.

/**
 * parses the Xmlbeans UpdateSensorDescription document to a SOS request.
 *
 * @param xbUpSenDoc
 *            UpdateSensorDescription document
 * @return SOS UpdateSensor request
 *
 * @throws DecodingException
 *             * if an error occurs.
 */
private OwsServiceRequest parseUpdateSensorDescription(final UpdateSensorDescriptionDocument xbUpSenDoc) throws DecodingException {
    final UpdateSensorRequest request = new UpdateSensorRequest();
    final UpdateSensorDescriptionType xbUpdateSensor = xbUpSenDoc.getUpdateSensorDescription();
    request.setService(xbUpdateSensor.getService());
    request.setVersion(xbUpdateSensor.getVersion());
    request.setProcedureIdentifier(xbUpdateSensor.getProcedure());
    request.setProcedureDescriptionFormat(xbUpdateSensor.getProcedureDescriptionFormat());
    // extensions
    request.setExtensions(parseExtensibleRequest(xbUpdateSensor));
    for (final Description description : xbUpdateSensor.getDescriptionArray()) {
        SensorDescriptionType sensorDescription = description.getSensorDescription();
        try {
            // TODO exception if valid time is set
            final XmlObject xmlObject = XmlObject.Factory.parse(getNodeFromNodeList(sensorDescription.getData().getDomNode().getChildNodes()));
            Decoder<?, XmlObject> decoder = getDecoder(getDecoderKey(xmlObject));
            if (decoder == null) {
                throw new DecodingException(UpdateSensorDescriptionParams.procedureDescriptionFormat, "The requested procedureDescritpionFormat is not supported!");
            }
            final Object decodedObject = decoder.decode(xmlObject);
            SosProcedureDescription<?> sosProcedureDescription = null;
            if (decodedObject instanceof SosProcedureDescription) {
                sosProcedureDescription = (SosProcedureDescription) decodedObject;
            } else if (decodedObject instanceof AbstractFeature) {
                sosProcedureDescription = new SosProcedureDescription<>((AbstractFeature) decodedObject);
            }
            if (sosProcedureDescription != null) {
                if (sensorDescription.isSetValidTime()) {
                    sosProcedureDescription.setValidTime(getValidTime(sensorDescription.getValidTime()));
                }
            }
            request.addProcedureDescriptionString(sosProcedureDescription);
        } catch (final XmlException xmle) {
            throw new DecodingException("Error while parsing procedure description of UpdateSensor request!", xmle);
        }
    }
    return request;
}
Also used : UpdateSensorDescriptionType(net.opengis.swes.x20.UpdateSensorDescriptionType) UpdateSensorRequest(org.n52.shetland.ogc.sos.request.UpdateSensorRequest) SosProcedureDescription(org.n52.shetland.ogc.sos.SosProcedureDescription) Description(net.opengis.swes.x20.UpdateSensorDescriptionType.Description) XmlException(org.apache.xmlbeans.XmlException) SosProcedureDescription(org.n52.shetland.ogc.sos.SosProcedureDescription) AbstractFeature(org.n52.shetland.ogc.gml.AbstractFeature) XmlObject(org.apache.xmlbeans.XmlObject) DecodingException(org.n52.svalbard.decode.exception.DecodingException) OwsServiceCommunicationObject(org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject) XmlObject(org.apache.xmlbeans.XmlObject) SensorDescriptionType(net.opengis.swes.x20.SensorDescriptionType) UpdateSensorDescriptionType(net.opengis.swes.x20.UpdateSensorDescriptionType)

Example 2 with SensorDescriptionType

use of net.opengis.swes.x20.SensorDescriptionType in project arctic-sea by 52North.

the class DescribeSensorResponseEncoder method create.

@Override
protected XmlObject create(DescribeSensorResponse response) throws EncodingException {
    DescribeSensorResponseDocument doc = DescribeSensorResponseDocument.Factory.newInstance(getXmlOptions());
    DescribeSensorResponseType dsr = doc.addNewDescribeSensorResponse();
    dsr.setProcedureDescriptionFormat(response.getOutputFormat());
    for (SosProcedureDescription<?> sosProcedureDescription : response.getProcedureDescriptions()) {
        SensorDescriptionType sensorDescription = dsr.addNewDescription().addNewSensorDescription();
        sensorDescription.addNewData().set(getSensorDescription(response, sosProcedureDescription));
        if (sosProcedureDescription.isSetValidTime()) {
            XmlObject xoValidTime = encodeObjectToXml(GmlConstants.NS_GML_32, sosProcedureDescription.getValidTime());
            XmlObject substitution = sensorDescription.addNewValidTime().addNewAbstractTimeGeometricPrimitive().substitute(GmlHelper.getGml321QnameForITime(sosProcedureDescription.getValidTime()), xoValidTime.schemaType());
            substitution.set(xoValidTime);
        }
    }
    // in a single observation the gml:ids must be unique
    if (response.getProcedureDescriptions().size() > 1) {
        XmlHelper.makeGmlIdsUnique(doc.getDomNode());
    }
    return doc;
}
Also used : DescribeSensorResponseDocument(net.opengis.swes.x20.DescribeSensorResponseDocument) DescribeSensorResponseType(net.opengis.swes.x20.DescribeSensorResponseType) XmlObject(org.apache.xmlbeans.XmlObject) SensorDescriptionType(net.opengis.swes.x20.SensorDescriptionType)

Aggregations

SensorDescriptionType (net.opengis.swes.x20.SensorDescriptionType)2 XmlObject (org.apache.xmlbeans.XmlObject)2 DescribeSensorResponseDocument (net.opengis.swes.x20.DescribeSensorResponseDocument)1 DescribeSensorResponseType (net.opengis.swes.x20.DescribeSensorResponseType)1 UpdateSensorDescriptionType (net.opengis.swes.x20.UpdateSensorDescriptionType)1 Description (net.opengis.swes.x20.UpdateSensorDescriptionType.Description)1 XmlException (org.apache.xmlbeans.XmlException)1 AbstractFeature (org.n52.shetland.ogc.gml.AbstractFeature)1 OwsServiceCommunicationObject (org.n52.shetland.ogc.ows.service.OwsServiceCommunicationObject)1 SosProcedureDescription (org.n52.shetland.ogc.sos.SosProcedureDescription)1 UpdateSensorRequest (org.n52.shetland.ogc.sos.request.UpdateSensorRequest)1 DecodingException (org.n52.svalbard.decode.exception.DecodingException)1