Revision 44009
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/test/java/org/gvsig/expresionevaluator/impl/TestOptimizer.java | ||
---|---|---|
1 |
package org.gvsig.expresionevaluator.impl; |
|
2 |
|
|
3 |
import static junit.framework.Assert.assertEquals; |
|
4 |
import org.gvsig.expressionevaluator.impl.SQLLexicalAnalyzer; |
|
5 |
import org.gvsig.expressionevaluator.impl.DefaultCompiler; |
|
6 |
import junit.framework.TestCase; |
|
7 |
import org.cresques.cts.IProjection; |
|
8 |
import org.gvsig.expressionevaluator.LexicalAnalyzer; |
|
9 |
import org.gvsig.expressionevaluator.Compiler; |
|
10 |
import org.gvsig.expressionevaluator.Code; |
|
11 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
12 |
import org.gvsig.expressionevaluator.Interpreter; |
|
13 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
|
14 |
import org.gvsig.expressionevaluator.Optimizer; |
|
15 |
import org.gvsig.expressionevaluator.SymbolTable; |
|
16 |
import org.gvsig.expressionevaluator.impl.DefaultExpressionBuilder; |
|
17 |
import org.gvsig.expressionevaluator.impl.DefaultInterpreter; |
|
18 |
import org.gvsig.expressionevaluator.impl.DefaultOptimizer; |
|
19 |
import org.gvsig.expressionevaluator.impl.DefaultSymbolTable; |
|
20 |
import org.gvsig.fmap.crs.CRSFactory; |
|
21 |
import org.gvsig.fmap.geom.Geometry; |
|
22 |
import org.gvsig.fmap.geom.GeometryLocator; |
|
23 |
import org.gvsig.fmap.geom.GeometryManager; |
|
24 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
|
25 |
import org.gvsig.fmap.geom.primitive.Point; |
|
26 |
import org.gvsig.fmap.geom.primitive.Polygon; |
|
27 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
|
28 |
|
|
29 |
public class TestOptimizer extends TestCase { |
|
30 |
|
|
31 |
public TestOptimizer(String testName) { |
|
32 |
super(testName); |
|
33 |
} |
|
34 |
|
|
35 |
@Override |
|
36 |
protected void setUp() throws Exception { |
|
37 |
super.setUp(); |
|
38 |
new DefaultLibrariesInitializer().fullInitialize(); |
|
39 |
} |
|
40 |
|
|
41 |
@Override |
|
42 |
protected void tearDown() throws Exception { |
|
43 |
super.tearDown(); |
|
44 |
} |
|
45 |
|
|
46 |
// TODO add test methods here. The name must begin with 'test'. For example: |
|
47 |
// public void testHello() {} |
|
48 |
protected LexicalAnalyzer createLexicalAnalyzer() { |
|
49 |
SQLLexicalAnalyzer lexer = new SQLLexicalAnalyzer(); |
|
50 |
return lexer; |
|
51 |
} |
|
52 |
|
|
53 |
protected Compiler createCompiler() { |
|
54 |
Compiler compiler = new DefaultCompiler(); |
|
55 |
compiler.setLexicalAnalyzer(createLexicalAnalyzer()); |
|
56 |
return compiler; |
|
57 |
} |
|
58 |
|
|
59 |
protected Interpreter createInterpreter(SymbolTable symbolTable) { |
|
60 |
Interpreter interpreter = new DefaultInterpreter(); |
|
61 |
interpreter.setSymbolTable(symbolTable); |
|
62 |
return interpreter; |
|
63 |
} |
|
64 |
|
|
65 |
protected Optimizer createOptimizer(SymbolTable symbolTable) { |
|
66 |
Optimizer optimizer = new DefaultOptimizer(symbolTable); |
|
67 |
return optimizer; |
|
68 |
} |
|
69 |
|
|
70 |
protected MutableSymbolTable createSymbolTable() { |
|
71 |
DefaultSymbolTable symbolTable = new DefaultSymbolTable(); |
|
72 |
symbolTable.setVar("precio", 200); |
|
73 |
symbolTable.setVar("1990", 0.168873933773767); |
|
74 |
return symbolTable; |
|
75 |
} |
|
76 |
|
|
77 |
private String createExpr1() { |
|
78 |
ExpressionBuilder builder = new DefaultExpressionBuilder(); |
|
79 |
|
|
80 |
ExpressionBuilder.Value expr1 = builder.gt( |
|
81 |
builder.column("campo1"), |
|
82 |
builder.constant(10) |
|
83 |
); |
|
84 |
System.out.println(expr1.toString()); |
|
85 |
assertEquals( |
|
86 |
"( (\"campo1\") > (10) )", |
|
87 |
expr1.toString() |
|
88 |
); |
|
89 |
return expr1.toString(); |
|
90 |
} |
|
91 |
|
|
92 |
private Polygon createPolygon() throws CreateGeometryException { |
|
93 |
GeometryManager geometryManager = GeometryLocator.getGeometryManager(); |
|
94 |
IProjection proj = CRSFactory.getCRS("EPSG:4326"); |
|
95 |
|
|
96 |
Polygon polygon = geometryManager.createPolygon(Geometry.SUBTYPES.GEOM2D); |
|
97 |
polygon.addVertex(0, 0); |
|
98 |
polygon.addVertex(0, 100); |
|
99 |
polygon.addVertex(100, 100); |
|
100 |
polygon.addVertex(100, 0); |
|
101 |
polygon.addVertex(0, 0); |
|
102 |
|
|
103 |
polygon.setProjection(proj); |
|
104 |
return polygon; |
|
105 |
} |
|
106 |
|
|
107 |
private Geometry createPoint(double x, double y) throws CreateGeometryException { |
|
108 |
GeometryManager geometryManager = GeometryLocator.getGeometryManager(); |
|
109 |
IProjection proj = CRSFactory.getCRS("EPSG:4326"); |
|
110 |
Point point = geometryManager.createPoint(x, y, Geometry.SUBTYPES.GEOM2D); |
|
111 |
point.setProjection(proj); |
|
112 |
return point; |
|
113 |
} |
|
114 |
|
|
115 |
public void testIdentifier1() { |
|
116 |
String source = "precio"; |
|
117 |
|
|
118 |
Compiler compiler = createCompiler(); |
|
119 |
Code code = compiler.compileExpression(source); |
|
120 |
assertEquals("\"precio\"", code.toString()); |
|
121 |
|
|
122 |
SymbolTable symbolTable = createSymbolTable(); |
|
123 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
124 |
Code code2 = optimizer.optimize(code); |
|
125 |
assertEquals("\"precio\"", code2.toString()); |
|
126 |
} |
|
127 |
|
|
128 |
public void testIdentifier2() { |
|
129 |
String source = "[precio]"; |
|
130 |
|
|
131 |
Compiler compiler = createCompiler(); |
|
132 |
Code code = compiler.compileExpression(source); |
|
133 |
assertEquals("\"precio\"", code.toString()); |
|
134 |
|
|
135 |
SymbolTable symbolTable = createSymbolTable(); |
|
136 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
137 |
Code code2 = optimizer.optimize(code); |
|
138 |
assertEquals("\"precio\"", code2.toString()); |
|
139 |
} |
|
140 |
|
|
141 |
public void testIdentifier3() { |
|
142 |
String source = "\"precio\""; |
|
143 |
|
|
144 |
Compiler compiler = createCompiler(); |
|
145 |
Code code = compiler.compileExpression(source); |
|
146 |
assertEquals("\"precio\"", code.toString()); |
|
147 |
|
|
148 |
SymbolTable symbolTable = createSymbolTable(); |
|
149 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
150 |
Code code2 = optimizer.optimize(code); |
|
151 |
assertEquals("\"precio\"", code2.toString()); |
|
152 |
} |
|
153 |
|
|
154 |
public void testTrue() { |
|
155 |
String source = "true"; |
|
156 |
|
|
157 |
Compiler compiler = createCompiler(); |
|
158 |
Code code = compiler.compileExpression(source); |
|
159 |
assertEquals("true", code.toString()); |
|
160 |
|
|
161 |
SymbolTable symbolTable = createSymbolTable(); |
|
162 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
163 |
Code code2 = optimizer.optimize(code); |
|
164 |
assertEquals("true", code2.toString()); |
|
165 |
} |
|
166 |
|
|
167 |
public void testFalse() { |
|
168 |
String source = "false"; |
|
169 |
|
|
170 |
Compiler compiler = createCompiler(); |
|
171 |
Code code = compiler.compileExpression(source); |
|
172 |
assertEquals("false", code.toString()); |
|
173 |
|
|
174 |
SymbolTable symbolTable = createSymbolTable(); |
|
175 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
176 |
Code code2 = optimizer.optimize(code); |
|
177 |
assertEquals("false", code2.toString()); |
|
178 |
} |
|
179 |
|
|
180 |
public void testNull() { |
|
181 |
String source = "null"; |
|
182 |
|
|
183 |
Compiler compiler = createCompiler(); |
|
184 |
Code code = compiler.compileExpression(source); |
|
185 |
assertEquals("null", code.toString()); |
|
186 |
|
|
187 |
SymbolTable symbolTable = createSymbolTable(); |
|
188 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
189 |
Code code2 = optimizer.optimize(code); |
|
190 |
assertEquals("null", code2.toString()); |
|
191 |
} |
|
192 |
|
|
193 |
public void testNotTrue() { |
|
194 |
String source = "not true"; |
|
195 |
|
|
196 |
Compiler compiler = createCompiler(); |
|
197 |
Code code = compiler.compileExpression(source); |
|
198 |
assertEquals("not(true)", code.toString()); |
|
199 |
|
|
200 |
SymbolTable symbolTable = createSymbolTable(); |
|
201 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
202 |
Code code2 = optimizer.optimize(code); |
|
203 |
assertEquals("false", code2.toString()); |
|
204 |
} |
|
205 |
|
|
206 |
public void testInteger() { |
|
207 |
String source = "23"; |
|
208 |
|
|
209 |
Compiler compiler = createCompiler(); |
|
210 |
Code code = compiler.compileExpression(source); |
|
211 |
assertEquals("23", code.toString()); |
|
212 |
|
|
213 |
SymbolTable symbolTable = createSymbolTable(); |
|
214 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
215 |
Code code2 = optimizer.optimize(code); |
|
216 |
assertEquals("23", code2.toString()); |
|
217 |
} |
|
218 |
|
|
219 |
public void operator(String operatorName) { |
|
220 |
String source = "precio " + operatorName + " 23"; |
|
221 |
|
|
222 |
Compiler compiler = createCompiler(); |
|
223 |
Code code = compiler.compileExpression(source); |
|
224 |
assertEquals(operatorName + "(\"precio\", 23)", code.toString()); |
|
225 |
|
|
226 |
SymbolTable symbolTable = createSymbolTable(); |
|
227 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
228 |
Code code2 = optimizer.optimize(code); |
|
229 |
assertEquals(operatorName + "(\"precio\", 23)", code2.toString()); |
|
230 |
} |
|
231 |
|
|
232 |
public void testOperators() { |
|
233 |
|
|
234 |
operator("="); |
|
235 |
operator("<>"); |
|
236 |
operator(">"); |
|
237 |
operator(">="); |
|
238 |
operator("<"); |
|
239 |
operator("<="); |
|
240 |
operator("like"); |
|
241 |
operator("ilike"); |
|
242 |
operator("+"); |
|
243 |
operator("-"); |
|
244 |
operator("*"); |
|
245 |
// operator("^"); |
|
246 |
operator("or"); |
|
247 |
operator("and"); |
|
248 |
operator("%"); |
|
249 |
operator("is"); |
|
250 |
} |
|
251 |
|
|
252 |
public void testAddMul() { |
|
253 |
String source = "precio + 10 * 2 + 20 + 30"; |
|
254 |
|
|
255 |
Compiler compiler = createCompiler(); |
|
256 |
|
|
257 |
Code code = compiler.compileExpression(source); |
|
258 |
assertEquals("+(+(+(\"precio\", *(10, 2)), 20), 30)", code.toString()); |
|
259 |
|
|
260 |
SymbolTable symbolTable = createSymbolTable(); |
|
261 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
262 |
Code code2 = optimizer.optimize(code); |
|
263 |
assertEquals("+(+(+(\"precio\", 20), 20), 30)", code2.toString()); |
|
264 |
} |
|
265 |
|
|
266 |
public void testAddMulPar() { |
|
267 |
String source = "(precio + 10) * 2 + 20 + 30"; |
|
268 |
|
|
269 |
Compiler compiler = createCompiler(); |
|
270 |
|
|
271 |
Code code = compiler.compileExpression(source); |
|
272 |
assertEquals("+(+(*(+(\"precio\", 10), 2), 20), 30)", code.toString()); |
|
273 |
|
|
274 |
SymbolTable symbolTable = createSymbolTable(); |
|
275 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
276 |
Code code2 = optimizer.optimize(code); |
|
277 |
assertEquals("+(+(*(+(\"precio\", 10), 2), 20), 30)", code2.toString()); |
|
278 |
} |
|
279 |
|
|
280 |
public void testAbs() { |
|
281 |
String source = "precio + abs(10)"; |
|
282 |
|
|
283 |
Compiler compiler = createCompiler(); |
|
284 |
|
|
285 |
Code code = compiler.compileExpression(source); |
|
286 |
assertEquals("+(\"precio\", abs(10))", code.toString()); |
|
287 |
|
|
288 |
SymbolTable symbolTable = createSymbolTable(); |
|
289 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
290 |
Code code2 = optimizer.optimize(code); |
|
291 |
assertEquals("+(\"precio\", 10)", code2.toString()); |
|
292 |
} |
|
293 |
|
|
294 |
public void testAbs2() { |
|
295 |
String source = "precio + abs(-10)"; |
|
296 |
|
|
297 |
Compiler compiler = createCompiler(); |
|
298 |
|
|
299 |
Code code = compiler.compileExpression(source); |
|
300 |
assertEquals("+(\"precio\", abs(-10))", code.toString()); |
|
301 |
|
|
302 |
SymbolTable symbolTable = createSymbolTable(); |
|
303 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
304 |
Code code2 = optimizer.optimize(code); |
|
305 |
assertEquals("+(\"precio\", 10)", code2.toString()); |
|
306 |
} |
|
307 |
|
|
308 |
public void testPI() { |
|
309 |
String source = "precio + PI()"; |
|
310 |
|
|
311 |
Compiler compiler = createCompiler(); |
|
312 |
|
|
313 |
Code code = compiler.compileExpression(source); |
|
314 |
assertEquals("+(\"precio\", PI())", code.toString()); |
|
315 |
|
|
316 |
SymbolTable symbolTable = createSymbolTable(); |
|
317 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
318 |
Code code2 = optimizer.optimize(code); |
|
319 |
assertEquals("+(\"precio\", 3.141592653589793)", code2.toString()); |
|
320 |
} |
|
321 |
|
|
322 |
public void testCeil() { |
|
323 |
String source = "precio + CEIL(PI())"; |
|
324 |
|
|
325 |
Compiler compiler = createCompiler(); |
|
326 |
|
|
327 |
Code code = compiler.compileExpression(source); |
|
328 |
assertEquals("+(\"precio\", CEIL(PI()))", code.toString()); |
|
329 |
|
|
330 |
SymbolTable symbolTable = createSymbolTable(); |
|
331 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
332 |
Code code2 = optimizer.optimize(code); |
|
333 |
assertEquals("+(\"precio\", 4.0)", code2.toString()); |
|
334 |
} |
|
335 |
|
|
336 |
public void testConcat() { |
|
337 |
String source = "CONCAT(precio,' euros')"; |
|
338 |
|
|
339 |
Compiler compiler = createCompiler(); |
|
340 |
|
|
341 |
Code code = compiler.compileExpression(source); |
|
342 |
assertEquals("CONCAT(\"precio\", ' euros')", code.toString()); |
|
343 |
|
|
344 |
SymbolTable symbolTable = createSymbolTable(); |
|
345 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
346 |
Code code2 = optimizer.optimize(code); |
|
347 |
assertEquals("CONCAT(\"precio\", ' euros')", code2.toString()); |
|
348 |
} |
|
349 |
|
|
350 |
public void testInvokeFunction1() { |
|
351 |
String source = "ST_Area(GEOMETRY)"; |
|
352 |
|
|
353 |
Compiler compiler = createCompiler(); |
|
354 |
|
|
355 |
Code code = compiler.compileExpression(source); |
|
356 |
assertEquals("ST_Area(\"GEOMETRY\")", code.toString()); |
|
357 |
|
|
358 |
SymbolTable symbolTable = createSymbolTable(); |
|
359 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
360 |
Code code2 = optimizer.optimize(code); |
|
361 |
assertEquals("ST_Area(\"GEOMETRY\")", code2.toString()); |
|
362 |
} |
|
363 |
|
|
364 |
public void testInvokeMethod1() { |
|
365 |
String source = "'hola'.length()"; |
|
366 |
|
|
367 |
Compiler compiler = createCompiler(); |
|
368 |
|
|
369 |
Code code = compiler.compileExpression(source); |
|
370 |
assertEquals("'hola'->length()", code.toString()); |
|
371 |
|
|
372 |
SymbolTable symbolTable = createSymbolTable(); |
|
373 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
374 |
Code code2 = optimizer.optimize(code); |
|
375 |
assertEquals("'hola'->length()", code2.toString()); |
|
376 |
} |
|
377 |
|
|
378 |
public void testSpatialExpression1() throws Exception { |
|
379 |
IProjection proj = CRSFactory.getCRS("EPSG:4326"); |
|
380 |
ExpressionBuilder builder = new DefaultExpressionBuilder(); |
|
381 |
builder.getConfig().set(ExpressionBuilder.Config.geometry_type_support, ExpressionBuilder.GeometrySupportType.WKB); |
|
382 |
|
|
383 |
String source = builder.and( |
|
384 |
builder.custom(this.createExpr1()), |
|
385 |
builder.ST_Intersects( |
|
386 |
builder.geometry(createPolygon()), |
|
387 |
builder.column("GEOMETRY") |
|
388 |
) |
|
389 |
).toString(); |
|
390 |
|
|
391 |
MutableSymbolTable symbolTable = createSymbolTable(); |
|
392 |
symbolTable.setVar("campo1", 11); |
|
393 |
symbolTable.setVar("GEOMETRY", createPoint(50, 50)); |
|
394 |
|
|
395 |
Interpreter interpreter = createInterpreter(symbolTable); |
|
396 |
Compiler compiler = createCompiler(); |
|
397 |
Code code = compiler.compileExpression(source); |
|
398 |
System.out.println(code.toString()); |
|
399 |
assertEquals( |
|
400 |
"and(>(\"campo1\", 10), ST_Intersects(ST_GeomFromWKB(DECODE('000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000', 'hex'), 4326), \"GEOMETRY\"))", |
|
401 |
code.toString() |
|
402 |
); |
|
403 |
|
|
404 |
// long t1 = System.currentTimeMillis(); |
|
405 |
// for (int i = 0; i < 1000; i++) { |
|
406 |
// interpreter.run(code); |
|
407 |
// } |
|
408 |
// System.out.println("Sin optimizar: " + (System.currentTimeMillis() - t1)); |
|
409 |
|
|
410 |
// t1 = System.currentTimeMillis(); |
|
411 |
Optimizer optimizer = createOptimizer(symbolTable); |
|
412 |
Code code2 = optimizer.optimize(code); |
|
413 |
// System.out.println("Tiempo de optimizacion: " + (System.currentTimeMillis() - t1)); |
|
414 |
System.out.println(code2.toString()); |
|
415 |
assertEquals( |
|
416 |
"and(>(\"campo1\", 10), ST_Intersects('POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))'::geometry, \"GEOMETRY\"))", |
|
417 |
code2.toString() |
|
418 |
); |
|
419 |
|
|
420 |
// t1 = System.currentTimeMillis(); |
|
421 |
// for (int i = 0; i < 1000; i++) { |
|
422 |
// interpreter.run(code2); |
|
423 |
// } |
|
424 |
// System.out.println("Optimizado: " + (System.currentTimeMillis() - t1)); |
|
425 |
|
|
426 |
} |
|
427 |
|
|
428 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/test/java/org/gvsig/expresionevaluator/impl/TestCase1.java | ||
---|---|---|
37 | 37 |
protected void setUp() throws Exception { |
38 | 38 |
super.setUp(); |
39 | 39 |
new DefaultLibrariesInitializer().fullInitialize(); |
40 |
// new ExpressionEvaluatorImplLibrary().initialize(); |
|
41 | 40 |
} |
42 | 41 |
|
43 | 42 |
@Override |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/symboltable/SQLSymbolTable.java | ||
---|---|---|
39 | 39 |
import org.gvsig.expressionevaluator.impl.function.operator.EqOperator; |
40 | 40 |
import org.gvsig.expressionevaluator.impl.function.operator.GeOperator; |
41 | 41 |
import org.gvsig.expressionevaluator.impl.function.operator.GtOperator; |
42 |
import org.gvsig.expressionevaluator.impl.function.operator.IsOperator; |
|
42 | 43 |
import org.gvsig.expressionevaluator.impl.function.operator.LeOperator; |
43 | 44 |
import org.gvsig.expressionevaluator.impl.function.operator.LtOperator; |
44 | 45 |
import org.gvsig.expressionevaluator.impl.function.operator.ModOperator; |
... | ... | |
86 | 87 |
this.addOperator(new AddOperator()); |
87 | 88 |
this.addOperator(new DivOperator()); |
88 | 89 |
this.addOperator(new EqOperator()); |
90 |
this.addOperator(new IsOperator()); |
|
89 | 91 |
this.addOperator(new GeOperator()); |
90 | 92 |
this.addOperator(new GtOperator()); |
91 | 93 |
this.addOperator(new LeOperator()); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpressionEvaluatorManager.java | ||
---|---|---|
14 | 14 |
import org.gvsig.expressionevaluator.Interpreter; |
15 | 15 |
import org.gvsig.expressionevaluator.LexicalAnalyzer; |
16 | 16 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
17 |
import org.gvsig.expressionevaluator.Optimizer; |
|
17 | 18 |
import org.gvsig.expressionevaluator.SymbolTable; |
18 | 19 |
import org.gvsig.expressionevaluator.impl.symboltable.OGCSymbolTable; |
19 | 20 |
import org.gvsig.expressionevaluator.impl.symboltable.SQLSymbolTable; |
... | ... | |
155 | 156 |
ExpressionBuilder x = new DefaultExpressionBuilder(); |
156 | 157 |
return x; |
157 | 158 |
} |
159 |
|
|
160 |
@Override |
|
161 |
public Optimizer createOptimizer() { |
|
162 |
Optimizer x = new DefaultOptimizer(); |
|
163 |
return x; |
|
164 |
} |
|
158 | 165 |
} |
159 | 166 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpression.java | ||
---|---|---|
10 | 10 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
11 | 11 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
12 | 12 |
import org.gvsig.expressionevaluator.Interpreter; |
13 |
import org.gvsig.expressionevaluator.Optimizer; |
|
13 | 14 |
import org.gvsig.expressionevaluator.SymbolTable; |
14 | 15 |
import org.gvsig.tools.ToolsLocator; |
15 | 16 |
import org.gvsig.tools.dynobject.DynStruct; |
... | ... | |
36 | 37 |
|
37 | 38 |
private Code code = null; |
38 | 39 |
private Interpreter interpreter; |
40 |
private boolean hasNotBeenOptimized = true; |
|
39 | 41 |
|
40 | 42 |
public DefaultExpression() { |
41 | 43 |
|
... | ... | |
66 | 68 |
public void setPhrase(String phrase) { |
67 | 69 |
this.phrase = phrase; |
68 | 70 |
this.code = null; |
71 |
this.hasNotBeenOptimized = true; |
|
69 | 72 |
} |
70 | 73 |
|
71 | 74 |
@Override |
... | ... | |
113 | 116 |
this.scripts = null; |
114 | 117 |
this.code = null; |
115 | 118 |
this.interpreter = null; |
119 |
this.hasNotBeenOptimized = true; |
|
116 | 120 |
} |
117 | 121 |
|
118 | 122 |
@Override |
... | ... | |
131 | 135 |
this.interpreter = manager.createInterpreter(); |
132 | 136 |
} |
133 | 137 |
this.interpreter.setSymbolTable(symbolTable); |
138 |
if( this.hasNotBeenOptimized ) { |
|
139 |
Optimizer optimizer = new DefaultOptimizer(symbolTable); |
|
140 |
this.code = optimizer.optimize(this.getCode()); |
|
141 |
this.hasNotBeenOptimized = false; |
|
142 |
} |
|
134 | 143 |
Object x = this.interpreter.run(this.getCode()); |
135 | 144 |
return x; |
136 | 145 |
} |
... | ... | |
167 | 176 |
public void loadFromState(PersistentState state) throws PersistenceException { |
168 | 177 |
ScriptManager scriptManager = ToolsLocator.getScriptManager(); |
169 | 178 |
|
179 |
this.clear(); |
|
180 |
|
|
170 | 181 |
this.phrase = state.getString("phrase"); |
171 | 182 |
String userScript_code = state.getString("userScript_code"); |
172 | 183 |
String userScript_language = state.getString("userScript_language"); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/AddOperator.java | ||
---|---|---|
10 | 10 |
} |
11 | 11 |
|
12 | 12 |
@Override |
13 |
public boolean allowConstantFolding() { |
|
14 |
return true; |
|
15 |
} |
|
16 |
|
|
17 |
@Override |
|
13 | 18 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
14 | 19 |
int type = this.getType(op1, op2); |
15 | 20 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/RegExpOperator.java | ||
---|---|---|
13 | 13 |
} |
14 | 14 |
|
15 | 15 |
@Override |
16 |
public boolean allowConstantFolding() { |
|
17 |
return true; |
|
18 |
} |
|
19 |
|
|
20 |
@Override |
|
16 | 21 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
17 | 22 |
String re = Objects.toString(op2, ""); |
18 | 23 |
Pattern exp = (Pattern) interpreter.getCache().get(this.getClass(), re); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/GeOperator.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
16 | 21 |
int type = this.getType(op1, op2); |
17 | 22 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/MulOperator.java | ||
---|---|---|
10 | 10 |
} |
11 | 11 |
|
12 | 12 |
@Override |
13 |
public boolean allowConstantFolding() { |
|
14 |
return true; |
|
15 |
} |
|
16 |
|
|
17 |
@Override |
|
13 | 18 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
14 | 19 |
int type = this.getType(op1, op2); |
15 | 20 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/SubstOperator.java | ||
---|---|---|
10 | 10 |
} |
11 | 11 |
|
12 | 12 |
@Override |
13 |
public boolean allowConstantFolding() { |
|
14 |
return true; |
|
15 |
} |
|
16 |
|
|
17 |
@Override |
|
13 | 18 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
14 | 19 |
int type = this.getType(op1, op2); |
15 | 20 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/LeOperator.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
16 | 21 |
int type = this.getType(op1, op2); |
17 | 22 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/NotOperator.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object arg) { |
16 | 21 |
if( ! (arg instanceof Boolean) ) { |
17 | 22 |
throw new IllegalArgumentException("NOT operator require a boolean"); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/AndOperator.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
15 | 20 |
if( op1 instanceof Boolean && op2 instanceof Boolean ) { |
16 | 21 |
boolean value = ((Boolean) op1) && ((Boolean) op2); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/NeOperator.java | ||
---|---|---|
13 | 13 |
} |
14 | 14 |
|
15 | 15 |
@Override |
16 |
public boolean allowConstantFolding() { |
|
17 |
return true; |
|
18 |
} |
|
19 |
|
|
20 |
@Override |
|
16 | 21 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
17 | 22 |
int type = this.getType(op1, op2); |
18 | 23 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/EqOperator.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
16 | 21 |
int type = this.getType(op1, op2); |
17 | 22 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/GtOperator.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
16 | 21 |
int type = this.getType(op1, op2); |
17 | 22 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/IsOperator.java | ||
---|---|---|
1 |
package org.gvsig.expressionevaluator.impl.function.operator; |
|
2 |
|
|
3 |
import org.apache.commons.lang3.ObjectUtils; |
|
4 |
import org.apache.commons.math.util.MathUtils; |
|
5 |
import org.gvsig.expressionevaluator.Function; |
|
6 |
import org.gvsig.expressionevaluator.Interpreter; |
|
7 |
|
|
8 |
public class IsOperator extends AbstractBinaryOperator { |
|
9 |
|
|
10 |
public IsOperator() { |
|
11 |
super(Function.GROUP_BOOLEAN, "IS"); |
|
12 |
} |
|
13 |
|
|
14 |
@Override |
|
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
20 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
|
21 |
int type = this.getType(op1, op2); |
|
22 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
|
23 |
boolean value = MathUtils.compareTo( |
|
24 |
((Number) op1).doubleValue(), |
|
25 |
((Number) op2).doubleValue(), |
|
26 |
interpreter.getAccuracy()==null? MathUtils.EPSILON:interpreter.getAccuracy() |
|
27 |
) == 0; |
|
28 |
return value; |
|
29 |
} |
|
30 |
if( (type & TYPE_FLOAT) == TYPE_FLOAT ) { |
|
31 |
boolean value = MathUtils.compareTo( |
|
32 |
((Number) op1).floatValue(), |
|
33 |
((Number) op2).floatValue(), |
|
34 |
interpreter.getAccuracy()==null? MathUtils.EPSILON:interpreter.getAccuracy() |
|
35 |
) == 0; |
|
36 |
return value; |
|
37 |
} |
|
38 |
if( (type & TYPE_LONG) == TYPE_LONG ) { |
|
39 |
boolean value = ((Number) op1).longValue() == ((Number) op2).longValue(); |
|
40 |
return value; |
|
41 |
} |
|
42 |
if( (type & TYPE_INT) == TYPE_INT ) { |
|
43 |
boolean value = ((Number) op1).intValue() == ((Number) op2).intValue(); |
|
44 |
return value; |
|
45 |
} |
|
46 |
if( op2 instanceof Comparable && op2 instanceof Comparable ) { |
|
47 |
boolean value = ObjectUtils.compare((Comparable)op1,(Comparable)op2) == 0; |
|
48 |
return value; |
|
49 |
} |
|
50 |
throw new IllegalArgumentException("Types not allowed in '" + name() + "' operand."); |
|
51 |
} |
|
52 |
|
|
53 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/LtOperator.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
16 | 21 |
int type = this.getType(op1, op2); |
17 | 22 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/ModOperator.java | ||
---|---|---|
10 | 10 |
} |
11 | 11 |
|
12 | 12 |
@Override |
13 |
public boolean allowConstantFolding() { |
|
14 |
return true; |
|
15 |
} |
|
16 |
|
|
17 |
@Override |
|
13 | 18 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
14 | 19 |
int type = this.getType(op1, op2); |
15 | 20 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/OrOperator.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
15 | 20 |
if( op1 instanceof Boolean && op2 instanceof Boolean ) { |
16 | 21 |
boolean value = ((Boolean) op1) || ((Boolean) op2); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/DivOperator.java | ||
---|---|---|
10 | 10 |
} |
11 | 11 |
|
12 | 12 |
@Override |
13 |
public boolean allowConstantFolding() { |
|
14 |
return true; |
|
15 |
} |
|
16 |
|
|
17 |
@Override |
|
13 | 18 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
14 | 19 |
int type = this.getType(op1, op2); |
15 | 20 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/DateFunction.java | ||
---|---|---|
22 | 22 |
} |
23 | 23 |
|
24 | 24 |
@Override |
25 |
public boolean allowConstantFolding() { |
|
26 |
return true; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
25 | 30 |
public Object call(Interpreter interpreter, Object[] args) { |
26 | 31 |
String date = getStr(args, 0); |
27 | 32 |
String format = null; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/TimeFunction.java | ||
---|---|---|
22 | 22 |
} |
23 | 23 |
|
24 | 24 |
@Override |
25 |
public boolean allowConstantFolding() { |
|
26 |
return true; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
25 | 30 |
public Object call(Interpreter interpreter, Object[] args) { |
26 | 31 |
String date = getStr(args, 0); |
27 | 32 |
String format = null; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/TimestampFunction.java | ||
---|---|---|
22 | 22 |
} |
23 | 23 |
|
24 | 24 |
@Override |
25 |
public boolean allowConstantFolding() { |
|
26 |
return true; |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
25 | 30 |
public Object call(Interpreter interpreter, Object[] args) { |
26 | 31 |
String date = getStr(args, 0); |
27 | 32 |
String format = null; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STPerimeterFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry geom = getGeom(args, 0); |
17 | 22 |
double r = geom.perimeter(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STNumPointsFunction.java | ||
---|---|---|
13 | 13 |
} |
14 | 14 |
|
15 | 15 |
@Override |
16 |
public boolean allowConstantFolding() { |
|
17 |
return true; |
|
18 |
} |
|
19 |
|
|
20 |
@Override |
|
16 | 21 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
17 | 22 |
Geometry geom = getGeom(args, 0); |
18 | 23 |
if ( geom instanceof OrientablePrimitive ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STSRIDFunction.java | ||
---|---|---|
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
@Override |
17 |
public boolean allowConstantFolding() { |
|
18 |
return true; |
|
19 |
} |
|
20 |
|
|
21 |
@Override |
|
17 | 22 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
18 | 23 |
Geometry geom = getGeom(args, 0); |
19 | 24 |
IProjection proj = geom.getProjection(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STIntersectionFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry r = getGeom(args, 0).intersection(getGeom(args, 1)); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STCentroidFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Point r = getGeom(args, 0).centroid(); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STPointNFunction.java | ||
---|---|---|
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
@Override |
17 |
public boolean allowConstantFolding() { |
|
18 |
return true; |
|
19 |
} |
|
20 |
|
|
21 |
@Override |
|
17 | 22 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
18 | 23 |
Geometry geom = getGeom(args, 0); |
19 | 24 |
if ( geom instanceof OrientablePrimitive ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STXFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
double r = getPoint(args, 0).getX(); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STStartPointFunction.java | ||
---|---|---|
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
@Override |
17 |
public boolean allowConstantFolding() { |
|
18 |
return true; |
|
19 |
} |
|
20 |
|
|
21 |
@Override |
|
17 | 22 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
18 | 23 |
Geometry geom = getGeom(args, 0); |
19 | 24 |
if ( geom instanceof OrientablePrimitive ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STBufferFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry r = getGeom(args, 0).buffer(getDouble(args, 1)); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STZFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
double r = getPoint(args, 0).getCoordinateAt(Geometry.DIMENSIONS.Z); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STTouchesFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).touches(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STGeomFromTextFunction.java | ||
---|---|---|
16 | 16 |
} |
17 | 17 |
|
18 | 18 |
@Override |
19 |
public boolean allowConstantFolding() { |
|
20 |
return true; |
|
21 |
} |
|
22 |
|
|
23 |
@Override |
|
19 | 24 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
20 | 25 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
21 | 26 |
String wkt = getStr(args, 0); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STEndPointFunction.java | ||
---|---|---|
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
@Override |
17 |
public boolean allowConstantFolding() { |
|
18 |
return true; |
|
19 |
} |
|
20 |
|
|
21 |
@Override |
|
17 | 22 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
18 | 23 |
Geometry geom = getGeom(args, 0); |
19 | 24 |
if ( geom instanceof OrientablePrimitive ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STCrossesFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).crosses(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STDisjointFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).disjoint(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STNumGeometriesFunction.java | ||
---|---|---|
13 | 13 |
} |
14 | 14 |
|
15 | 15 |
@Override |
16 |
public boolean allowConstantFolding() { |
|
17 |
return true; |
|
18 |
} |
|
19 |
|
|
20 |
@Override |
|
16 | 21 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
17 | 22 |
Geometry geom = getGeom(args, 0); |
18 | 23 |
if( geom instanceof Aggregate ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STIsSimpleFunction.java | ||
---|---|---|
3 | 3 |
import org.apache.commons.lang3.Range; |
4 | 4 |
import org.gvsig.expressionevaluator.Interpreter; |
5 | 5 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
6 |
import org.gvsig.fmap.geom.Geometry; |
|
7 | 6 |
|
8 | 7 |
public class STIsSimpleFunction extends AbstractFunction { |
9 | 8 |
|
... | ... | |
12 | 11 |
} |
13 | 12 |
|
14 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
15 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 20 |
boolean r = getGeom(args, 0).isSimple(); |
17 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STDimensionFunction.java | ||
---|---|---|
13 | 13 |
} |
14 | 14 |
|
15 | 15 |
@Override |
16 |
public boolean allowConstantFolding() { |
|
17 |
return true; |
|
18 |
} |
|
19 |
|
|
20 |
@Override |
|
16 | 21 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
17 | 22 |
Geometry geom = getGeom(args, 0); |
18 | 23 |
GeometryType type = geom.getGeometryType(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STConvexHullFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry r = getGeom(args, 0).convexHull(); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STOverlapsFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).overlaps(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STCoversFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).covers(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STWithinFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).within(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STYFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
double r = getPoint(args, 0).getY(); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STAreaFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry geom = getGeom(args, 0); |
17 | 22 |
double r = geom.area(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STAsTextFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
String r = getGeom(args, 0).convertToWKT(); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STGeometryNFunction.java | ||
---|---|---|
14 | 14 |
} |
15 | 15 |
|
16 | 16 |
@Override |
17 |
public boolean allowConstantFolding() { |
|
18 |
return true; |
|
19 |
} |
|
20 |
|
|
21 |
@Override |
|
17 | 22 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
18 | 23 |
Geometry geom = getGeom(args, 0); |
19 | 24 |
if( geom instanceof Aggregate ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STEnvelopeFunction.java | ||
---|---|---|
3 | 3 |
import org.apache.commons.lang3.Range; |
4 | 4 |
import org.gvsig.expressionevaluator.Interpreter; |
5 | 5 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
6 |
import org.gvsig.fmap.geom.Geometry; |
|
7 | 6 |
import org.gvsig.fmap.geom.primitive.Envelope; |
8 | 7 |
|
9 | 8 |
public class STEnvelopeFunction extends AbstractFunction { |
... | ... | |
13 | 12 |
} |
14 | 13 |
|
15 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
16 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
17 | 21 |
Envelope r = getGeom(args, 0).getEnvelope(); |
18 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STContainsFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).contains(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STGeomFromWKBFunction.java | ||
---|---|---|
16 | 16 |
} |
17 | 17 |
|
18 | 18 |
@Override |
19 |
public boolean allowConstantFolding() { |
|
20 |
return true; |
|
21 |
} |
|
22 |
|
|
23 |
@Override |
|
19 | 24 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
20 | 25 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
21 | 26 |
byte[] wkb = (byte[]) getObject(args, 0); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STCoveredByFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).coveredBy(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STIntersectsFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
boolean r = getGeom(args, 0).intersects(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STUnionFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry r = getGeom(args, 0).union(getGeom(args, 1)); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STDifferenceFunction.java | ||
---|---|---|
12 | 12 |
} |
13 | 13 |
|
14 | 14 |
@Override |
15 |
public boolean allowConstantFolding() { |
|
16 |
return true; |
|
17 |
} |
|
18 |
|
|
19 |
@Override |
|
15 | 20 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 21 |
Geometry r = getGeom(args, 0).difference(getGeom(args, 1)); |
17 | 22 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STDistanceFunction.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
15 | 20 |
double r = getGeom(args, 0).distance(getGeom(args, 1)); |
16 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/spatial/STIsValidFunction.java | ||
---|---|---|
3 | 3 |
import org.apache.commons.lang3.Range; |
4 | 4 |
import org.gvsig.expressionevaluator.Interpreter; |
5 | 5 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
6 |
import org.gvsig.fmap.geom.Geometry; |
|
7 | 6 |
|
8 | 7 |
public class STIsValidFunction extends AbstractFunction { |
9 | 8 |
|
... | ... | |
12 | 11 |
} |
13 | 12 |
|
14 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
15 | 19 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
16 | 20 |
boolean r = getGeom(args, 0).isValid(); |
17 | 21 |
return r; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/predicate/IlikeOperator.java | ||
---|---|---|
11 | 11 |
} |
12 | 12 |
|
13 | 13 |
@Override |
14 |
public boolean allowConstantFolding() { |
|
15 |
return true; |
|
16 |
} |
|
17 |
|
|
18 |
@Override |
|
14 | 19 |
public Object call(Interpreter interpreter, Object op1, Object op2) { |
15 | 20 |
if( op1 instanceof CharSequence && op2 instanceof CharSequence ) { |
16 | 21 |
boolean value = ilike(((CharSequence) op1).toString(), ((CharSequence) op2).toString()); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/predicate/LikeOperator.java | ||
---|---|---|
27 | 27 |
} |
28 | 28 |
|
29 | 29 |
@Override |
30 |
public boolean allowConstantFolding() { |
Also available in: Unified diff