private List<Property> getTargetProperties( final Feature feature, final ValueReference propName ) throws FeatureStoreException { if (propName == null) { return emptyList(); } try { final TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); final TypedObjectNode[] nodes = evaluator.eval( feature, propName ); final List<Property> props = new ArrayList<Property>(); if ( nodes != null ) { for ( final TypedObjectNode node : nodes ) { if ( !( node instanceof Property ) ) { final String msg = propName + " does not refer to a property."; throw new FeatureStoreException( msg ); } props.add( (Property) node ); } } return props; } catch ( FilterEvaluationException e ) { throw new FeatureStoreException( e.getMessage(), e ); } }
public FeatureLayerData( List<Query> queries, FeatureStore featureStore, int maxFeatures, Style style, QName ftName ) { this.queries = queries; this.featureStore = featureStore; this.maxFeatures = maxFeatures; this.style = style; Map<String, QName> bindings = new HashMap<String, QName>(); Set<QName> validNames = AppSchemas.collectProperyNames( featureStore.getSchema(), ftName ); for ( QName name : validNames ) { bindings.put( name.getLocalPart(), name ); } evaluator = new TypedObjectNodeXPathEvaluator( bindings ); }
@Override public TypedObjectNode[] eval( TypedObjectNode particle, ValueReference path ) throws FilterEvaluationException { if ( particle instanceof GMLObject ) { return eval( (GMLObject) particle, path ); } if ( particle instanceof ElementNode ) { return eval( (ElementNode) particle, path ); } throw new FilterEvaluationException( "Evaluation of XPath expressions on '" + particle.getClass() + "' is not supported." ); }
TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator();
@SuppressWarnings({ "unchecked", "synthetic-access" }) @Override public int compare( Feature f1, Feature f2 ) { int order = 0; for ( SortProperty sortCrit : sortCrits ) { ValueReference propName = sortCrit.getSortProperty(); try { // TODO handle multi properties correctly TypedObjectNode[] values1 = evaluator.eval( f1, propName ); TypedObjectNode[] values2 = evaluator.eval( f2, propName ); for ( TypedObjectNode value1 : values1 ) { if ( value1 != null ) { for ( TypedObjectNode value2 : values2 ) { if ( value2 != null ) { Pair<Object, Object> comparablePair = getPrimitives( value1, value2 ); order = ( (Comparable<Object>) comparablePair.first ).compareTo( comparablePair.second ); if ( !sortCrit.getSortOrder() ) { order *= -1; } } } } } } catch ( Exception e ) { LOG.debug( "Cannot compare values: " + e.getMessage() ); } } return order; } } );
private String getExternalRef( Feature building ) { String result = null; NamespaceBindings nsContext = new NamespaceBindings(); nsContext.addNamespace( "cgml", NS ); ValueReference propName = new ValueReference( "cgml:externalReference/cgml:informationSystem/text()", nsContext ); TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator( ); TypedObjectNode[] tons; try { tons = evaluator.eval( building, propName ); if ( tons.length > 0 ) { result = ( (PrimitiveValue) tons[0] ).getAsText().trim(); } } catch ( FilterEvaluationException e ) { LOG.error( "Retrieving of information system property failed: " + e.getMessage() ); } return result; }
private boolean excludeByTimeSliceFilter( Property property ) { final TimeSlice timeSlice = (TimeSlice) property.getValue(); for ( final Filter timeSliceFilter : timeSliceFilters ) { TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); try { if ( !timeSliceFilter.evaluate( timeSlice, evaluator ) ) { return true; } } catch ( FilterEvaluationException e ) { LOG.warn( "Unable to evaluate time slice projection filter: " + e.getMessage() ); } } return false; }
break; TypedObjectNode[] values = evaluator.eval( member, request.getValueReference() ); for ( TypedObjectNode value : values ) { if ( valuesSkipped < startIndex ) {
XMLStreamWriter xmlStream = WebFeatureService.getXMLResponseWriter( response, contentType, schemaLocation ); TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); try { for ( Feature member : rs ) { TypedObjectNode[] values = evaluator.eval( member, request.getValueReference() ); numFeatures += values.length;
final TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator();
break; TypedObjectNode[] values = evaluator.eval( member, request.getValueReference() ); for ( TypedObjectNode value : values ) { if ( valuesSkipped < startIndex ) {
TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); TypedObjectNode[] values = evaluator.eval( particle, mapping.getPath() ); int childIdx = 1; for ( TypedObjectNode value : values ) {
XPathEvaluator<Feature> evaluator = (XPathEvaluator) new TypedObjectNodeXPathEvaluator( );
TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); GMLFeatureWriter featureWriter = gmlStream.getFeatureWriter();
if ( fc != null ) { try { TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); FeatureCollection update = fc.getMembers( filter, evaluator );
if ( fc != null ) { try { TypedObjectNodeXPathEvaluator evaluator = new TypedObjectNodeXPathEvaluator(); FeatureCollection delete = fc.getMembers( filter, evaluator );