svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.geometry / org.gvsig.expressionevaluator.geometry.lib / org.gvsig.expressionevaluator.geometry.lib.impl / src / main / java / org / gvsig / expressionevaluator / impl / function / spatial / AndAndOperator.java @ 47598
History | View | Annotate | Download (1.72 KB)
1 |
package org.gvsig.expressionevaluator.impl.function.spatial; |
---|---|
2 |
|
3 |
import org.gvsig.expressionevaluator.Code; |
4 |
import org.gvsig.expressionevaluator.CodeBuilder; |
5 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.OPERATOR_AND2; |
6 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
7 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
8 |
import org.gvsig.expressionevaluator.impl.function.operator.*; |
9 |
import org.gvsig.expressionevaluator.Function; |
10 |
import org.gvsig.expressionevaluator.Interpreter; |
11 |
import org.gvsig.expressionevaluator.LexicalAnalyzer; |
12 |
import org.gvsig.expressionevaluator.UserOperator; |
13 |
import static org.gvsig.expressionevaluator.UserOperator.OERATOR_PRECEDENCE_SUM; |
14 |
import org.gvsig.expressionevaluator.spi.UserOperatorBase; |
15 |
import org.gvsig.fmap.geom.Geometry; |
16 |
import org.gvsig.fmap.geom.GeometryUtils; |
17 |
|
18 |
public class AndAndOperator extends AbstractGeometryBinaryOperator { |
19 |
|
20 |
public AndAndOperator() {
|
21 |
super(Function.GROUP_OGC, OPERATOR_AND2, true); |
22 |
} |
23 |
|
24 |
@Override
|
25 |
public boolean allowConstantFolding() { |
26 |
return true; |
27 |
} |
28 |
|
29 |
@Override
|
30 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
31 |
if( op1 instanceof Geometry && op2 instanceof Geometry ) { |
32 |
boolean value = ((Geometry)op1).getEnvelope().intersects(((Geometry)op2).getEnvelope());
|
33 |
return value;
|
34 |
} |
35 |
throw new IllegalArgumentException("Types not allowed in '"+name()+"' operand."); |
36 |
} |
37 |
|
38 |
public static void selfRegister() { |
39 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getExpressionEvaluatorManager(); |
40 |
manager.registerUserOperator(new UserOperatorBase(OPERATOR_AND2, OERATOR_PRECEDENCE_SUM));
|
41 |
} |
42 |
|
43 |
} |