Revision 44009 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
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");

Also available in: Unified diff