Revision 46010
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionBuilder.java | ||
---|---|---|
123 | 123 |
public static final String FUNCTION_LIST = "LIST"; |
124 | 124 |
public static final String FUNCTION_TUPLE = "TUPLE"; |
125 | 125 |
public static final String FUNCTION_DICT = "DICT"; |
126 |
public static final String FUNCTION_$$CONSTANT = "$$CONSTANT"; |
|
127 |
public static final String FUNCTION_$$IDENTIFIER = "$$IDENTIFIER"; |
|
126 | 128 |
|
127 | 129 |
public static final String FUNCTION_GETATTR = "GETATTR"; |
128 | 130 |
public static final String FUNCTION_GETITEM = "GETITEM"; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/spi/formatter/value/Getattr.java | ||
---|---|---|
31 | 31 |
Function function = (Function) function0; |
32 | 32 |
Value obj = function.parameters().get(0); |
33 | 33 |
Value attr = function.parameters().get(1); |
34 |
return obj.toString(formatter)+"."+ attr.toString(formatter); |
|
34 |
if( attr instanceof ExpressionBuilder.Variable && |
|
35 |
((ExpressionBuilder.Variable)attr).name()instanceof CharSequence) { |
|
36 |
return obj.toString(formatter)+".\""+ ((ExpressionBuilder.Variable)attr).name().toString()+"\""; |
|
37 |
} else if( attr instanceof ExpressionBuilder.Constant && |
|
38 |
((ExpressionBuilder.Constant)attr).value() instanceof CharSequence) { |
|
39 |
return obj.toString(formatter)+"."+ ((ExpressionBuilder.Constant)attr).value().toString(); |
|
40 |
} else { |
|
41 |
return "GETATTR("+obj.toString(formatter)+","+attr.toString(formatter)+")"; |
|
42 |
} |
|
43 |
|
|
35 | 44 |
} |
36 | 45 |
|
37 | 46 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/spi/BaseExpressionEvaluator.java | ||
---|---|---|
267 | 267 |
} |
268 | 268 |
} |
269 | 269 |
|
270 |
@Override |
|
271 |
public void addSymbolTable(SymbolTable symbolTable) { |
|
272 |
this.symbolTable.addSymbolTable(symbolTable); |
|
273 |
} |
|
274 |
|
|
270 | 275 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/spi/AbstractSymbolTable.java | ||
---|---|---|
259 | 259 |
public SymbolTable clone() throws CloneNotSupportedException { |
260 | 260 |
AbstractSymbolTable other = (AbstractSymbolTable) super.clone(); |
261 | 261 |
if( this instanceof MutableSymbolTable ) { |
262 |
other.vars = new HashMap<>(this.vars); |
|
263 |
other.functions = new HashMap<>(this.functions); |
|
264 |
other.functionAlias = new HashMap<>(this.functionAlias); |
|
262 |
if( this.vars!=null ) { |
|
263 |
other.vars = new HashMap<>(this.vars); |
|
264 |
} |
|
265 |
if( this.functions!=null ) { |
|
266 |
other.functions = new HashMap<>(this.functions); |
|
267 |
} |
|
268 |
if( this.functionAlias!=null ) { |
|
269 |
other.functionAlias = new HashMap<>(this.functionAlias); |
|
270 |
} |
|
265 | 271 |
} |
266 | 272 |
other.symbolTables = new ArrayList<>(); |
267 |
for (SymbolTable symbolTable : this.symbolTables) { |
|
268 |
other.symbolTables.add(symbolTable.clone()); |
|
273 |
if( this.symbolTables!=null ) { |
|
274 |
for (SymbolTable symbolTable : this.symbolTables) { |
|
275 |
other.symbolTables.add(symbolTable.clone()); |
|
276 |
} |
|
269 | 277 |
} |
270 | 278 |
return other; |
271 | 279 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/ExpressionEvaluator.java | ||
---|---|---|
18 | 18 |
*/ |
19 | 19 |
@Override |
20 | 20 |
public String getSQL(); |
21 |
|
|
22 |
public void addSymbolTable(SymbolTable symbolTable); |
|
21 | 23 |
|
22 | 24 |
} |
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 | ||
---|---|---|
407 | 407 |
Compiler compiler = createCompiler(); |
408 | 408 |
|
409 | 409 |
Code code = compiler.compileExpression(source); |
410 |
assertEquals("'hola'->length()", code.toString());
|
|
410 |
assertEquals("'hola'.length()", code.toString());
|
|
411 | 411 |
|
412 | 412 |
SymbolTable symbolTable = createSymbolTable(); |
413 | 413 |
Optimizer optimizer = createOptimizer(symbolTable); |
414 | 414 |
Code code2 = optimizer.optimize(code); |
415 |
assertEquals("'hola'->length()", code2.toString());
|
|
415 |
assertEquals("'hola'.length()", code2.toString());
|
|
416 | 416 |
} |
417 | 417 |
|
418 | 418 |
} |
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/TestExpressionBuilder.java | ||
---|---|---|
5 | 5 |
import org.apache.commons.lang3.ArrayUtils; |
6 | 6 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
7 | 7 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
8 |
import org.gvsig.tools.dataTypes.DataTypeUtils; |
|
9 | 8 |
import org.gvsig.tools.dataTypes.DataTypes; |
10 | 9 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
11 | 10 |
|
... | ... | |
644 | 643 |
assertEquals("'10.5'", v.toString()); |
645 | 644 |
|
646 | 645 |
} |
646 |
|
|
647 |
public void testGetAttr1() { |
|
648 |
ExpressionBuilder builder = createExpressionBuilder(); |
|
649 |
builder.set( |
|
650 |
builder.getattr("ARENA2_VEHICULOS","ID_ACCIDENTE") |
|
651 |
); |
|
652 |
|
|
653 |
assertEquals( |
|
654 |
"\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\"", |
|
655 |
builder.toString() |
|
656 |
); |
|
657 |
assertEquals( |
|
658 |
"[ARENA2_VEHICULOS, ID_ACCIDENTE]", |
|
659 |
ArrayUtils.toString(builder.variables_names()) |
|
660 |
); |
|
661 |
assertEquals( |
|
662 |
"[]", |
|
663 |
ArrayUtils.toString(builder.parameters_names()) |
|
664 |
); |
|
665 |
} |
|
647 | 666 |
|
648 |
} |
|
667 |
} |
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/TestCompiler.java | ||
---|---|---|
7 | 7 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
8 | 8 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
9 | 9 |
import org.gvsig.expressionevaluator.ExpressionSyntaxException; |
10 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
|
10 | 11 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
11 | 12 |
|
12 | 13 |
|
... | ... | |
44 | 45 |
return compiler; |
45 | 46 |
} |
46 | 47 |
|
48 |
protected MutableSymbolTable createSymbolTable() { |
|
49 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
|
50 |
MutableSymbolTable symbolTable = manager.createSymbolTable(); |
|
51 |
symbolTable.setVar("precio", 200); |
|
52 |
symbolTable.setVar("1990", 0.168873933773767); |
|
53 |
return symbolTable; |
|
54 |
} |
|
55 |
|
|
47 | 56 |
public void testIdentifier1() { |
48 | 57 |
String source = "precio"; |
49 | 58 |
|
... | ... | |
315 | 324 |
Compiler compiler = createCompiler(); |
316 | 325 |
|
317 | 326 |
Code code = compiler.compileExpression(source); |
318 |
assertEquals("'hola'->length()", code.toString());
|
|
327 |
assertEquals("'hola'.length()", code.toString());
|
|
319 | 328 |
} |
320 | 329 |
|
321 | 330 |
|
331 |
public void testInvokeMethod1b() { |
|
332 |
String source = "'hola'->length()"; |
|
333 |
|
|
334 |
Compiler compiler = createCompiler(); |
|
335 |
|
|
336 |
Code code = compiler.compileExpression(source); |
|
337 |
assertEquals("'hola'.length()", code.toString()); |
|
338 |
} |
|
339 |
|
|
340 |
|
|
322 | 341 |
public void testInvokeMethod2() { |
323 | 342 |
String source = "'hola'.indexOf('l') "; |
324 | 343 |
|
325 | 344 |
Compiler compiler = createCompiler(); |
326 | 345 |
|
327 | 346 |
Code code = compiler.compileExpression(source); |
328 |
assertEquals("'hola'->indexOf('l')", code.toString());
|
|
347 |
assertEquals("'hola'.indexOf('l')", code.toString());
|
|
329 | 348 |
} |
330 | 349 |
|
331 | 350 |
public void testSyntaxError1() { |
... | ... | |
472 | 491 |
assertEquals("-0.000123", code.toString()); |
473 | 492 |
} |
474 | 493 |
|
494 |
public void testGetAttr1() { |
|
495 |
String source = "ARENA2_VEHICULOS.ID_ACCIDENTE"; |
|
475 | 496 |
|
497 |
Compiler compiler = createCompiler(); |
|
498 |
|
|
499 |
Code code = compiler.compileExpression(source); |
|
500 |
assertEquals( "GETATTR(\"ARENA2_VEHICULOS\", 'ID_ACCIDENTE')", code.toString()); |
|
501 |
} |
|
502 |
|
|
503 |
public void testGetAttr1b() { |
|
504 |
String source = "ARENA2_VEHICULOS.ID_ACCIDENTE"; |
|
505 |
|
|
506 |
Compiler compiler = createCompiler(); |
|
507 |
|
|
508 |
Code code = compiler.compileExpression(source); |
|
509 |
code.link(this.createSymbolTable()); |
|
510 |
assertEquals( "\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\"", code.toString()); |
|
511 |
} |
|
512 |
|
|
513 |
public void testGetAttr2a() { |
|
514 |
String source = "GETATTR(ARENA2_VEHICULOS,'ID_ACCIDENTE')"; |
|
515 |
|
|
516 |
Compiler compiler = createCompiler(); |
|
517 |
|
|
518 |
Code code = compiler.compileExpression(source); |
|
519 |
code.link(this.createSymbolTable()); |
|
520 |
assertEquals( "\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\"", code.toString()); |
|
521 |
} |
|
522 |
|
|
523 |
public void testGetAttr2b() { |
|
524 |
String source = "GETATTR(ARENA2_VEHICULOS,\"ID_ACCIDENTE\")"; |
|
525 |
|
|
526 |
Compiler compiler = createCompiler(); |
|
527 |
|
|
528 |
Code code = compiler.compileExpression(source); |
|
529 |
code.link(this.createSymbolTable()); |
|
530 |
assertEquals( "GETATTR(\"ARENA2_VEHICULOS\", \"ID_ACCIDENTE\")", code.toString()); |
|
531 |
} |
|
532 |
|
|
533 |
public void testGetAttr2c() { |
|
534 |
String source = "GETATTR(ARENA2_VEHICULOS,'ID_ACCIDENTE'||3)"; |
|
535 |
|
|
536 |
Compiler compiler = createCompiler(); |
|
537 |
|
|
538 |
Code code = compiler.compileExpression(source); |
|
539 |
code.link(this.createSymbolTable()); |
|
540 |
assertEquals( "GETATTR(\"ARENA2_VEHICULOS\", ('ID_ACCIDENTE' || 3))", code.toString()); |
|
541 |
} |
|
542 |
|
|
543 |
|
|
476 | 544 |
} |
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/DefaultCodeBuilder.java | ||
---|---|---|
730 | 730 |
} |
731 | 731 |
StringBuilder builder = new StringBuilder(); |
732 | 732 |
builder.append(this.instance.toString(formatter)); |
733 |
builder.append("->");
|
|
733 |
builder.append(".");
|
|
734 | 734 |
builder.append(this.methodname()); |
735 | 735 |
builder.append("("); |
736 | 736 |
if( this.parameters()!=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/symboltable/ProgrammingSymbolTable.java | ||
---|---|---|
1 | 1 |
package org.gvsig.expressionevaluator.impl.symboltable; |
2 | 2 |
|
3 | 3 |
import org.gvsig.expressionevaluator.Function; |
4 |
import org.gvsig.expressionevaluator.impl.function.programming.$$ConstantFunction; |
|
5 |
import org.gvsig.expressionevaluator.impl.function.programming.$$IdentifierFunction; |
|
4 | 6 |
import org.gvsig.expressionevaluator.impl.function.programming.CallFunction; |
5 | 7 |
import org.gvsig.expressionevaluator.impl.function.programming.CallMethodFunction; |
6 | 8 |
import org.gvsig.expressionevaluator.impl.function.programming.CaseFunction; |
... | ... | |
77 | 79 |
this.addFunction(new MapFunction()); |
78 | 80 |
this.addFunction(new CallFunction()); |
79 | 81 |
this.addFunction(new VarFunction()); |
82 |
this.addFunction(new $$ConstantFunction()); |
|
83 |
this.addFunction(new $$IdentifierFunction()); |
|
80 | 84 |
} |
81 | 85 |
|
82 | 86 |
private void addOperator(Function operator) { |
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/programming/$$ConstantFunction.java | ||
---|---|---|
1 |
package org.gvsig.expressionevaluator.impl.function.programming; |
|
2 |
|
|
3 |
import org.apache.commons.lang3.Range; |
|
4 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_$$CONSTANT; |
|
5 |
import org.gvsig.expressionevaluator.Function; |
|
6 |
import org.gvsig.expressionevaluator.Interpreter; |
|
7 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
|
8 |
|
|
9 |
public class $$ConstantFunction extends AbstractFunction { |
|
10 |
|
|
11 |
public $$ConstantFunction() { |
|
12 |
super( |
|
13 |
Function.GROUP_PROGRAMMING, |
|
14 |
FUNCTION_$$CONSTANT, |
|
15 |
Range.is(1), |
|
16 |
"Returns the value passed as a parameter.\n" + |
|
17 |
"This function is used to mark that the parameter must be evaluated before "+ |
|
18 |
"converting the expression to SQL and passed to it as a constant. ", |
|
19 |
FUNCTION_$$CONSTANT+"({{expression}})", |
|
20 |
null, |
|
21 |
"Object", |
|
22 |
false |
|
23 |
); |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public boolean allowConstantFolding() { |
|
28 |
return false; |
|
29 |
} |
|
30 |
|
|
31 |
@Override |
|
32 |
public Object call(Interpreter interpreter, final Object[] args) throws Exception { |
|
33 |
return args[0]; |
|
34 |
} |
|
35 |
|
|
36 |
|
|
37 |
} |
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/programming/GetattrFunction.java | ||
---|---|---|
64 | 64 |
StringBuilder builder = new StringBuilder(); |
65 | 65 |
Code arg0 = args.get(0); |
66 | 66 |
Code arg1 = args.get(1); |
67 |
if( arg0 instanceof Code.Identifier && arg1 instanceof Code.Identifier ) { |
|
67 |
// if( arg0 instanceof Code.Identifier && arg1 instanceof Code.Identifier ) { |
|
68 |
// builder.append(arg0.toString(formatter)); |
|
69 |
// builder.append("->"); |
|
70 |
// builder.append(arg1.toString()); |
|
71 |
// } else |
|
72 |
if( arg0 instanceof Code.Identifier && arg1 instanceof Code.Constant && ((Code.Constant)arg1).value() instanceof CharSequence ) { |
|
68 | 73 |
builder.append(arg0.toString(formatter)); |
69 |
builder.append("."); |
|
70 |
builder.append(arg1.toString()); |
|
74 |
builder.append(".\""); |
|
75 |
builder.append(((Code.Constant)arg1).value().toString()); |
|
76 |
builder.append("\""); |
|
71 | 77 |
} else { |
72 | 78 |
builder.append(this.name()); |
73 | 79 |
builder.append("("); |
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/programming/$$IdentifierFunction.java | ||
---|---|---|
1 |
package org.gvsig.expressionevaluator.impl.function.programming; |
|
2 |
|
|
3 |
import org.apache.commons.lang3.Range; |
|
4 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_$$CONSTANT; |
|
5 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_$$IDENTIFIER; |
|
6 |
import org.gvsig.expressionevaluator.Function; |
|
7 |
import org.gvsig.expressionevaluator.Interpreter; |
|
8 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
|
9 |
|
|
10 |
public class $$IdentifierFunction extends AbstractFunction { |
|
11 |
|
|
12 |
public $$IdentifierFunction() { |
|
13 |
super( |
|
14 |
Function.GROUP_PROGRAMMING, |
|
15 |
FUNCTION_$$IDENTIFIER, |
|
16 |
Range.is(1), |
|
17 |
"Evaluate the parameter as a string and return the value of the variable referred by this string.\n" + |
|
18 |
"This function is used to mark that the result of evaluate the parameter must be "+ |
|
19 |
"converted to a variable identifier when generating the SQL expression. ", |
|
20 |
FUNCTION_$$IDENTIFIER+"({{expression}})", |
|
21 |
null, |
|
22 |
"Object", |
|
23 |
false |
|
24 |
); |
|
25 |
} |
|
26 |
|
|
27 |
@Override |
|
28 |
public boolean allowConstantFolding() { |
|
29 |
return false; |
|
30 |
} |
|
31 |
|
|
32 |
@Override |
|
33 |
public Object call(Interpreter interpreter, final Object[] args) throws Exception { |
|
34 |
String identifier = this.getStr(args, 0); |
|
35 |
return interpreter.getSymbolTable().value(identifier); |
|
36 |
} |
|
37 |
|
|
38 |
|
|
39 |
} |
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/DefaultExpressionBuilder.java | ||
---|---|---|
311 | 311 |
ReprMethod repr = manager.getReprMethod(this.value); |
312 | 312 |
return repr.repr(value); |
313 | 313 |
} |
314 |
|
|
315 |
public ExpressionBuilder builder() { |
|
316 |
return this.builder; // Ojo, no esta en el API. |
|
317 |
} |
|
314 | 318 |
} |
315 | 319 |
|
316 | 320 |
public class CustomBase extends AbstractValue implements Custom { |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/ExpressionBuilderConfig.java | ||
---|---|---|
61 | 61 |
|
62 | 62 |
public void setPreviewSymbolTable(SymbolTable symbolTable); |
63 | 63 |
|
64 |
public void addPreviewSymbolTable(SymbolTable symbolTable); |
|
65 |
|
|
64 | 66 |
public void copyConfigFrom(ExpressionBuilderConfig other); |
65 | 67 |
|
66 | 68 |
public boolean allowAggregates(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultJExpressionBuilder.java | ||
---|---|---|
857 | 857 |
} |
858 | 858 |
|
859 | 859 |
@Override |
860 |
public void addPreviewSymbolTable(SymbolTable symbolTable) { |
|
861 |
this.builderConfig.addPreviewSymbolTable(symbolTable); |
|
862 |
} |
|
863 |
|
|
864 |
@Override |
|
860 | 865 |
public void setAutomaticExpressionCheckerEnabled(boolean enabled) { |
861 | 866 |
if( this.automaticExpressionChecker==null ) { |
862 | 867 |
this.automaticExpressionCheckerEnabled = enabled; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultExpressionBuilderConfig.java | ||
---|---|---|
10 | 10 |
import org.gvsig.expressionevaluator.Expression; |
11 | 11 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
12 | 12 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
13 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
|
13 | 14 |
import org.gvsig.expressionevaluator.Function; |
15 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
|
14 | 16 |
import org.gvsig.expressionevaluator.SymbolTable; |
15 | 17 |
import org.gvsig.expressionevaluator.SymbolTableFactory; |
16 | 18 |
import org.gvsig.expressionevaluator.swing.Element; |
... | ... | |
265 | 267 |
} |
266 | 268 |
|
267 | 269 |
@Override |
270 |
public void addPreviewSymbolTable(SymbolTable symbolTable) { |
|
271 |
if( symbolTable==null ) { |
|
272 |
return; |
|
273 |
} |
|
274 |
if( this.previewSymbolTable==null ) { |
|
275 |
this.previewSymbolTable = symbolTable; |
|
276 |
return; |
|
277 |
} |
|
278 |
this.previewSymbolTable.addSymbolTable(symbolTable); |
|
279 |
} |
|
280 |
|
|
281 |
@Override |
|
268 | 282 |
public void setSQLCompatible(boolean SQLCompatible) { |
269 | 283 |
this.SQLCompatible = SQLCompatible; |
270 | 284 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultExpressionPickerController.java | ||
---|---|---|
325 | 325 |
} |
326 | 326 |
|
327 | 327 |
@Override |
328 |
public void addPreviewSymbolTable(SymbolTable symbolTable) { |
|
329 |
this.config.addPreviewSymbolTable(symbolTable); |
|
330 |
} |
|
331 |
|
|
332 |
@Override |
|
328 | 333 |
public Object getProperty(String name) { |
329 | 334 |
return this.config.getProperty(name); |
330 | 335 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultJExpressionPicker.java | ||
---|---|---|
13 | 13 |
import org.gvsig.expressionevaluator.SymbolTable; |
14 | 14 |
import org.gvsig.expressionevaluator.swing.Element; |
15 | 15 |
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig; |
16 |
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager; |
|
17 | 16 |
import org.gvsig.expressionevaluator.swing.ExpressionPickerController; |
18 | 17 |
import org.gvsig.expressionevaluator.swing.JExpressionPicker; |
19 | 18 |
import org.gvsig.tools.util.Factory; |
... | ... | |
121 | 120 |
} |
122 | 121 |
|
123 | 122 |
@Override |
123 |
public void addPreviewSymbolTable(SymbolTable symbolTable) { |
|
124 |
this.controller.addPreviewSymbolTable(symbolTable); |
|
125 |
} |
|
126 |
|
|
127 |
@Override |
|
124 | 128 |
public Object getProperty(String name) { |
125 | 129 |
return this.controller.getProperty(name); |
126 | 130 |
} |
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/test/java/org/gvsig/expresionevaluator/impl/TestCompiler.java | ||
---|---|---|
280 | 280 |
Compiler compiler = createCompiler(); |
281 | 281 |
|
282 | 282 |
Code code = compiler.compileExpression(source); |
283 |
assertEquals("'hola'->length()", code.toString());
|
|
283 |
assertEquals("'hola'.length()", code.toString());
|
|
284 | 284 |
} |
285 | 285 |
|
286 |
public void testInvokeMethod1b() { |
|
287 |
String source = "'hola'->length()"; |
|
288 |
|
|
289 |
Compiler compiler = createCompiler(); |
|
290 |
|
|
291 |
Code code = compiler.compileExpression(source); |
|
292 |
assertEquals("'hola'.length()", code.toString()); |
|
293 |
} |
|
286 | 294 |
|
295 |
|
|
287 | 296 |
public void testInvokeMethod2() { |
288 | 297 |
String source = "'hola'.indexOf('l') "; |
289 | 298 |
|
290 | 299 |
Compiler compiler = createCompiler(); |
291 | 300 |
|
292 | 301 |
Code code = compiler.compileExpression(source); |
293 |
assertEquals("'hola'->indexOf('l')", code.toString());
|
|
302 |
assertEquals("'hola'.indexOf('l')", code.toString());
|
|
294 | 303 |
} |
295 | 304 |
|
296 | 305 |
public void testSyntaxError1() { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultFeaturesFormContext.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
4 | 4 |
import org.gvsig.featureform.swing.FeaturesFormContext; |
5 |
import org.gvsig.featureform.swing.JFeaturesForm; |
|
5 | 6 |
import org.gvsig.fmap.dal.StoresRepository; |
6 | 7 |
import org.gvsig.fmap.dal.exception.DataException; |
8 |
import org.gvsig.fmap.dal.feature.Feature; |
|
7 | 9 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
8 | 10 |
import org.gvsig.fmap.dal.feature.FeatureType; |
9 | 11 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
... | ... | |
56 | 58 |
return ExpressionEvaluatorLocator.getExpressionEvaluatorManager(); |
57 | 59 |
} |
58 | 60 |
|
61 |
public JFeaturesForm getFeaturesForm() { |
|
62 |
return null; |
|
63 |
} |
|
64 |
|
|
65 |
public Feature getCurrentFeature() { |
|
66 |
return null; |
|
67 |
} |
|
59 | 68 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeatureForm.java | ||
---|---|---|
56 | 56 |
FeatureType featureType = this.store.getDefaultFeatureType(); |
57 | 57 |
FeatureTypeDefinitionsManager featureTypeDefinitionsManager = DALLocator.getFeatureTypeDefinitionsManager(); |
58 | 58 |
DynClass dynClass = featureTypeDefinitionsManager.get(store,featureType); |
59 |
this.form = DynFormLocator.getDynFormManager().createJDynForm(new DefaultFeaturesFormContext(this.store), dynClass); |
|
59 |
this.form = DynFormLocator.getDynFormManager().createJDynForm(new DefaultFeaturesFormContext(this.store) { |
|
60 |
public Feature getCurrentFeature() { |
|
61 |
return feature; |
|
62 |
} |
|
63 |
}, dynClass); |
|
60 | 64 |
} catch (Exception ex) { |
61 | 65 |
logger.warn("Can't create form.",ex); |
62 | 66 |
throw new RuntimeException("Can't create form.",ex); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeatureReferencesForm.java | ||
---|---|---|
217 | 217 |
if (this.formset == null) { |
218 | 218 |
DynFormManager formManager = DynFormLocator.getDynFormManager(); |
219 | 219 |
this.formset = formManager.createJDynFormSet( |
220 |
new DefaultFeaturesFormContext(this.store), |
|
220 |
new DefaultFeaturesFormContext(this.store) { |
|
221 |
@Override |
|
222 |
public Feature getCurrentFeature() { |
|
223 |
return DefaultJFeatureReferencesForm.this.getCurrentFeature(); |
|
224 |
} |
|
225 |
}, |
|
221 | 226 |
this.definition, |
222 | 227 |
null |
223 | 228 |
); |
... | ... | |
535 | 540 |
this.updateForm(); |
536 | 541 |
} |
537 | 542 |
|
543 |
@Override |
|
544 |
public Feature getCurrentFeature() { |
|
545 |
long index = getCurrentIndex(); |
|
546 |
if( index<0 ) { |
|
547 |
return null; |
|
548 |
} |
|
549 |
Feature f = get(index); |
|
550 |
try { |
|
551 |
DynObject adapter = f.getAsDynObject(); |
|
552 |
this.getFormset().getForm().getValues(adapter); |
|
553 |
f = ((FacadeOfAFeature)adapter).getFeature(); |
|
554 |
return f; |
|
555 |
} catch(Exception ex) { |
|
556 |
return f; |
|
557 |
} |
|
558 |
} |
|
559 |
|
|
538 | 560 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeaturesForm.java | ||
---|---|---|
32 | 32 |
import java.util.ArrayList; |
33 | 33 |
import java.util.Collection; |
34 | 34 |
import java.util.List; |
35 |
import java.util.Map; |
|
35 | 36 |
import javax.swing.AbstractAction; |
36 | 37 |
import javax.swing.Action; |
37 | 38 |
import static javax.swing.Action.ACTION_COMMAND_KEY; |
... | ... | |
98 | 99 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE; |
99 | 100 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2; |
100 | 101 |
import org.gvsig.tools.swing.icontheme.IconTheme; |
102 |
import org.gvsig.tools.util.PropertiesSupport; |
|
103 |
import org.gvsig.tools.util.PropertiesSupportHelper; |
|
101 | 104 |
import org.slf4j.Logger; |
102 | 105 |
import org.slf4j.LoggerFactory; |
103 | 106 |
|
... | ... | |
112 | 115 |
private final String FINISHEDITING_ACTION = "finishEditing"; |
113 | 116 |
private final String REFRESHFORM_ACTION = "refreshForm"; |
114 | 117 |
|
118 |
private class JFeaturesFormPanel extends JPanel implements PropertiesSupport { |
|
119 |
|
|
120 |
private final PropertiesSupport properties; |
|
121 |
|
|
122 |
private JFeaturesFormPanel(PropertiesSupport properties, BorderLayout layout) { |
|
123 |
super(layout); |
|
124 |
this.properties = properties; |
|
125 |
} |
|
126 |
|
|
127 |
@Override |
|
128 |
public Object getProperty(String name) { |
|
129 |
return this.properties.getProperty(name); |
|
130 |
} |
|
131 |
|
|
132 |
@Override |
|
133 |
public void setProperty(String name, Object value) { |
|
134 |
this.properties.setProperty(name, value); |
|
135 |
} |
|
136 |
|
|
137 |
@Override |
|
138 |
public Map<String, Object> getProperties() { |
|
139 |
return this.properties.getProperties(); |
|
140 |
} |
|
141 |
|
|
142 |
} |
|
143 |
|
|
115 | 144 |
private class FormActionContext extends AbstractDALActionContext { |
116 | 145 |
|
117 | 146 |
public FormActionContext() { |
... | ... | |
151 | 180 |
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultJFeaturesForm.class); |
152 | 181 |
|
153 | 182 |
private static final int PAGE_SIZE = 10; |
154 |
private JPanel panel; |
|
183 |
private JFeaturesFormPanel panel;
|
|
155 | 184 |
private JDynFormSet formset; |
156 | 185 |
private FeatureStore store; |
157 | 186 |
private boolean needrefresh; |
... | ... | |
159 | 188 |
private DynFormDefinition definition = null; |
160 | 189 |
private FeatureQuery currentQuery; |
161 | 190 |
private List<Action> otherActions; |
162 |
private ActionListenerSupport actionListeners; |
|
191 |
private final ActionListenerSupport actionListeners; |
|
192 |
private final PropertiesSupportHelper propertiesHelper; |
|
163 | 193 |
|
194 |
@SuppressWarnings("LeakingThisInConstructor") |
|
164 | 195 |
public DefaultJFeaturesForm() { |
165 | 196 |
this.otherActions = new ArrayList<>(); |
166 |
this.panel = new JPanel(new BorderLayout()); |
|
197 |
this.propertiesHelper = new PropertiesSupportHelper(); |
|
198 |
this.propertiesHelper.setProperty("FeaturesForm", this); |
|
199 |
this.panel = new JFeaturesFormPanel(this.propertiesHelper, new BorderLayout()); |
|
167 | 200 |
this.panel.addComponentListener(new ComponentAdapter() { |
168 | 201 |
@Override |
169 | 202 |
public void componentHidden(ComponentEvent e) { |
... | ... | |
281 | 314 |
this.otherActions = null; |
282 | 315 |
} |
283 | 316 |
|
317 |
public static class MyFeaturesFormContext extends DefaultFeaturesFormContext { |
|
318 |
|
|
319 |
private final DefaultJFeaturesForm featuresForm; |
|
320 |
|
|
321 |
public MyFeaturesFormContext(DefaultJFeaturesForm featuresForm) { |
|
322 |
super(featuresForm.store); |
|
323 |
this.featuresForm = featuresForm; |
|
324 |
} |
|
325 |
|
|
326 |
@Override |
|
327 |
public JFeaturesForm getFeaturesForm() { |
|
328 |
return this.featuresForm; |
|
329 |
} |
|
330 |
@Override |
|
331 |
public Feature getCurrentFeature() { |
|
332 |
return this.featuresForm.getCurrentFeature(); |
|
333 |
} |
|
334 |
} |
|
335 |
|
|
284 | 336 |
@Override |
285 | 337 |
public JDynFormSet getFormset() { |
286 | 338 |
if (this.formset == null) { |
287 | 339 |
DynFormManager formManager = DynFormLocator.getDynFormManager(); |
288 | 340 |
this.formset = formManager.createJDynFormSet( |
289 |
new DefaultFeaturesFormContext(this.store),
|
|
341 |
new MyFeaturesFormContext(this),
|
|
290 | 342 |
this.definition, |
291 | 343 |
null |
292 | 344 |
); |
... | ... | |
1032 | 1084 |
return this.actionListeners.hasActionListeners(); |
1033 | 1085 |
} |
1034 | 1086 |
|
1087 |
@Override |
|
1088 |
public Feature getCurrentFeature() { |
|
1089 |
long index = getCurrentIndex(); |
|
1090 |
if( index<0 ) { |
|
1091 |
return null; |
|
1092 |
} |
|
1093 |
Feature f = get(index); |
|
1094 |
try { |
|
1095 |
DynObject adapter = f.getAsDynObject(); |
|
1096 |
this.getFormset().getForm().getValues(adapter); |
|
1097 |
f = ((FacadeOfAFeature)adapter).getFeature(); |
|
1098 |
return f; |
|
1099 |
} catch(Exception ex) { |
|
1100 |
return f; |
|
1101 |
} |
|
1102 |
} |
|
1035 | 1103 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/DefaultSearchPanel.java | ||
---|---|---|
39 | 39 |
import javax.swing.ListSelectionModel; |
40 | 40 |
import javax.swing.SwingUtilities; |
41 | 41 |
import javax.swing.event.ChangeEvent; |
42 |
import javax.swing.event.ChangeListener; |
|
43 | 42 |
import javax.swing.event.ListSelectionEvent; |
44 | 43 |
import javax.swing.event.ListSelectionListener; |
45 | 44 |
import javax.swing.table.DefaultTableModel; |
... | ... | |
52 | 51 |
import org.gvsig.expressionevaluator.Expression; |
53 | 52 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
54 | 53 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
54 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
|
55 | 55 |
import static org.gvsig.fmap.dal.DataManager.DAL_USE_LABELS; |
56 | 56 |
import static org.gvsig.fmap.dal.DataManager.USE_LABELS_BOTH; |
57 | 57 |
import static org.gvsig.fmap.dal.DataManager.USE_LABELS_NO; |
... | ... | |
116 | 116 |
import org.gvsig.tools.swing.api.bookmarkshistory.BookmarksController; |
117 | 117 |
import org.gvsig.tools.swing.api.bookmarkshistory.HistoryController; |
118 | 118 |
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager; |
119 |
import org.gvsig.tools.util.PropertiesSupportHelper; |
|
119 | 120 |
|
120 | 121 |
/** |
121 | 122 |
* |
... | ... | |
133 | 134 |
private HistoryController historyController; |
134 | 135 |
private FeatureQuery lastQuery; |
135 | 136 |
private Feature lastSelectedFeature; |
137 |
private MutableSymbolTable symbolTable; |
|
138 |
|
|
139 |
private final PropertiesSupportHelper propertiesHelper; |
|
136 | 140 |
|
137 | 141 |
public static class UseLabelsYesAction extends AbstractAction { |
138 | 142 |
|
... | ... | |
321 | 325 |
|
322 | 326 |
private class TablePopupMenu extends JPopupMenu { |
323 | 327 |
public final JTable table; |
328 |
@SuppressWarnings("OverridableMethodCallInConstructor") |
|
324 | 329 |
public TablePopupMenu(JTable inputTable) { |
325 | 330 |
this.table = inputTable; |
326 | 331 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
327 | 332 |
JMenuItem copyRowsActionMenu = new JMenuItem(i18n.getTranslation("_Copy_rows")); |
328 |
copyRowsActionMenu.addActionListener(new ActionListener() { |
|
329 |
|
|
330 |
@Override |
|
331 |
public void actionPerformed(ActionEvent e) { |
|
332 |
doCopyRows(table); |
|
333 |
} |
|
333 |
copyRowsActionMenu.addActionListener((ActionEvent e) -> { |
|
334 |
doCopyRows(table); |
|
334 | 335 |
}); |
335 | 336 |
this.add(copyRowsActionMenu); |
336 | 337 |
} |
... | ... | |
483 | 484 |
private SimpleFeaturesTableModel resultPostProcessModel; |
484 | 485 |
|
485 | 486 |
private boolean processing; |
486 |
|
|
487 | 487 |
private JComponent configurableActions; |
488 | 488 |
|
489 |
@SuppressWarnings({"OverridableMethodCallInConstructor", "LeakingThisInConstructor"}) |
|
489 | 490 |
public DefaultSearchPanel(FeatureStore store) { |
490 | 491 |
this.store = store; |
491 | 492 |
this.filterOnlyMode = false; |
... | ... | |
504 | 505 |
this.configurableActions = null; |
505 | 506 |
this.resultModel = null; |
506 | 507 |
this.resultPostProcessModel = null; |
508 |
this.propertiesHelper = new PropertiesSupportHelper(); |
|
509 |
this.propertiesHelper.setProperty("SearchPanel", this); |
|
507 | 510 |
|
508 | 511 |
Search search = (Search) ToolsLocator.getComplementsManager().get( |
509 | 512 |
Search.COMPLEMENT_MANE, getFeatureType() |
... | ... | |
605 | 608 |
swingManager.translate(this.btnAddAccumulatedFilter); |
606 | 609 |
swingManager.translate(this.btnRemoveAccumulatedFilter); |
607 | 610 |
swingManager.translate(this.btnViewAccumulatedFilter); |
608 |
|
|
611 |
|
|
609 | 612 |
ConfigurableActionsMamager cfgActionsManager = ToolsUtilLocator.getConfigurableActionsMamager(); |
610 | 613 |
this.configurableActions = cfgActionsManager.getConfigurableActionsComponent(CONFIGURABLE_PANEL_ID, this); |
611 | 614 |
this.pnlCfgActions.setLayout(new BorderLayout(0, 0)); |
... | ... | |
644 | 647 |
null |
645 | 648 |
) |
646 | 649 |
); |
647 |
this.conditionPanels.add( |
|
648 |
new SearchConditionPanelAdvanced( |
|
649 |
this.store, |
|
650 |
txtAdvancedExpression, |
|
651 |
btnAdvancedExpression, |
|
652 |
btnAdvancedExpressionHistory, |
|
653 |
btnAdvancedExpressionBookmarks |
|
654 |
) |
|
650 |
|
|
651 |
SearchConditionPanelAdvanced advancedPanel = new SearchConditionPanelAdvanced( |
|
652 |
this.store, |
|
653 |
txtAdvancedExpression, |
|
654 |
btnAdvancedExpression, |
|
655 |
btnAdvancedExpressionHistory, |
|
656 |
btnAdvancedExpressionBookmarks |
|
655 | 657 |
); |
658 |
this.conditionPanels.add(advancedPanel); |
|
659 |
|
|
656 | 660 |
for (SearchConditionPanelFactory factory : DALSwingLocator.getManager().getSearchConditionPanels()) { |
657 | 661 |
String factoryName = "unknown"; |
658 | 662 |
try { |
... | ... | |
700 | 704 |
|
701 | 705 |
this.historyController.setFilter(null); |
702 | 706 |
|
703 |
ActionListener bookmarksAndHistoryListener = new ActionListener() { |
|
704 |
@Override |
|
705 |
public void actionPerformed(ActionEvent e) { |
|
706 |
ActionEventWithCurrentValue<DefaultSearchParameters> b = (ActionEventWithCurrentValue<DefaultSearchParameters>) e; |
|
707 |
switch (b.getID()) { |
|
708 |
case ID_GETVALUE: |
|
709 |
DefaultSearchParameters actualParams = (DefaultSearchParameters) fetch(null); |
|
710 |
b.setCurrentValue(actualParams); |
|
711 |
break; |
|
712 |
|
|
713 |
case ID_SETVALUE: |
|
714 |
if (b.getCurrentValue() == null) { |
|
715 |
return; |
|
716 |
} |
|
717 |
DefaultSearchParameters searchParams; |
|
718 |
try { |
|
719 |
searchParams = b.getCurrentValue().getCopy(); |
|
720 |
} catch (Exception ex) { |
|
721 |
LOGGER.warn("Not been able to clone export parameters", ex); |
|
722 |
return; |
|
723 |
} |
|
724 |
clear(); |
|
725 |
put(searchParams); |
|
726 |
Thread th = new Thread(() -> { |
|
727 |
doSearch(searchParams); |
|
728 |
}); |
|
729 |
th.start(); |
|
730 |
break; |
|
731 |
} |
|
732 |
|
|
707 |
ActionListener bookmarksAndHistoryListener = (ActionEvent e) -> { |
|
708 |
ActionEventWithCurrentValue<DefaultSearchParameters> b = (ActionEventWithCurrentValue<DefaultSearchParameters>) e; |
|
709 |
switch (b.getID()) { |
|
710 |
case ID_GETVALUE: |
|
711 |
DefaultSearchParameters actualParams = (DefaultSearchParameters) fetch(null); |
|
712 |
b.setCurrentValue(actualParams); |
|
713 |
break; |
|
714 |
|
|
715 |
case ID_SETVALUE: |
|
716 |
if (b.getCurrentValue() == null) { |
|
717 |
return; |
|
718 |
} |
|
719 |
DefaultSearchParameters searchParams; |
|
720 |
try { |
|
721 |
searchParams = b.getCurrentValue().getCopy(); |
|
722 |
} catch (Exception ex) { |
|
723 |
LOGGER.warn("Not been able to clone export parameters", ex); |
|
724 |
return; |
|
725 |
} |
|
726 |
clear(); |
|
727 |
put(searchParams); |
|
728 |
Thread th = new Thread(() -> { |
|
729 |
doSearch(searchParams); |
|
730 |
}); |
|
731 |
th.start(); |
|
732 |
break; |
|
733 | 733 |
} |
734 | 734 |
}; |
735 | 735 |
this.historyController.addActionListener(bookmarksAndHistoryListener); |
... | ... | |
741 | 741 |
} |
742 | 742 |
}); |
743 | 743 |
|
744 |
this.btnSearchPostProcess.addActionListener(new ActionListener() { |
|
745 |
@Override |
|
746 |
public void actionPerformed(ActionEvent e) { |
|
747 |
try { |
|
748 |
doSelectSearchPostprocess(); |
|
749 |
} catch (DataException ex) { |
|
750 |
LOGGER.warn("Can't select a Search Post Process", ex); |
|
751 |
} |
|
744 |
this.btnSearchPostProcess.addActionListener((ActionEvent e) -> { |
|
745 |
try { |
|
746 |
doSelectSearchPostprocess(); |
|
747 |
} catch (DataException ex) { |
|
748 |
LOGGER.warn("Can't select a Search Post Process", ex); |
|
752 | 749 |
} |
753 | 750 |
}); |
754 | 751 |
|
... | ... | |
779 | 776 |
return; |
780 | 777 |
} |
781 | 778 |
|
782 |
this.tabResults.addChangeListener(new ChangeListener() { |
|
783 |
public void stateChanged(ChangeEvent evt) { |
|
784 |
SwingUtilities.invokeLater(() -> { |
|
785 |
if(tabResults.getSelectedIndex()==0){ |
|
786 |
updateNumberElementsMsg(resultModel); |
|
787 |
}else{ |
|
788 |
updateNumberElementsMsg(resultPostProcessModel); |
|
789 |
} |
|
790 |
}); |
|
791 |
} |
|
779 |
this.tabResults.addChangeListener((ChangeEvent evt) -> { |
|
780 |
SwingUtilities.invokeLater(() -> { |
|
781 |
if(tabResults.getSelectedIndex()==0){ |
|
782 |
updateNumberElementsMsg(resultModel); |
|
783 |
}else{ |
|
784 |
updateNumberElementsMsg(resultPostProcessModel); |
|
785 |
} |
|
786 |
}); |
|
792 | 787 |
}); |
793 | 788 |
if( this.filterOnlyMode ) { |
794 | 789 |
this.btnSearchPostProcess.setVisible(false); |
... | ... | |
818 | 813 |
); |
819 | 814 |
} |
820 | 815 |
|
821 |
private FeatureType getFeatureType() { |
|
816 |
@Override |
|
817 |
public FeatureType getFeatureType() { |
|
822 | 818 |
try { |
823 | 819 |
return store.getDefaultFeatureType(); |
824 | 820 |
} catch (Exception ex) { |
... | ... | |
887 | 883 |
return valid; |
888 | 884 |
} |
889 | 885 |
|
886 |
@Override |
|
890 | 887 |
public void search() { |
891 | 888 |
StringBuilder message = new StringBuilder(); |
892 | 889 |
if (!this.isValid(message)) { |
... | ... | |
929 | 926 |
th.start(); |
930 | 927 |
} |
931 | 928 |
|
932 |
private void doSearch(SearchParameters searchParams) {
|
|
929 |
private void doSearch(SearchParameters searchParams) { |
|
933 | 930 |
final MutableObject model = new MutableObject(null); |
934 | 931 |
final MutableLong rowCount=new MutableLong(); |
935 | 932 |
try { |
... | ... | |
938 | 935 |
// myQuery = this.getQuery().getCopy(); |
939 | 936 |
this.tabResults.setSelectedIndex(0); |
940 | 937 |
List<String> resultColumnNames = searchParams.getResultColumnNames(); |
938 |
// this.symbolTable.setVar("SearchPanel", this); |
|
939 |
this.symbolTable.setVar("SearchParameters", searchParams); |
|
941 | 940 |
myQuery = searchParams.getQuery().getCopy(); |
941 |
myQuery.setSymbolTable(this.symbolTable); |
|
942 | 942 |
features = store.getFeatures(myQuery, 50); |
943 | 943 |
FacadeOfAFeaturePagingHelper facade = (FacadeOfAFeaturePagingHelper) features; |
944 | 944 |
FeatureType ftype = facade.getFeaturePagingHelper().getFeatureSet().getDefaultFeatureType(); |
... | ... | |
1061 | 1061 |
|
1062 | 1062 |
@Override |
1063 | 1063 |
public SearchConditionPanel getConditionPanel(String name) { |
1064 |
if( conditionPanels==null ) { |
|
1065 |
return null; |
|
1066 |
} |
|
1064 | 1067 |
for (SearchConditionPanel panel : conditionPanels) { |
1065 | 1068 |
if (StringUtils.equalsIgnoreCase(name, panel.getFactory().getName())) { |
1066 | 1069 |
return panel; |
... | ... | |
1419 | 1422 |
|
1420 | 1423 |
@Override |
1421 | 1424 |
public void put(SearchParameters inParams) { |
1425 |
this.symbolTable.setVar("SearchParameters", inParams); |
|
1422 | 1426 |
this.parameters = (DefaultSearchParameters) inParams; |
1423 | 1427 |
for (SearchConditionPanel conditionPanel : this.conditionPanels) { |
1424 | 1428 |
try { |
... | ... | |
1475 | 1479 |
} |
1476 | 1480 |
this.parameters.setSearchMode(searchMode); |
1477 | 1481 |
FeatureQuery query = (FeatureQuery) this.parameters.getQuery(); |
1482 |
query.setSymbolTable(symbolTable); |
|
1478 | 1483 |
this.lastQuery = query.getCopy(); |
1479 | 1484 |
query.retrievesAllAttributes(); |
1480 | 1485 |
query.clearFilter(); |
... | ... | |
1685 | 1690 |
// if( component instanceof OrderByAction ) { |
1686 | 1691 |
// return false; |
1687 | 1692 |
// } |
1688 |
if( component instanceof CalculatedColumnsAction ) { |
|
1689 |
return false; |
|
1690 |
} |
|
1693 |
// if( component instanceof CalculatedColumnsAction ) {
|
|
1694 |
// return false;
|
|
1695 |
// }
|
|
1691 | 1696 |
} |
1692 | 1697 |
return true; |
1693 | 1698 |
} |
... | ... | |
1723 | 1728 |
return this.lastSelectedFeature; |
1724 | 1729 |
} |
1725 | 1730 |
|
1731 |
@Override |
|
1732 |
public Object getProperty(String name) { |
|
1733 |
return this.propertiesHelper.getProperty(name); |
|
1734 |
} |
|
1735 |
|
|
1736 |
@Override |
|
1737 |
public void setProperty(String name, Object value) { |
|
1738 |
this.propertiesHelper.setProperty(name, value); |
|
1739 |
} |
|
1740 |
|
|
1741 |
@Override |
|
1742 |
public Map<String, Object> getProperties() { |
|
1743 |
return this.propertiesHelper.getProperties(); |
|
1744 |
} |
|
1745 |
|
|
1746 |
|
|
1726 | 1747 |
} |
1727 | 1748 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/featureform/swing/JFeatureReferencesForm.java | ||
---|---|---|
24 | 24 |
|
25 | 25 |
import java.awt.Dimension; |
26 | 26 |
import java.util.List; |
27 |
import org.gvsig.fmap.dal.StoresRepository; |
|
28 | 27 |
|
29 | 28 |
import org.gvsig.fmap.dal.feature.Feature; |
30 | 29 |
|
31 | 30 |
import org.gvsig.fmap.dal.feature.FeatureReference; |
32 | 31 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
33 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
34 |
import org.gvsig.tools.dynform.JDynForm.DynFormContext; |
|
35 | 32 |
import org.gvsig.tools.dynform.JDynFormSet; |
36 | 33 |
import org.gvsig.tools.swing.api.Component; |
37 | 34 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE; |
38 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
|
39 | 35 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
40 | 36 |
|
41 | 37 |
/** |
... | ... | |
64 | 60 |
public Feature get(long index); |
65 | 61 |
|
66 | 62 |
public void setFeatures(List<FeatureReference> features); |
63 |
|
|
64 |
public Feature getCurrentFeature(); |
|
67 | 65 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/featureform/swing/JFeaturesForm.java | ||
---|---|---|
24 | 24 |
|
25 | 25 |
import java.awt.Dimension; |
26 | 26 |
import javax.swing.Action; |
27 |
import org.gvsig.fmap.dal.StoresRepository; |
|
28 | 27 |
|
29 | 28 |
import org.gvsig.fmap.dal.feature.Feature; |
30 | 29 |
|
31 | 30 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
32 | 31 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
33 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
34 |
import org.gvsig.tools.dynform.JDynForm.DynFormContext; |
|
35 | 32 |
import org.gvsig.tools.dynform.JDynFormSet; |
36 | 33 |
import org.gvsig.tools.swing.api.Component; |
37 | 34 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE; |
38 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
|
39 | 35 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
40 | 36 |
|
41 | 37 |
/** |
... | ... | |
66 | 62 |
|
67 | 63 |
public long getCurrentIndex(); |
68 | 64 |
|
65 |
public Feature getCurrentFeature(); |
|
66 |
|
|
69 | 67 |
public Feature get(long index); |
70 | 68 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/searchpanel/FeatureStoreSearchPanel.java | ||
---|---|---|
6 | 6 |
import org.gvsig.fmap.dal.feature.Feature; |
7 | 7 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
8 | 8 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
9 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
9 | 10 |
import org.gvsig.tools.dispose.Disposable; |
10 | 11 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
11 | 12 |
import org.gvsig.tools.swing.api.Component; |
13 |
import org.gvsig.tools.util.PropertiesSupport; |
|
12 | 14 |
|
13 | 15 |
/** |
14 | 16 |
* |
15 | 17 |
* @author jjdelcerro |
16 | 18 |
*/ |
17 |
public interface FeatureStoreSearchPanel extends Component, ActionListenerSupport, Disposable { |
|
19 |
public interface FeatureStoreSearchPanel extends Component, ActionListenerSupport, Disposable, PropertiesSupport {
|
|
18 | 20 |
|
19 | 21 |
public static final String CONFIGURABLE_PANEL_ID = "FeatureStoreSearchPanel"; |
20 | 22 |
|
... | ... | |
32 | 34 |
public void setEnabled(boolean enabled); |
33 | 35 |
|
34 | 36 |
public FeatureStore getStore(); |
35 |
|
|
37 |
|
|
38 |
public FeatureType getFeatureType(); |
|
39 |
|
|
36 | 40 |
// public FeatureQuery getQuery(); |
37 | 41 |
|
38 | 42 |
public Feature getLastSelectedFeature(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/feature/FeatureQuery.java | ||
---|---|---|
30 | 30 |
import java.util.List; |
31 | 31 |
import java.util.Map; |
32 | 32 |
import org.gvsig.expressionevaluator.Expression; |
33 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
|
34 |
import org.gvsig.expressionevaluator.SymbolTable; |
|
33 | 35 |
import org.gvsig.fmap.dal.DataQuery; |
34 | 36 |
import org.gvsig.tools.evaluator.Evaluator; |
35 | 37 |
import org.gvsig.tools.lang.Cloneable; |
... | ... | |
317 | 319 |
|
318 | 320 |
public FeatureExtraColumns getExtraColumn(); |
319 | 321 |
|
322 |
public MutableSymbolTable getSymbolTable(); |
|
323 |
|
|
324 |
public void setSymbolTable(MutableSymbolTable symbolTable); |
|
325 |
|
|
326 |
/** |
|
327 |
* Set a variable in the symbol table associated to this searchPanel. |
|
328 |
* |
|
329 |
* @param name |
|
330 |
* @param value |
|
331 |
*/ |
|
332 |
public void setVar(String name, Object value); |
|
333 |
|
|
320 | 334 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/test/java/org/gvsig/expressionevaluator/TestGrammarCompiler.java | ||
---|---|---|
111 | 111 |
|
112 | 112 |
Code code = compiler.compileExpression(source.toString()); |
113 | 113 |
link(code); |
114 |
checkEquals("testSelect2", "BLOCK(LET('X', 0), FOREACH('row', SELECT(TUPLE(), \"countries\", NULL, TUPLE(), TUPLE(), NULL), IF((GETATTR(\"row\", 'LASTCENSUS') > 0), LET('X', (\"X\" + GETATTR(\"row\", 'LASTCENSUS'))))))", code.toString());
|
|
114 |
checkEquals("testSelect2", "BLOCK(LET('X', 0), FOREACH('row', SELECT(TUPLE(), \"countries\", NULL, TUPLE(), TUPLE(), NULL), IF((\"row\".\"LASTCENSUS\" > 0), LET('X', (\"X\" + \"row\".\"LASTCENSUS\")))))", code.toString());
|
|
115 | 115 |
} |
116 | 116 |
|
117 | 117 |
public void testSelect3() { |
... | ... | |
130 | 130 |
|
131 | 131 |
Code code = compiler.compileExpression(source.toString()); |
132 | 132 |
link(code); |
133 |
checkEquals("testSelect3", "BLOCK(LET('X', 0), FOREACH('row', SELECT(TUPLE(), \"countries\", NULL, TUPLE(), TUPLE(), NULL), IF((GETATTR(\"row\", 'LASTCENSUS') > 0), LET('X', (\"X\" + GETATTR(\"row\", 'LASTCENSUS'))))))", code.toString());
|
|
133 |
checkEquals("testSelect3", "BLOCK(LET('X', 0), FOREACH('row', SELECT(TUPLE(), \"countries\", NULL, TUPLE(), TUPLE(), NULL), IF((\"row\".\"LASTCENSUS\" > 0), LET('X', (\"X\" + \"row\".\"LASTCENSUS\")))))", code.toString());
|
|
134 | 134 |
} |
135 | 135 |
|
136 | 136 |
public void testSelectWhere() { |
... | ... | |
166 | 166 |
|
167 | 167 |
Code code = compiler.compileExpression(source.toString()); |
168 | 168 |
link(code); |
169 |
checkEquals("testSelectWhere2", "SELECT(TUPLE(), \"countries\", (GETATTR(\"countries\", 'LASTCENSUS') > 0), TUPLE(), TUPLE(), NULL)", code.toString());
|
|
169 |
checkEquals("testSelectWhere2", "SELECT(TUPLE(), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL)", code.toString());
|
|
170 | 170 |
} |
171 | 171 |
|
172 | 172 |
public void testSelectOrder() { |
... | ... | |
248 | 248 |
String id = "????????????????????????????????"; |
249 | 249 |
String s = code.toString(); |
250 | 250 |
s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2); |
251 |
checkEquals("testExistsSelect1", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", (GETATTR(\"countries\", 'LASTCENSUS') > 0), TUPLE(), TUPLE(), NULL), 'EXISTS????????????????????????????????')", s);
|
|
251 |
checkEquals("testExistsSelect1", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL), 'EXISTS????????????????????????????????')", s);
|
|
252 | 252 |
} |
253 | 253 |
|
254 | 254 |
public void testExistsSelect2() { |
... | ... | |
265 | 265 |
String id = "????????????????????????????????"; |
266 | 266 |
String s = code.toString(); |
267 | 267 |
s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2); |
268 |
checkEquals("testExistsSelect2", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", (GETATTR(\"countries\", 'LASTCENSUS') > 0), TUPLE(), TUPLE(), NULL), 'EXISTS????????????????????????????????')", s);
|
|
268 |
checkEquals("testExistsSelect2", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), NULL), 'EXISTS????????????????????????????????')", s);
|
|
269 | 269 |
} |
270 | 270 |
|
271 | 271 |
public void testExistsSelectLimit1() { |
... | ... | |
283 | 283 |
String id = "????????????????????????????????"; |
284 | 284 |
String s = code.toString(); |
285 | 285 |
s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2); |
286 |
checkEquals("testExistsSelectLimit1", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", (GETATTR(\"countries\", 'LASTCENSUS') > 0), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
|
|
286 |
checkEquals("testExistsSelectLimit1", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", (\"countries\".\"LASTCENSUS\" > 0), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
|
|
287 | 287 |
} |
288 | 288 |
|
289 | 289 |
public void testExistsSelectLimit2() { |
... | ... | |
306 | 306 |
String id = "????????????????????????????????"; |
307 | 307 |
String s = code.toString(); |
308 | 308 |
s = s.substring(0, s.length()-id.length()-2)+id+s.substring(s.length()-2); |
309 |
checkEquals("testExistsSelectLimit2", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", ((GETATTR(\"continents\", 'NAME') = GETATTR(\"countries\", 'CONTINENT')) AND (GETATTR(\"countries\", 'LASTCENSUS') < 0)), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
|
|
309 |
checkEquals("testExistsSelectLimit2", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", ((\"continents\".\"NAME\" = \"countries\".\"CONTINENT\") AND (\"countries\".\"LASTCENSUS\" < 0)), TUPLE(), TUPLE(), 1), 'EXISTS????????????????????????????????')", s);
|
|
310 | 310 |
} |
311 | 311 |
|
312 | 312 |
public void testExistsSelectLimit3() { |
... | ... | |
328 | 328 |
|
329 | 329 |
Code code = compiler.compileExpression(source.toString()); |
330 | 330 |
link(code); |
331 |
checkEquals("testExistsSelectLimit3", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", ((GETATTR(\"continents\", 'NAME') = GETATTR(\"countries\", 'CONTINENT')) AND (GETATTR(\"countries\", 'LASTCENSUS') < 0)), TUPLE(), TUPLE(), 1), 'patata')", code.toString());
|
|
331 |
checkEquals("testExistsSelectLimit3", "EXISTS(SELECT(TUPLE(\"ISO_A2\"), \"countries\", ((\"continents\".\"NAME\" = \"countries\".\"CONTINENT\") AND (\"countries\".\"LASTCENSUS\" < 0)), TUPLE(), TUPLE(), 1), 'patata')", code.toString());
|
|
332 | 332 |
} |
333 | 333 |
|
334 | 334 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/test/java/org/gvsig/expressionevaluator/TestExpressionBuilder.java | ||
---|---|---|
95 | 95 |
|
96 | 96 |
Code code = compiler.compileExpression(filter); |
97 | 97 |
link(code); |
98 |
assertEquals("EXISTS(SELECT(TUPLE(\"LID_ACCIDENTE\"), \"ARENA2_VEHICULOS\", ((GETATTR(\"ARENA2_VEHICULOS\", 'ID_ACCIDENTE') = GETATTR(\"ARENA2_ACCIDENTES\", 'LID_ACCIDENTE')) AND (\"MODELO\" = '307')), TUPLE(), TUPLE(), 1), 'EXISTS123')", code.toString());
|
|
98 |
assertEquals("EXISTS(SELECT(TUPLE(\"LID_ACCIDENTE\"), \"ARENA2_VEHICULOS\", ((\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\" = \"ARENA2_ACCIDENTES\".\"LID_ACCIDENTE\") AND (\"MODELO\" = '307')), TUPLE(), TUPLE(), 1), 'EXISTS123')", code.toString());
|
|
99 | 99 |
} |
100 | 100 |
|
101 | 101 |
public void testForeintValue1() { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureQuery.java | ||
---|---|---|
27 | 27 |
import java.util.HashMap; |
28 | 28 |
import java.util.List; |
29 | 29 |
import java.util.Map; |
30 |
import java.util.logging.Level; |
|
30 | 31 |
import org.apache.commons.lang3.ArrayUtils; |
31 | 32 |
import org.apache.commons.lang3.StringUtils; |
32 | 33 |
import org.gvsig.expressionevaluator.Expression; |
... | ... | |
37 | 38 |
import org.gvsig.fmap.dal.exception.DataException; |
38 | 39 |
import org.gvsig.fmap.dal.exception.InitializeException; |
39 | 40 |
import org.gvsig.expressionevaluator.ExpressionEvaluator; |
41 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
|
40 | 42 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
41 | 43 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
42 | 44 |
import org.gvsig.fmap.dal.feature.FeatureQueryOrder; |
... | ... | |
112 | 114 |
|
113 | 115 |
private FeatureExtraColumns extraColumn = new DefaultFeatureExtraColumns(); |
114 | 116 |
|
117 |
private MutableSymbolTable symbolTable; |
|
118 |
|
|
115 | 119 |
/** |
116 | 120 |
* Creates a FeatureQuery which will load all available Features of a type. |
117 | 121 |
* |
... | ... | |
350 | 354 |
|
351 | 355 |
@Override |
352 | 356 |
public Evaluator getFilter() { |
353 |
return filter; |
|
357 |
if( this.filter instanceof ExpressionEvaluator ) { |
|
358 |
ExpressionEvaluator ee = (ExpressionEvaluator) this.filter; |
|
359 |
ee.addSymbolTable(symbolTable); |
|
360 |
} |
|
361 |
return filter; |
|
354 | 362 |
} |
355 | 363 |
|
356 | 364 |
@Override |
357 | 365 |
public Expression getExpressionFilter() { |
358 | 366 |
if( this.filter instanceof ExpressionEvaluator ) { |
359 |
return ((ExpressionEvaluator)this.filter).toExpression(); |
|
367 |
ExpressionEvaluator ee = (ExpressionEvaluator) this.filter; |
|
368 |
ee.addSymbolTable(symbolTable); |
|
369 |
return ee.toExpression(); |
|
360 | 370 |
} |
361 | 371 |
return null; |
362 | 372 |
} |
... | ... | |
516 | 526 |
} else { |
517 | 527 |
clone.aggregateFunctions = null; |
518 | 528 |
} |
529 |
if( this.symbolTable!=null ) { |
|
530 |
clone.symbolTable = this.symbolTable.clone(); |
|
531 |
} |
|
519 | 532 |
|
520 |
|
|
521 | 533 |
return clone; |
522 | 534 |
} |
523 | 535 |
|
... | ... | |
526 | 538 |
try { |
527 | 539 |
return (FeatureQuery) clone(); |
528 | 540 |
} catch (CloneNotSupportedException e) { |
529 |
// TODO Auto-generated catch block |
|
530 |
e.printStackTrace(); |
|
541 |
LOGGER.debug("Can't clone feature query",e); |
|
531 | 542 |
return null; |
532 | 543 |
} |
533 | 544 |
// DefaultFeatureQuery aCopy = new DefaultFeatureQuery(); |
... | ... | |
872 | 883 |
this.aggregateFunctions=null; |
873 | 884 |
} |
874 | 885 |
this.extraColumn.copyFrom(other.extraColumn); |
886 |
if( other.symbolTable!=null ) { |
|
887 |
try { |
|
888 |
this.symbolTable = other.symbolTable.clone(); |
|
889 |
} catch (CloneNotSupportedException ex) { |
|
890 |
LOGGER.debug("Can't clone symbol table",ex); |
|
891 |
} |
|
892 |
} |
|
875 | 893 |
} |
876 | 894 |
|
877 |
public FeatureExtraColumns getExtraColumn() { |
|
878 |
return this.extraColumn; |
|
879 |
} |
|
880 |
|
|
895 |
@Override |
|
896 |
public FeatureExtraColumns getExtraColumn() { |
|
897 |
return this.extraColumn; |
|
898 |
} |
|
899 |
|
|
900 |
@Override |
|
901 |
public MutableSymbolTable getSymbolTable() { |
|
902 |
return symbolTable; |
|
903 |
} |
|
904 |
|
|
905 |
@Override |
|
906 |
public void setSymbolTable(MutableSymbolTable symbolTable) { |
|
907 |
this.symbolTable = symbolTable; |
|
908 |
} |
|
909 |
|
|
910 |
@Override |
|
911 |
public void setVar(String name, Object value) { |
|
912 |
if( this.symbolTable==null ) { |
|
913 |
this.symbolTable = ExpressionUtils.createSymbolTable(); |
|
914 |
} |
|
915 |
this.symbolTable.setVar(name, value); |
|
916 |
} |
|
917 |
|
|
918 |
|
|
881 | 919 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/expressionevaluator/DefaultFeatureExpressionEvaluator.java | ||
---|---|---|
13 | 13 |
import org.gvsig.expressionevaluator.impl.symboltable.FeatureSymbolTableImpl; |
14 | 14 |
import org.gvsig.expressionevaluator.ExpressionEvaluator; |
15 | 15 |
import org.gvsig.expressionevaluator.impl.DefaultExpression; |
16 |
import org.gvsig.expressionevaluator.spi.BaseExpressionEvaluator; |
|
17 | 16 |
import org.gvsig.fmap.dal.expressionevaluator.FeatureSymbolTable; |
18 | 17 |
import org.gvsig.fmap.dal.feature.Feature; |
19 | 18 |
import org.gvsig.tools.ToolsLocator; |
... | ... | |
224 | 223 |
} |
225 | 224 |
} |
226 | 225 |
|
226 |
@Override |
|
227 |
public void addSymbolTable(SymbolTable symbolTable) { |
|
228 |
if( symbolTable!=null ) { |
|
229 |
this.symbolTable.addSymbolTable(symbolTable); |
|
230 |
} |
|
231 |
} |
|
232 |
|
|
227 | 233 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/OperationsFactory.java | ||
---|---|---|
138 | 138 |
FeatureType featureType, |
139 | 139 |
TableReference table, |
140 | 140 |
String baseFilter, |
141 |
String filtersql
|
|
141 |
FeatureQuery query
|
|
142 | 142 |
); |
143 | 143 |
|
144 | 144 |
public ResultSetForSetProviderOperation createResultSetForSetProvider( |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/JDBCSQLBuilderBase.java | ||
---|---|---|
64 | 64 |
|
65 | 65 |
public static final String PROP_FEATURE_TYPE = "FeatureType"; |
66 | 66 |
public static final String PROP_TABLE = "Table"; |
67 |
public static final String PROP_SYMBOLTABLE = "SymbolTable"; |
|
68 |
public static final String PROP_JDBCHELPER = "JDBCHelper"; |
|
67 | 69 |
|
68 | 70 |
private GeometryManager geometryManager = null; |
69 | 71 |
protected final JDBCHelper helper; |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/expressionbuilder/formatters/$$Constant.java | ||
---|---|---|
1 |
/** |
|
2 |
* gvSIG. Desktop Geographic Information System. |
|
3 |
* |
|
4 |
* Copyright (C) 2007-2020 gvSIG Association. |
|
5 |
* |
|
6 |
* This program is free software; you can redistribute it and/or |
|
7 |
* modify it under the terms of the GNU General Public License |
|
8 |
* as published by the Free Software Foundation; either version 3 |
|
9 |
* of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, |
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
14 |
* GNU General Public License for more details. |
|
15 |
* |
|
16 |
* You should have received a copy of the GNU General Public License |
|
17 |
* along with this program; if not, write to the Free Software |
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
19 |
* MA 02110-1301, USA. |
|
20 |
* |
|
21 |
* For any additional information, do not hesitate to contact us |
Also available in: Unified diff