Revision 44191 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
DefaultExpression.java | ||
---|---|---|
153 | 153 |
} |
154 | 154 |
|
155 | 155 |
@Override |
156 |
public void setSQLCompatible(boolean sqlCompatible) { |
|
157 |
this.getInterpreter().setSQLCompatible(sqlCompatible); |
|
158 |
} |
|
159 |
|
|
160 |
@Override |
|
161 |
public boolean isSQLCompatible() { |
|
162 |
return this.getInterpreter().isSQLCompatible(); |
|
163 |
} |
|
164 |
|
|
165 |
private Interpreter getInterpreter() { |
|
166 |
if (this.interpreter == null) { |
|
167 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
|
168 |
this.interpreter = manager.createInterpreter(); |
|
169 |
} |
|
170 |
return this.interpreter; |
|
171 |
} |
|
172 |
|
|
173 |
@Override |
|
156 | 174 |
public Object execute(SymbolTable symbolTable) { |
157 | 175 |
if (this.interpreter == null) { |
158 | 176 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
... | ... | |
169 | 187 |
} |
170 | 188 |
|
171 | 189 |
@Override |
190 |
public void link(SymbolTable symbolTable) { |
|
191 |
if (this.interpreter == null) { |
|
192 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
|
193 |
this.interpreter = manager.createInterpreter(); |
|
194 |
} |
|
195 |
this.interpreter.setSymbolTable(symbolTable); |
|
196 |
if( this.hasNotBeenOptimized ) { |
|
197 |
Optimizer optimizer = new DefaultOptimizer(symbolTable); |
|
198 |
this.code = optimizer.optimize(this.getCode()); |
|
199 |
this.hasNotBeenOptimized = false; |
|
200 |
} |
|
201 |
this.interpreter.link(this.getCode()); |
|
202 |
} |
|
203 |
|
|
204 |
@Override |
|
172 | 205 |
public void saveToState(PersistentState state) throws PersistenceException { |
173 | 206 |
state.set("phrase", this.phrase); |
174 | 207 |
if (this.userScript == null) { |
Also available in: Unified diff