Revision 44389 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/DefaultExpressionEvaluatorManager.java

View differences:

DefaultExpressionEvaluatorManager.java
1 1
package org.gvsig.expressionevaluator.impl;
2 2

  
3 3
import java.io.InputStream;
4
import java.io.StringWriter;
4 5
import java.net.URI;
5 6
import java.net.URL;
6 7
import org.gvsig.expressionevaluator.Grammar;
......
8 9
import java.util.Collection;
9 10
import java.util.HashMap;
10 11
import java.util.Map;
12
import java.util.Objects;
11 13
import org.apache.commons.io.FilenameUtils;
12 14
import org.apache.commons.io.IOUtils;
15
import org.apache.commons.lang3.ArrayUtils;
16
import org.apache.commons.lang3.StringUtils;
13 17
import org.gvsig.expressionevaluator.Bookmarks;
14 18
import org.gvsig.expressionevaluator.Code;
15 19
import org.gvsig.expressionevaluator.CodeBuilder;
......
25 29
import org.gvsig.expressionevaluator.Compiler;
26 30
import org.gvsig.expressionevaluator.GrammarSet;
27 31
import org.gvsig.expressionevaluator.History;
32
import org.gvsig.expressionevaluator.impl.javascripting.CosaScriptEngineFactory;
28 33
import org.gvsig.tools.script.Script;
29 34
import org.slf4j.Logger;
30 35
import org.slf4j.LoggerFactory;
......
55 60
        if( factory == null ) {
56 61
            return null;
57 62
        }
58
        return factory.createSymbolTable();
63
        return factory.create();
59 64
    }
60 65

  
61 66
    @Override
......
78 83
        Code code = compiler.compileExpression(source);
79 84
        return interpreter.run(code);
80 85
    }
81

  
86
    
82 87
    @Override
83 88
    public Object evaluate(SymbolTable symbolTable, String source) {
84 89
        DefaultInterpreter interpreter = new DefaultInterpreter();
......
96 101
    }
97 102

  
98 103
    @Override
104
    public String evaluatePage(String source) {
105
        return evaluatePage(null, source);
106
    }
107
    
108
    @Override
109
    public String evaluatePage(SymbolTable symbolTable, String source) {
110
        String[] sources = StringUtils.substringsBetween(source, "<%", "%>");
111
        if( ArrayUtils.isEmpty(sources) ) {
112
            return source;
113
        }
114
        String[] values = new String[sources.length];
115
        
116
        DefaultInterpreter interpreter = new DefaultInterpreter();
117
        if( symbolTable!=null ) {
118
            interpreter.setSymbolTable(symbolTable);
119
        }
120
        StringWriter writer = new StringWriter();
121
        interpreter.setWriter(writer);
122
        DefaultCompiler compiler = new DefaultCompiler();
123
        for (int i = 0; i < sources.length; i++) {
124
            String theSource = sources[i];
125
            if( StringUtils.startsWith(theSource, "=") ) {
126
                Code code = compiler.compileExpression(theSource.substring(1));
127
                Object value = interpreter.run(code);
128
                values[i] = Objects.toString(value, "");
129
            } else {
130
                Code code = compiler.compileExpression(theSource.substring(1));
131
                writer.getBuffer().setLength(0);
132
                interpreter.run(code);
133
                values[i] = writer.toString();
134
            }
135
        }
136
        String output = StringUtils.replaceEach(source, sources, values);
137
        return output;
138
    }
139
    
140
    @Override
99 141
    public Code compile(String source) {
100 142
        Compiler compiler = this.createCompiler();
101 143
        return compiler.compileExpression(source);
......
123 165
    public void populateSymbolTable(SymbolTable aSymbolTable) {
124 166
        for (SymbolTableFactory factory : this.getSymbolTableFactories() ) {
125 167
            if( factory.isAutoload() ) {
126
                SymbolTable symbolTable = factory.createSymbolTable();
168
                SymbolTable symbolTable = factory.create();
127 169
                aSymbolTable.addSymbolTable(symbolTable);
128 170
            }
129 171
        }
......
196 238
        GrammarSet grammarSet = compiler.getGrammars();
197 239
        for (GrammarFactory factory : this.getGrammarFactories() ) {
198 240
            if( factory.isAutoload() ) {
199
                Grammar grammar = factory.createGrammar();
241
                Grammar grammar = factory.create();
200 242
                grammarSet.add(grammar);
201 243
            }
202 244
        }
......
226 268
    
227 269
    @Override
228 270
    public Script createScript(String name, String code, String languaje) {
229
        SimpleScript sc = new SimpleScript(name, code);
271
        SimpleScript sc = new SimpleScript(this.createInterpreter(), name, code);
230 272
        return sc;
231 273
    }
232 274

  
......
250 292
        } finally {
251 293
            IOUtils.closeQuietly(is);
252 294
        }
253
        return this.createScript(name, code, "COSA");
295
        return this.createScript(name, code, CosaScriptEngineFactory.LANGUAGE_NAME);
254 296
    }
255 297
            
256 298
}

Also available in: Unified diff