Statistics
| Revision:

svn-gvsig-desktop / tags / v1_1_Build_1012 / extensions / extScripting / src / org / gvsig / scripting / Script.java @ 12987

History | View | Annotate | Download (2.63 KB)

1 5741 jmvivo
package org.gvsig.scripting;
2
3
import java.io.File;
4
import java.io.FileReader;
5
import java.io.IOException;
6 6679 jmvivo
import java.net.URL;
7 5741 jmvivo
import java.util.Map;
8
9
import org.apache.bsf.BSFEngine;
10
import org.apache.bsf.BSFException;
11
12 6679 jmvivo
import com.iver.andami.PluginServices;
13
14 5741 jmvivo
public class Script {
15
16
    public static final String JAVASCRIPT = ScriptingExtension.JAVASCRIPT;
17
    public static final String BEANSHELL = ScriptingExtension.BEANSHELL;
18
    public static final String JYTHON = ScriptingExtension.JYTHON;
19
    public static final String GROOVY = ScriptingExtension.GROOVY;
20
21
        protected BSFEngine bsfEngine;
22
        protected String language;
23
        protected String fileName;
24
        protected Map params;
25
        protected String codeString;
26 6679 jmvivo
        protected File file;
27 5741 jmvivo
28
        public Script(Map params) throws Throwable {
29
                this.params = params;
30
                if (!params.containsKey("fileName")) {
31
                        //TODO:
32
                        throw new Exception();
33
                }
34
                this.fileName = (String)params.get("fileName");
35
                if (!params.containsKey("language")) {
36
                        //TODO:
37
                        throw new Exception();
38
                }
39
                this.language = (String)params.get("language");
40
                this.params = params;
41
                this.initialize();
42
        }
43
44 6679 jmvivo
        private String readFile(File aFile) throws IOException {
45
                StringBuffer fileContents = new StringBuffer();
46
                FileReader fileReader = new FileReader(aFile);
47
                int c;
48
                while ((c = fileReader.read()) > -1) {
49
                        fileContents.append((char)c);
50
                }
51
                fileReader.close();
52
                return fileContents.toString();
53
        }
54
55 5741 jmvivo
        private void initialize() throws BSFException, IOException {
56
                bsfEngine = ScriptingExtension.getBSFManager().loadScriptingEngine(this.language);
57
                this.file = new File(this.fileName);
58
                if (!this.file.exists()) {
59
                        //TODO:
60
                        throw new IOException();
61
                }
62 6679 jmvivo
                this.codeString = this.readFile(this.file);
63 5741 jmvivo
64
65
        }
66
67
        public void run() throws Throwable {
68
                ScriptingExtension.getBSFManager().declareBean("params",this.params,this.params.getClass());
69
70
        if (JYTHON.equals(this.language)){
71 6679 jmvivo
                this.runStartupScripJython();
72 5741 jmvivo
            this.bsfEngine.exec(this.fileName, -1, -1, this.codeString);
73
        }else{
74
            this.bsfEngine.eval(this.fileName, -1, -1, this.codeString);
75
        }
76
        }
77 6679 jmvivo
78
        private void runStartupScripJython() throws IOException, BSFException {
79
                String startUpFileName = ScriptingExtension.getScriptingAppAccesor().getScriptsDirectory();
80
                startUpFileName = startUpFileName + File.separatorChar+ "jython"+ File.separatorChar+"startup.py";
81
                File startupFile = new File(startUpFileName);
82
83
                if (!startupFile.exists()) {
84
                        throw new IOException("Startup File "+startUpFileName+" not found");
85
                        //return;
86
                }
87
                String startupCode = this.readFile(startupFile);
88
                this.bsfEngine.exec(startUpFileName, -1, -1, startupCode);
89
        }
90 5741 jmvivo
}