Search in sources :

Example 6 with UnsupportedEncoderInputException

use of org.n52.svalbard.encode.exception.UnsupportedEncoderInputException in project arctic-sea by 52North.

the class GmlEncoderv311 method createPosition.

private XmlObject createPosition(Geometry geom, Optional<Object> optional) throws UnsupportedEncoderInputException {
    String gmlId = (optional != null && optional.isPresent() && optional.get() instanceof String) ? (String) optional.get() : null;
    if (geom instanceof Point) {
        PointType xbPoint = PointType.Factory.newInstance(getXmlOptions());
        if (gmlId != null) {
            xbPoint.setId(geom.getGeometryType() + "_" + gmlId);
        }
        createPointFromJtsGeometry((Point) geom, xbPoint);
        return xbPoint;
    } else if (geom instanceof LineString) {
        LineStringType xbLineString = LineStringType.Factory.newInstance(getXmlOptions());
        if (gmlId != null) {
            xbLineString.setId(geom.getGeometryType() + "_" + gmlId);
        }
        createLineStringFromJtsGeometry((LineString) geom, xbLineString);
        return xbLineString;
    } else if (geom instanceof Polygon) {
        PolygonType xbPolygon = PolygonType.Factory.newInstance(getXmlOptions());
        if (gmlId != null) {
            xbPolygon.setId(geom.getGeometryType() + "_" + gmlId);
        }
        createPolygonFromJtsGeometry((Polygon) geom, xbPolygon);
        return xbPolygon;
    } else {
        throw new UnsupportedEncoderInputException(this, geom);
    }
}
Also used : LineString(org.locationtech.jts.geom.LineString) PointType(net.opengis.gml.PointType) PolygonType(net.opengis.gml.PolygonType) LineString(org.locationtech.jts.geom.LineString) Point(org.locationtech.jts.geom.Point) LineStringType(net.opengis.gml.LineStringType) Polygon(org.locationtech.jts.geom.Polygon) UnsupportedEncoderInputException(org.n52.svalbard.encode.exception.UnsupportedEncoderInputException)

Example 7 with UnsupportedEncoderInputException

use of org.n52.svalbard.encode.exception.UnsupportedEncoderInputException in project arctic-sea by 52North.

the class GmlEncoderv311 method encode.

@Override
public XmlObject encode(Object element, EncodingContext ctx) throws EncodingException {
    XmlObject encodedObject = null;
    if (element instanceof Time) {
        encodedObject = createTime((Time) element, ctx);
    } else if (element instanceof Geometry) {
        encodedObject = createPosition((Geometry) element, ctx.get(XmlBeansEncodingFlags.GMLID));
    } else if (element instanceof CategoryValue) {
        encodedObject = createReferenceTypeForCategroyValue((CategoryValue) element);
    } else if (element instanceof org.n52.shetland.ogc.gml.ReferenceType) {
        encodedObject = createReferencType((org.n52.shetland.ogc.gml.ReferenceType) element);
    } else if (element instanceof CodeWithAuthority) {
        encodedObject = createCodeWithAuthorityType((CodeWithAuthority) element);
    } else if (element instanceof QuantityValue) {
        encodedObject = createMeasureType((QuantityValue) element);
    } else if (element instanceof org.n52.shetland.ogc.gml.CodeType) {
        encodedObject = createCodeType((org.n52.shetland.ogc.gml.CodeType) element);
    } else if (element instanceof AbstractFeature) {
        encodedObject = createFeature((AbstractFeature) element);
    } else if (element instanceof ReferencedEnvelope) {
        encodedObject = createEnvelope((ReferencedEnvelope) element);
    } else if (element instanceof EnvelopeOrGeometry) {
        EnvelopeOrGeometry geom = (EnvelopeOrGeometry) element;
        if (geom.getGeometry().isPresent()) {
            encodedObject = createPosition(geom.getGeometry().get(), ctx.get(XmlBeansEncodingFlags.GMLID));
        } else if (geom.getEnvelope().isPresent()) {
            encodedObject = createEnvelope(geom.getEnvelope().get());
        } else {
            throw new UnsupportedEncoderInputException(this, element);
        }
    } else if (element instanceof GenericMetaData) {
        encodedObject = createGenericMetaData((GenericMetaData) element, ctx);
    } else {
        throw new UnsupportedEncoderInputException(this, element);
    }
    XmlHelper.validateDocument(encodedObject, EncodingException::new);
    return encodedObject;
}
Also used : GenericMetaData(org.n52.shetland.ogc.gml.GenericMetaData) EncodingException(org.n52.svalbard.encode.exception.EncodingException) AbstractFeature(org.n52.shetland.ogc.gml.AbstractFeature) Time(org.n52.shetland.ogc.gml.time.Time) UnsupportedEncoderInputException(org.n52.svalbard.encode.exception.UnsupportedEncoderInputException) Geometry(org.locationtech.jts.geom.Geometry) EnvelopeOrGeometry(org.n52.shetland.util.EnvelopeOrGeometry) ReferencedEnvelope(org.n52.shetland.util.ReferencedEnvelope) EnvelopeOrGeometry(org.n52.shetland.util.EnvelopeOrGeometry) QuantityValue(org.n52.shetland.ogc.om.values.QuantityValue) CategoryValue(org.n52.shetland.ogc.om.values.CategoryValue) CodeType(net.opengis.gml.CodeType) XmlObject(org.apache.xmlbeans.XmlObject) CodeWithAuthority(org.n52.shetland.ogc.gml.CodeWithAuthority)

Example 8 with UnsupportedEncoderInputException

use of org.n52.svalbard.encode.exception.UnsupportedEncoderInputException in project arctic-sea by 52North.

the class GmlEncoderv311 method createFeature.

private XmlObject createFeature(AbstractFeature sosAbstractFeature) throws EncodingException {
    if (sosAbstractFeature instanceof SamplingFeature) {
        SamplingFeature sampFeat = (SamplingFeature) sosAbstractFeature;
        if (sosAbstractFeature.isSetGmlID()) {
            FeaturePropertyType featureProperty = FeaturePropertyType.Factory.newInstance(getXmlOptions());
            featureProperty.setHref("#" + sosAbstractFeature.getGmlId());
            return featureProperty;
        } else {
            if (!sampFeat.isSetGeometry()) {
                FeaturePropertyType featureProperty = FeaturePropertyType.Factory.newInstance(getXmlOptions());
                featureProperty.setHref(sosAbstractFeature.getIdentifierCodeWithAuthority().getValue());
                if (sampFeat.isSetName()) {
                    featureProperty.setTitle(sampFeat.getFirstName().getValue());
                }
                return featureProperty;
            }
            StringBuilder builder = new StringBuilder();
            builder.append("sf_");
            builder.append(JavaHelper.generateID(sosAbstractFeature.getIdentifierCodeWithAuthority().getValue()));
            sosAbstractFeature.setGmlId(builder.toString());
            Encoder<XmlObject, SamplingFeature> encoder = getEncoder(SfConstants.NS_SA, sampFeat);
            return encoder.encode(sampFeat);
        }
    } else if (sosAbstractFeature instanceof FeatureCollection) {
        return createFeatureCollection((FeatureCollection) sosAbstractFeature);
    }
    throw new UnsupportedEncoderInputException(this, sosAbstractFeature);
}
Also used : FeatureCollection(org.n52.shetland.ogc.om.features.FeatureCollection) SamplingFeature(org.n52.shetland.ogc.om.features.samplingFeatures.SamplingFeature) XmlObject(org.apache.xmlbeans.XmlObject) FeaturePropertyType(net.opengis.gml.FeaturePropertyType) UnsupportedEncoderInputException(org.n52.svalbard.encode.exception.UnsupportedEncoderInputException)

Example 9 with UnsupportedEncoderInputException

use of org.n52.svalbard.encode.exception.UnsupportedEncoderInputException in project arctic-sea by 52North.

the class GmlEncoderv321 method createPosition.

private XmlObject createPosition(Geometry geom, EncodingContext ctx) throws EncodingException {
    String foiId = ctx.<String>get(XmlBeansEncodingFlags.GMLID).orElse(null);
    if (geom instanceof Point) {
        PointType xbPoint = PointType.Factory.newInstance(getXmlOptions());
        xbPoint.setId(getGmlID(geom, foiId));
        createPointFromJtsGeometry((Point) geom, xbPoint);
        if (ctx.has(XmlBeansEncodingFlags.DOCUMENT)) {
            PointDocument xbPointDoc = PointDocument.Factory.newInstance(getXmlOptions());
            xbPointDoc.setPoint(xbPoint);
            return xbPointDoc;
        } else if (ctx.has(XmlBeansEncodingFlags.PROPERTY_TYPE)) {
            GeometryPropertyType geometryPropertyType = GeometryPropertyType.Factory.newInstance(getXmlOptions());
            geometryPropertyType.setAbstractGeometry(xbPoint);
            geometryPropertyType.getAbstractGeometry().substitute(GmlConstants.QN_POINT_32, PointType.type);
            return geometryPropertyType;
        }
        return xbPoint;
    } else if (geom instanceof LineString) {
        LineStringType xbLineString = LineStringType.Factory.newInstance(getXmlOptions());
        xbLineString.setId(getGmlID(geom, foiId));
        createLineStringFromJtsGeometry((LineString) geom, xbLineString);
        if (ctx.has(XmlBeansEncodingFlags.DOCUMENT)) {
            LineStringDocument xbLineStringDoc = LineStringDocument.Factory.newInstance(getXmlOptions());
            xbLineStringDoc.setLineString(xbLineString);
            return xbLineStringDoc;
        } else if (ctx.has(XmlBeansEncodingFlags.PROPERTY_TYPE)) {
            GeometryPropertyType geometryPropertyType = GeometryPropertyType.Factory.newInstance(getXmlOptions());
            geometryPropertyType.setAbstractGeometry(xbLineString);
            geometryPropertyType.getAbstractGeometry().substitute(GmlConstants.QN_LINESTRING_32, LineStringType.type);
            return geometryPropertyType;
        }
        return xbLineString;
    } else if (geom instanceof MultiLineString) {
        MultiCurveType xbMultiCurve = MultiCurveType.Factory.newInstance(getXmlOptions());
        xbMultiCurve.setId(getGmlID(geom, foiId));
        xbMultiCurve.setSrsName(getSrsName(geom));
        for (int i = 0; i < geom.getNumGeometries(); ++i) {
            Geometry lineString = geom.getGeometryN(i);
            LineStringType xbLineString = LineStringType.Factory.newInstance(getXmlOptions());
            xbLineString.setId(getGmlID(geom, foiId));
            xbLineString.addNewPosList().setStringValue(JTSHelper.getCoordinatesString(lineString));
            CurvePropertyType xbCurveMember = xbMultiCurve.addNewCurveMember();
            xbCurveMember.addNewAbstractCurve().set(xbLineString);
            XmlHelper.substituteElement(xbCurveMember.getAbstractCurve(), xbLineString);
        }
        if (ctx.has(XmlBeansEncodingFlags.DOCUMENT)) {
            MultiCurveDocument xbMultiCurveDoc = MultiCurveDocument.Factory.newInstance(getXmlOptions());
            xbMultiCurveDoc.setMultiCurve(xbMultiCurve);
            return xbMultiCurveDoc;
        } else if (ctx.has(XmlBeansEncodingFlags.PROPERTY_TYPE)) {
            GeometryPropertyType xbGeometryProperty = GeometryPropertyType.Factory.newInstance(getXmlOptions());
            xbGeometryProperty.addNewAbstractGeometry().set(xbMultiCurve);
            XmlHelper.substituteElement(xbGeometryProperty.getAbstractGeometry(), xbMultiCurve);
            return xbGeometryProperty;
        } else {
            return xbMultiCurve;
        }
    } else if (geom instanceof Polygon) {
        PolygonType xbPolygon = PolygonType.Factory.newInstance(getXmlOptions());
        xbPolygon.setId(getGmlID(geom, foiId));
        createPolygonFromJtsGeometry((Polygon) geom, xbPolygon);
        if (ctx.has(XmlBeansEncodingFlags.DOCUMENT)) {
            PolygonDocument xbPolygonDoc = PolygonDocument.Factory.newInstance(getXmlOptions());
            xbPolygonDoc.setPolygon(xbPolygon);
            return xbPolygonDoc;
        } else if (ctx.has(XmlBeansEncodingFlags.PROPERTY_TYPE)) {
            GeometryPropertyType geometryPropertyType = GeometryPropertyType.Factory.newInstance(getXmlOptions());
            geometryPropertyType.setAbstractGeometry(xbPolygon);
            geometryPropertyType.getAbstractGeometry().substitute(GmlConstants.QN_POLYGON_32, PolygonType.type);
            return geometryPropertyType;
        }
        return xbPolygon;
    } else if (geom instanceof MultiPoint) {
        MultiPointType xbMultiPoint = MultiPointType.Factory.newInstance(getXmlOptions());
        String id = getGmlID(geom, foiId);
        xbMultiPoint.setId(id);
        createMultiPointFromJtsGeometry((MultiPoint) geom, xbMultiPoint, id);
        if (ctx.has(XmlBeansEncodingFlags.DOCUMENT)) {
            MultiPointDocument xbMultiPointDoc = MultiPointDocument.Factory.newInstance(getXmlOptions());
            xbMultiPointDoc.setMultiPoint(xbMultiPoint);
            return xbMultiPointDoc;
        } else if (ctx.has(XmlBeansEncodingFlags.PROPERTY_TYPE)) {
            GeometryPropertyType geometryPropertyType = GeometryPropertyType.Factory.newInstance(getXmlOptions());
            geometryPropertyType.setAbstractGeometry(xbMultiPoint);
            geometryPropertyType.getAbstractGeometry().substitute(GmlConstants.QN_MULTI_POINT_32, PolygonType.type);
            return geometryPropertyType;
        }
        return xbMultiPoint;
    } else {
        throw new UnsupportedEncoderInputException(this, geom);
    }
}
Also used : MultiPoint(org.locationtech.jts.geom.MultiPoint) MultiLineString(org.locationtech.jts.geom.MultiLineString) PolygonDocument(net.opengis.gml.x32.PolygonDocument) MultiPointDocument(net.opengis.gml.x32.MultiPointDocument) PointDocument(net.opengis.gml.x32.PointDocument) MultiCurveType(net.opengis.gml.x32.MultiCurveType) MultiCurveDocument(net.opengis.gml.x32.MultiCurveDocument) PolygonType(net.opengis.gml.x32.PolygonType) MultiLineString(org.locationtech.jts.geom.MultiLineString) LineString(org.locationtech.jts.geom.LineString) MultiPoint(org.locationtech.jts.geom.MultiPoint) Point(org.locationtech.jts.geom.Point) LineStringType(net.opengis.gml.x32.LineStringType) MultiPointType(net.opengis.gml.x32.MultiPointType) MultiPointDocument(net.opengis.gml.x32.MultiPointDocument) MultiPoint(org.locationtech.jts.geom.MultiPoint) Point(org.locationtech.jts.geom.Point) UnsupportedEncoderInputException(org.n52.svalbard.encode.exception.UnsupportedEncoderInputException) EnvelopeOrGeometry(org.n52.shetland.util.EnvelopeOrGeometry) Geometry(org.locationtech.jts.geom.Geometry) AbstractGeometry(org.n52.shetland.ogc.gml.AbstractGeometry) MultiLineString(org.locationtech.jts.geom.MultiLineString) LineString(org.locationtech.jts.geom.LineString) LineStringDocument(net.opengis.gml.x32.LineStringDocument) MultiPointType(net.opengis.gml.x32.MultiPointType) PointType(net.opengis.gml.x32.PointType) CurvePropertyType(net.opengis.gml.x32.CurvePropertyType) Polygon(org.locationtech.jts.geom.Polygon) GeometryPropertyType(net.opengis.gml.x32.GeometryPropertyType)

Example 10 with UnsupportedEncoderInputException

use of org.n52.svalbard.encode.exception.UnsupportedEncoderInputException in project arctic-sea by 52North.

the class InsertFeatureOfInterestEncoder method create.

@Override
protected XmlObject create(InsertFeatureOfInterestResponse ifoir) throws EncodingException {
    if (ifoir == null) {
        throw new UnsupportedEncoderInputException(this, InsertFeatureOfInterestResponse.class);
    }
    InsertFeatureOfInterestResponseDocument ifoird = InsertFeatureOfInterestResponseDocument.Factory.newInstance(getXmlOptions());
    ifoird.addNewInsertFeatureOfInterestResponse();
    return ifoird;
}
Also used : InsertFeatureOfInterestResponseDocument(net.opengis.ifoi.x10.InsertFeatureOfInterestResponseDocument) UnsupportedEncoderInputException(org.n52.svalbard.encode.exception.UnsupportedEncoderInputException)

Aggregations

UnsupportedEncoderInputException (org.n52.svalbard.encode.exception.UnsupportedEncoderInputException)29 XmlObject (org.apache.xmlbeans.XmlObject)16 EncodingException (org.n52.svalbard.encode.exception.EncodingException)12 XmlException (org.apache.xmlbeans.XmlException)5 Geometry (org.locationtech.jts.geom.Geometry)3 LineString (org.locationtech.jts.geom.LineString)3 Point (org.locationtech.jts.geom.Point)3 Polygon (org.locationtech.jts.geom.Polygon)3 GeometryPropertyType (net.opengis.gml.x32.GeometryPropertyType)2 AbstractFeature (org.n52.shetland.ogc.gml.AbstractFeature)2 OmObservation (org.n52.shetland.ogc.om.OmObservation)2 FeatureCollection (org.n52.shetland.ogc.om.features.FeatureCollection)2 AbstractSamplingFeature (org.n52.shetland.ogc.om.features.samplingFeatures.AbstractSamplingFeature)2 CategoryValue (org.n52.shetland.ogc.om.values.CategoryValue)2 QuantityValue (org.n52.shetland.ogc.om.values.QuantityValue)2 AbstractSensorML (org.n52.shetland.ogc.sensorML.AbstractSensorML)2 SweDataRecord (org.n52.shetland.ogc.swe.SweDataRecord)2 SweField (org.n52.shetland.ogc.swe.SweField)2 EnvelopeOrGeometry (org.n52.shetland.util.EnvelopeOrGeometry)2 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)1