private void exportFeaturePropertyByValue( QName propName, Feature subFeature, GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { referenceExportStrategy.addExportedId( subFeature.getId() ); writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); writer.writeComment( "Inlined feature '" + subFeature.getId() + "'" ); export( subFeature, getResolveStateForNextLevel( resolveState ) ); writer.writeEndElement(); }
private void exportGenericObjectProperty( final Property prop, final GMLObject object, final GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { final ObjectPropertyType pt = (ObjectPropertyType) prop.getType(); final QName propName = pt.getName(); LOG.debug( "Exporting object property '" + propName + "'" ); if ( object == null ) { exportEmptyProperty( propName, prop.getAttributes() ); } else { writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); switch ( pt.getCategory() ) { case TIME_OBJECT: new GmlTimeGeometricPrimitiveWriter().write( writer, (TimeGeometricPrimitive) object ); break; case TIME_SLICE: export( (TimeSlice) object, resolveState ); break; default: throw new RuntimeException(); } writer.writeEndElement(); } }
public void export( final TimeSlice timeSlice, final GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { if ( timeSlice.getId() != null ) { referenceExportStrategy.addExportedId( timeSlice.getId() ); } final QName featureName = timeSlice.getType().getName(); LOG.debug( "Exporting TimeSlice {} with ID {}", featureName, timeSlice.getId() ); final String namespaceURI = featureName.getNamespaceURI(); final String localName = featureName.getLocalPart(); writeStartElementWithNS( namespaceURI, localName ); if ( timeSlice.getId() != null ) { if ( fidAttr.getNamespaceURI() == "" ) { writer.writeAttribute( fidAttr.getLocalPart(), timeSlice.getId() ); } else { writeAttributeWithNS( fidAttr.getNamespaceURI(), fidAttr.getLocalPart(), timeSlice.getId() ); } } for ( final Property prop : timeSlice.getProperties() ) { export( prop, resolveState ); } writer.writeEndElement(); }
private void exportGenericXmlElement( ElementNode xmlContent, GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { QName elName = xmlContent.getName(); LOG.debug( "Exporting " + elName ); XSElementDeclaration elDecl = xmlContent.getXSType(); if ( elDecl != null && schemaInfoset != null ) { ObjectPropertyType gmlPropertyDecl = schemaInfoset.getGMLPropertyDecl( elDecl, elName, 0, 1, null ); if ( gmlPropertyDecl instanceof FeaturePropertyType ) { List<TypedObjectNode> children = xmlContent.getChildren(); if ( children != null && children.size() == 1 && children.get( 0 ) instanceof Feature ) { LOG.debug( "Exporting as nested feature property." ); exportFeatureProperty( (FeaturePropertyType) gmlPropertyDecl, (Feature) children.get( 0 ), null, resolveState ); return; } } } writeStartElementWithNS( elName.getNamespaceURI(), elName.getLocalPart() ); writeAttributes (xmlContent.getAttributes()); if ( xmlContent.getChildren() != null ) { for ( TypedObjectNode childNode : xmlContent.getChildren() ) { export( childNode, resolveState ); } } writer.writeEndElement(); }
private void exportFeatureProperty( FeaturePropertyType pt, Feature subFeature, Map<QName, PrimitiveValue> attributes, GmlXlinkOptions resolveState ) throws XMLStreamException, UnknownCRSException, TransformationException { QName propName = pt.getName(); LOG.debug( "Exporting feature property '" + propName + "'" ); if ( subFeature == null ) { exportEmptyProperty( propName, attributes ); } else if ( subFeature instanceof FeatureReference ) { exportFeatureProperty( pt, (FeatureReference) subFeature, resolveState, propName ); } else { // normal feature String subFid = subFeature.getId(); if ( subFid == null ) { // no feature id -> no other chance, but inlining it writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); writer.writeComment( "Inlined feature '" + subFid + "'" ); export( subFeature, getResolveStateForNextLevel( resolveState ) ); writer.writeEndElement(); } else { // has feature id if ( referenceExportStrategy.isObjectExported( subFid ) ) { exportAlreadyExportedFeaturePropertyByReference( subFeature, propName ); } else { exportFeaturePropertyByValue( propName, subFeature, resolveState ); } } } }
writeStartElementWithNS( gmlNs, "FeatureCollection" ); if ( feature.getId() != null ) { if ( fidAttr.getNamespaceURI() == "" ) { for ( Feature member : ( (FeatureCollection) feature ) ) { String memberFid = member.getId(); writeStartElementWithNS( gmlNs, "featureMember" ); if ( memberFid != null && referenceExportStrategy.isObjectExported( memberFid ) ) { writeAttributeWithNS( XLNNS, "href", "#" + memberFid ); String namespaceURI = featureName.getNamespaceURI(); String localName = featureName.getLocalPart(); writeStartElementWithNS( namespaceURI, localName );
writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); if ( pValue != null ) { writer.writeCharacters( pValue.getAsText() ); endEmptyElement(); } else { writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); if ( gValue.getId() != null ) { writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); if ( nilled ) { writeNilAttributes( attributes ); writeNilledElement( propName, attributes ); } else { writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); if ( value != null ) { gmlStreamWriter.getGeometryWriter().exportEnvelope( (Envelope) value ); } else { writeStartElementWithNS( gmlNs, gmlNull ); writer.writeCharacters( "missing" ); writer.writeEndElement(); writeStartElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); if ( GML_2 != version ) { if ( nilled ) { } else if ( pt instanceof MeasurePropertyType ) { Measure measure = (Measure) value;