svn-gvsig-desktop / 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 @ 46505
History | View | Annotate | Download (4.49 KB)
1 |
package org.gvsig.expressionevaluator; |
---|---|
2 |
|
3 |
import junit.framework.TestCase; |
4 |
import org.gvsig.expressionevaluator.impl.expressionbuilder.formatters.DALFormatter; |
5 |
import org.gvsig.fmap.dal.DALLocator; |
6 |
import org.gvsig.fmap.dal.DataManager; |
7 |
import org.gvsig.fmap.dal.SQLBuilder; |
8 |
import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder; |
9 |
import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder.SelectBuilder; |
10 |
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase; |
11 |
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
12 |
|
13 |
/**
|
14 |
*
|
15 |
* @author jjdelcerro
|
16 |
*/
|
17 |
public class TestExpressionBuilder extends TestCase { |
18 |
|
19 |
public TestExpressionBuilder(String testName) { |
20 |
super(testName);
|
21 |
} |
22 |
|
23 |
@Override
|
24 |
protected void setUp() throws Exception { |
25 |
super.setUp();
|
26 |
new DefaultLibrariesInitializer().fullInitialize();
|
27 |
} |
28 |
|
29 |
@Override
|
30 |
protected void tearDown() throws Exception { |
31 |
super.tearDown();
|
32 |
} |
33 |
|
34 |
// TODO add test methods here. The name must begin with 'test'. For example:
|
35 |
// public void testHello() {}
|
36 |
|
37 |
protected LexicalAnalyzer createLexicalAnalyzer() {
|
38 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
39 |
LexicalAnalyzer lexer = manager.createLexicalAnalyzer(); |
40 |
return lexer;
|
41 |
} |
42 |
|
43 |
protected org.gvsig.expressionevaluator.Compiler createCompiler() {
|
44 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
45 |
Compiler compiler = manager.createCompiler();
|
46 |
compiler.setLexicalAnalyzer(createLexicalAnalyzer()); |
47 |
return compiler;
|
48 |
} |
49 |
|
50 |
protected SymbolTable createSymbolTable() {
|
51 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
52 |
MutableSymbolTable symbolTable = manager.createSymbolTable(); |
53 |
return symbolTable;
|
54 |
} |
55 |
|
56 |
protected Interpreter createInterpreter(SymbolTable symbolTable) {
|
57 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
58 |
Interpreter interpreter = manager.createInterpreter(); |
59 |
interpreter.setSymbolTable(symbolTable); |
60 |
return interpreter;
|
61 |
} |
62 |
|
63 |
private void link(Code code) { |
64 |
code.link(createSymbolTable()); |
65 |
} |
66 |
|
67 |
public void testUseCase1() { |
68 |
DataManager dataManager = DALLocator.getDataManager(); |
69 |
DALExpressionBuilder builder1 = dataManager.createDALExpressionBuilder(); |
70 |
SQLBuilderBase builder = new SQLBuilderBase();
|
71 |
|
72 |
SQLBuilder.SelectBuilder select = builder.select(); |
73 |
select.column().name("LID_ACCIDENTE");
|
74 |
select.from().table().name("ARENA2_VEHICULOS");
|
75 |
select.where().value( |
76 |
builder.expression().and( |
77 |
builder.expression().eq( |
78 |
builder.expression().getattr("ARENA2_VEHICULOS","ID_ACCIDENTE"), |
79 |
builder.expression().getattr("ARENA2_ACCIDENTES","LID_ACCIDENTE") |
80 |
), |
81 |
builder.expression().eq( |
82 |
builder.expression().column("MODELO"),
|
83 |
builder.expression().constant("307")
|
84 |
) |
85 |
) |
86 |
); |
87 |
select.limit(1);
|
88 |
|
89 |
|
90 |
|
91 |
ExpressionBuilder.Value exists = builder1.exists(select, "EXISTS123");
|
92 |
|
93 |
String filter = exists.toString(new DALFormatter()); |
94 |
|
95 |
assertEquals("EXISTS(SELECT \"LID_ACCIDENTE\" FROM \"ARENA2_VEHICULOS\" WHERE (( (\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\") = (\"ARENA2_ACCIDENTES\".\"LID_ACCIDENTE\") ) AND ( (\"MODELO\") = ('307') )) LIMIT 1, 'EXISTS123')", filter);
|
96 |
|
97 |
// Comprobamos que con el formatter por defecto obtenemos lo mismo.
|
98 |
assertEquals(filter, exists.toString()); |
99 |
|
100 |
Compiler compiler = createCompiler();
|
101 |
|
102 |
Code code = compiler.compileExpression(filter); |
103 |
link(code); |
104 |
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());
|
105 |
} |
106 |
|
107 |
public void testForeintValue1() { |
108 |
DataManager dataManager = DALLocator.getDataManager(); |
109 |
DALExpressionBuilder builder = dataManager.createDALExpressionBuilder(); |
110 |
|
111 |
ExpressionBuilder.Function value = builder.foreing_value("SENTIDO", "DESCRIPCION"); |
112 |
String s = value.toString(new DALFormatter()); |
113 |
assertEquals("FOREING_VALUE('SENTIDO.DESCRIPCION')", s);
|
114 |
|
115 |
} |
116 |
} |