Search in sources :

Example 6 with GeometryPropertyType

use of org.geotoolkit.gml.xml.v321.GeometryPropertyType in project arctic-sea by 52North.

the class GmlEncoderv321 method createAbstractGeometry.

private AbstractGeometryType createAbstractGeometry(AbstractGeometry element, EncodingContext ctx) throws EncodingException {
    XmlObject xbGeometry = createPosition(element.getGeometry(), ctx);
    AbstractGeometryType abstractGeometryType = null;
    if (xbGeometry instanceof AbstractGeometryType) {
        abstractGeometryType = (AbstractGeometryType) xbGeometry;
    } else if (xbGeometry instanceof GeometryPropertyType) {
        abstractGeometryType = ((GeometryPropertyType) xbGeometry).getAbstractGeometry();
    } else {
        throw new UnsupportedEncoderInputException(this, element);
    }
    if (element.isSetIdentifier()) {
        abstractGeometryType.setIdentifier(createCodeWithAuthorityType(element.getIdentifierCodeWithAuthority()));
    }
    if (element.isSetName()) {
        for (org.n52.shetland.ogc.gml.CodeType codeType : element.getName()) {
            abstractGeometryType.addNewName().set(createCodeType(codeType));
        }
    }
    if (element.isSetDescription()) {
        abstractGeometryType.addNewDescription().setStringValue(element.getDescription());
    }
    return abstractGeometryType;
}
Also used : AbstractGeometryType(net.opengis.gml.x32.AbstractGeometryType) XmlObject(org.apache.xmlbeans.XmlObject) GeometryPropertyType(net.opengis.gml.x32.GeometryPropertyType) UnsupportedEncoderInputException(org.n52.svalbard.encode.exception.UnsupportedEncoderInputException)

Example 7 with GeometryPropertyType

use of org.geotoolkit.gml.xml.v321.GeometryPropertyType in project geotoolkit by Geomatys.

the class JAXPStreamTransactionWriter method write.

// <xsd:element name="Update" type="wfs:UpdateElementType"/>
// <xsd:complexType name="UpdateElementType">
// <xsd:sequence>
// <xsd:element ref="wfs:Property" maxOccurs="unbounded"/>
// <xsd:element ref="ogc:Filter" minOccurs="0" maxOccurs="1"/>
// </xsd:sequence>
// <xsd:attribute name="handle" type="xsd:string" use="optional"/>
// <xsd:attribute name="typeName" type="xsd:QName" use="required"/>
// <xsd:attribute name="inputFormat" type="xsd:string"
// use="optional" default="text/xml; subversion=gml/3.1.1"/>
// <xsd:attribute name="srsName" type="xsd:anyURI" use="optional"/>
// </xsd:complexType>
// <xsd:element name="Property" type="wfs:PropertyType"/>
// <xsd:complexType name="PropertyType">
// <xsd:sequence>
// <xsd:element name="Name" type="xsd:QName"/>
// <xsd:element name="Value" minOccurs="0"/>
// </xsd:sequence>
// </xsd:complexType>
private void write(final XMLStreamWriter writer, final Update element) throws XMLStreamException, FactoryException, JAXBException {
    writer.writeStartElement(WFS_PREFIX, TAG_UPDATE, WFS_NAMESPACE);
    // write typename--------------------------------------------------------
    final GenericName typeName = element.getTypeName();
    final String ns = NamesExt.getNamespace(typeName);
    if (ns != null && !ns.isEmpty()) {
        final String prefix = "geons" + inc.incrementAndGet();
        writer.writeAttribute("xmlns:" + prefix, ns);
        writer.writeAttribute(PROP_TYPENAME, prefix + ':' + typeName.tip());
    } else {
        writer.writeAttribute(PROP_TYPENAME, typeName.tip().toString());
    }
    // write crs-------------------------------------------------------------
    final CoordinateReferenceSystem crs = element.getCoordinateReferenceSystem();
    if (crs != null) {
        final String id = ReferencingUtilities.lookupIdentifier(crs, true);
        writer.writeAttribute(WFS_PREFIX, WFS_NAMESPACE, PROP_SRSNAME, id);
    }
    // write format----------------------------------------------------------
    final String format = element.getInputFormat();
    if (format != null) {
        writer.writeAttribute(WFS_PREFIX, WFS_NAMESPACE, PROP_INPUTFORMAT, format);
    }
    // write handle----------------------------------------------------------
    final String handle = element.getHandle();
    if (handle != null) {
        writer.writeAttribute(WFS_PREFIX, WFS_NAMESPACE, PROP_HANDLE, handle);
    }
    // write filter ---------------------------------------------------------
    final Filter filter = element.getFilter();
    if (filter != null) {
        // TODO : parameterize version
        writeFilter(element.getFilter(), FilterVersion.V110, writer);
        writer.flush();
    }
    // write properties------------------------------------------------------
    for (final Entry<PropertyType, Object> entry : element.updates().entrySet()) {
        writer.writeStartElement(WFS_PREFIX, TAG_PROPERTY, WFS_NAMESPACE);
        // write namespace
        final GenericName name = entry.getKey().getName();
        final String ns2 = NamesExt.getNamespace(name);
        String pref = writer.getNamespaceContext().getPrefix(ns2);
        if (pref == null && ns2 != null && !ns2.isEmpty()) {
            pref = "geons" + inc.incrementAndGet();
            writer.writeAttribute("xmlns:" + pref, ns2);
        }
        // write name
        writer.writeStartElement(WFS_PREFIX, TAG_NAME, WFS_NAMESPACE);
        if (pref != null) {
            writer.writeCharacters(pref + ':' + name.tip());
        } else {
            writer.writeCharacters(name.tip().toString());
        }
        writer.writeEndElement();
        // write value
        final PropertyType propertyType = entry.getKey();
        Object value = entry.getValue();
        if (value != null) {
            if (value instanceof Geometry) {
                value = new GeometryPropertyType((AbstractGeometryType) JTStoGeometry.toGML("3.1.1", (Geometry) value));
                final Marshaller marshaller = GMLPOOL.acquireMarshaller();
                marshaller.setProperty(marshaller.JAXB_FRAGMENT, Boolean.TRUE);
                marshaller.marshal(new ObjectFactory().createValue(value), writer);
                GMLPOOL.recycle(marshaller);
            } else if (value instanceof org.opengis.geometry.Geometry) {
                final Marshaller marshaller = POOL.acquireMarshaller();
                marshaller.setProperty(marshaller.JAXB_FRAGMENT, Boolean.TRUE);
                marshaller.marshal(new ObjectFactory().createValue(value), writer);
                POOL.recycle(marshaller);
            } else {
                writer.writeStartElement(WFS_PREFIX, TAG_VALUE, WFS_NAMESPACE);
                QName qname = Utils.getQNameFromType(propertyType, "");
                writer.writeAttribute(XSI_PREFIX, XSI_NAMESPACE, PROP_TYPE, qname.getLocalPart());
                writer.writeCharacters(Utils.getStringValue(value));
                writer.writeEndElement();
            }
        }
        writer.writeEndElement();
    }
    writer.writeEndElement();
}
Also used : Marshaller(javax.xml.bind.Marshaller) AbstractGeometryType(org.geotoolkit.gml.xml.v311.AbstractGeometryType) QName(javax.xml.namespace.QName) GeometryPropertyType(org.geotoolkit.gml.xml.v311.GeometryPropertyType) PropertyType(org.opengis.feature.PropertyType) JTStoGeometry(org.geotoolkit.gml.JTStoGeometry) Geometry(org.locationtech.jts.geom.Geometry) GenericName(org.opengis.util.GenericName) ObjectFactory(org.geotoolkit.internal.jaxb.ObjectFactory) Filter(org.opengis.filter.Filter) XMLFilter(org.geotoolkit.ogc.xml.XMLFilter) CoordinateReferenceSystem(org.opengis.referencing.crs.CoordinateReferenceSystem) GeometryPropertyType(org.geotoolkit.gml.xml.v311.GeometryPropertyType)

Aggregations

GeometryPropertyType (net.opengis.gml.x32.GeometryPropertyType)3 AbstractGeometryType (net.opengis.gml.x32.AbstractGeometryType)2 AbstractGeometryType (org.geotoolkit.gml.xml.v311.AbstractGeometryType)2 LineString (org.locationtech.jts.geom.LineString)2 MultiLineString (org.locationtech.jts.geom.MultiLineString)2 MultiPoint (org.locationtech.jts.geom.MultiPoint)2 Point (org.locationtech.jts.geom.Point)2 Polygon (org.locationtech.jts.geom.Polygon)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Marshaller (javax.xml.bind.Marshaller)1 QName (javax.xml.namespace.QName)1 GeometryPropertyType (net.opengis.gml.v_3_2_1.GeometryPropertyType)1 LineStringType (net.opengis.gml.v_3_2_1.LineStringType)1 MultiCurveType (net.opengis.gml.v_3_2_1.MultiCurveType)1 MultiGeometryType (net.opengis.gml.v_3_2_1.MultiGeometryType)1 MultiPointType (net.opengis.gml.v_3_2_1.MultiPointType)1 MultiSurfaceType (net.opengis.gml.v_3_2_1.MultiSurfaceType)1 PointType (net.opengis.gml.v_3_2_1.PointType)1 PolygonType (net.opengis.gml.v_3_2_1.PolygonType)1