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

View differences:

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