private void fixReferences( final FeatureCollection fc ) { GMLObjectVisitor visitor = new GMLObjectVisitor() { @Override public boolean visitGeometry( Geometry geom ) { return true; } @Override public boolean visitFeature( Feature feature ) { return true; } @Override public boolean visitReference( Reference<?> ref ) { fixReference( ref ); return true; } @Override public boolean visitObject( GMLObject o ) { return true; } }; new GMLObjectWalker( visitor ).traverse( fc ); }
private void traversePrimitive( GeometricPrimitive g ) { PrimitiveType pt = g.getPrimitiveType(); switch ( pt ) { case Curve: traverseCurve( (Curve) g ); break; case Point: // nothing to do break; case Solid: traverseSolid( (Solid) g ); break; case Surface: traverseSurface( (Surface) g ); break; } }
private void traverseGeometry( Geometry node ) { GeometryType gt = node.getGeometryType(); switch ( gt ) { case COMPOSITE_GEOMETRY: for ( Geometry member : (CompositeGeometry<?>) node ) { traverse( member ); } break; case ENVELOPE: // nothing to do break; case MULTI_GEOMETRY: for ( Geometry member : (MultiGeometry<?>) node ) { traverse( member ); } break; case PRIMITIVE_GEOMETRY: traversePrimitive( (GeometricPrimitive) node ); break; } }
private void traverseTypedObjectNode( TypedObjectNode node ) { if ( node instanceof GMLObject ) { traverse( (GMLObject) node ); } else if ( node instanceof ElementNode ) { ElementNode generic = (ElementNode) node; for ( TypedObjectNode child : generic.getChildren() ) { traverseTypedObjectNode( child ); } } }
private void traverseCurve( Curve c ) { CurveType ct = c.getCurveType(); switch ( ct ) { case CompositeCurve: for ( Curve member : ( (CompositeCurve) c ) ) { traverse( member ); } break; case Curve: case Ring: for ( CurveSegment segment : c.getCurveSegments() ) { traverseSegment( segment ); } break; case LineString: traversePoints( ( (LineString) c ).getControlPoints() ); break; case OrientableCurve: traverse( ( (OrientableCurve) c ).getBaseCurve() ); break; } }
case CompositeSurface: for ( Surface member : ( (CompositeSurface) s ) ) { traverse( member ); traverse( ( (OrientableSurface) s ).getBaseSurface() ); break; case Polygon: Polygon p = (Polygon) s; if ( p.getExteriorRing() != null ) { traverse( p.getExteriorRing() ); traverse( inner ); case TriangulatedSurface: for ( SurfacePatch patch : s.getPatches() ) { traversePatch( patch ); for ( List<LineStringSegment> stops : tin.getStopLines() ) { for ( LineStringSegment ls : stops ) { traverseSegment( ls ); traverseSegment( ls );
if ( ref.isResolved() ) { node = (GMLObject) ref.getReferencedObject(); traverse( node ); FeatureCollection fc = (FeatureCollection) node; for ( Feature member : fc ) { traverse( member ); traverseGMLObject( f ); traverseGeometry( g ); traverseGMLObject( node );
private void traverseSolid( Solid s ) { SolidType st = s.getSolidType(); switch ( st ) { case CompositeSolid: { for ( Solid member : ( (CompositeSolid) s ) ) { traverse( member ); } break; } case Solid: { if ( s.getExteriorSurface() != null ) { traverse( s.getExteriorSurface() ); } for ( Surface inner : s.getInteriorSurfaces() ) { traverse( inner ); } break; } } }
new GMLObjectWalker( visitor ).traverse( f );
private void checkForDuplicateIds( final Feature feature ) throws FeatureStoreException { final IdChecker idChecker = new IdChecker(); try { new GMLObjectWalker( idChecker ).traverse( feature ); } catch ( final Exception e ) { throw new FeatureStoreException( e.getMessage() ); } }
new GMLObjectWalker( visitor ).traverse( fc ); } catch ( IllegalArgumentException e ) { throw new FeatureStoreException( e.getMessage() );
new GMLObjectWalker( visitor ).traverse( fc ); } catch ( IllegalArgumentException e ) { throw new FeatureStoreException( e.getMessage() );