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
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