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 exportFeaturePropertyByReference( QName propName, FeatureReference ref, boolean forceInclusionInDocument, GmlXlinkOptions resolveState ) throws XMLStreamException { writeEmptyElementWithNS( propName.getNamespaceURI(), propName.getLocalPart() ); String uri = null; if ( forceInclusionInDocument ) { resolveState = getResolveStateForNextLevel( resolveState ); uri = referenceExportStrategy.requireObject( ref, resolveState ); } else { uri = referenceExportStrategy.handleReference( ref ); } writeAttributeWithNS( XLNNS, "href", uri ); endEmptyElement(); }
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 ); } } } }
writeAttributeWithNS( XLNNS, "href", "#" + memberFid ); } else { export( member, getResolveStateForNextLevel( resolveState ) );