File | Line |
---|
org/deegree/filter/function/other/IDiv.java | 91 |
org/deegree/filter/function/other/IMod.java | 105 |
}
@Override
public Function create( List<Expression> params ) {
return new Function( NAME, params ) {
private <T> Pair<Integer, Integer> extractValues( Expression first, Expression second, T f,
XPathEvaluator<T> xpathEvaluator )
throws FilterEvaluationException {
TypedObjectNode[] vals1 = first.evaluate( f, xpathEvaluator );
TypedObjectNode[] vals2 = second.evaluate( f, xpathEvaluator );
checkTwoArguments( NAME, vals1, vals2 );
PrimitiveValue pv1;
PrimitiveValue pv2;
if ( vals1[0] instanceof PrimitiveValue ) {
pv1 = (PrimitiveValue) vals1[0];
} else {
pv1 = ( (SimpleProperty) vals1[0] ).getValue();
}
if ( vals2[0] instanceof PrimitiveValue ) {
pv2 = (PrimitiveValue) vals2[0];
} else {
pv2 = ( (SimpleProperty) vals2[0] ).getValue();
}
return new Pair<Integer, Integer>( round( Double.valueOf( pv1.getValue().toString() ) ),
round( Double.valueOf( pv2.getValue().toString() ) ) );
}
@Override
public <T> TypedObjectNode[] evaluate( T obj, XPathEvaluator<T> xpathEvaluator )
throws FilterEvaluationException {
Pair<Integer, Integer> p = extractValues( getParams()[0], getParams()[1], obj, xpathEvaluator );
return new TypedObjectNode[] { new PrimitiveValue( BigInteger.valueOf( p.first / p.second ) ) }; |
File | Line |
---|
org/deegree/filter/function/geometry/IsCurve.java | 39 |
org/deegree/filter/function/geometry/IsPoint.java | 38 |
org/deegree/filter/function/geometry/IsSurface.java | 39 |
@Override
public String getName() {
return NAME;
}
@Override
public List<ParameterType> getArgs() {
return Collections.singletonList( GEOMETRY );
}
@Override
public ParameterType getReturnType() {
return BOOLEAN;
}
@Override
public Function create( List<Expression> params ) {
if ( params.size() != 1 ) {
throw new IllegalArgumentException( NAME + " requires exactly one parameter." );
}
return new Function( NAME, params ) {
@Override
public <T> TypedObjectNode[] evaluate( T obj, XPathEvaluator<T> xpathEvaluator )
throws FilterEvaluationException {
TypedObjectNode[] vals = getParams()[0].evaluate( obj, xpathEvaluator );
if ( vals.length != 1 ) {
throw new FilterEvaluationException( "The " + NAME + " function's first argument must evaluate"
+ " to exactly one value." );
}
Geometry geom = FilterUtils.getGeometryValue( vals[0] );
if ( geom == null ) {
throw new FilterEvaluationException( "The " + NAME + " function's first argument did"
+ " not evaluate to a geometry." );
}
// TODO is handling of multi geometries like this ok?
boolean result = geom instanceof Curve || geom instanceof MultiCurve<?> |
File | Line |
---|
org/deegree/filter/function/other/Lower.java | 69 |
org/deegree/filter/function/other/Upper.java | 69 |
@Override
public String getName() {
return NAME;
}
@Override
public List<ParameterType> getArgs() {
return Collections.singletonList( DOUBLE );
}
@Override
public ParameterType getReturnType() {
return INTEGER;
}
@Override
public Function create( List<Expression> params ) {
return new Function( NAME, params ) {
@Override
public TypedObjectNode[] evaluate( List<TypedObjectNode[]> args )
throws FilterEvaluationException {
TypedObjectNode[] inputs = args.get( 0 );
List<TypedObjectNode> outputs = new ArrayList<TypedObjectNode>( inputs.length );
for ( TypedObjectNode input : inputs ) {
String s = null;
if ( input instanceof PrimitiveValue ) {
s = ( (PrimitiveValue) input ).getAsText();
} else {
s = input.toString();
}
outputs.add( new PrimitiveValue( s.toLowerCase(), new PrimitiveType( STRING ) ) ); |