Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / java / org / gvsig / scripting / app / extension / ScriptingMain.java @ 1063

History | View | Annotate | Download (6.44 KB)

1
package org.gvsig.scripting.app.extension;
2

    
3
import java.io.File;
4
import java.net.URL;
5
import java.util.ArrayList;
6
import java.util.HashMap;
7
import java.util.List;
8
import java.util.Map;
9
import javax.swing.UIManager;
10
import org.apache.commons.cli.CommandLine;
11
import org.apache.commons.cli.CommandLineParser;
12
import org.apache.commons.cli.Options;
13
import org.apache.commons.cli.PosixParser;
14
import org.apache.commons.io.FileUtils;
15
import org.gvsig.about.AboutLocator;
16
import org.gvsig.about.AboutManager;
17
import org.gvsig.scripting.ScriptingManager;
18
import org.gvsig.scripting.swing.api.ScriptingSwingLocator;
19
import org.gvsig.scripting.swing.api.ScriptingUIManager;
20
import org.gvsig.tools.ToolsLocator;
21
import org.gvsig.tools.exception.BaseException;
22
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
23
import org.gvsig.tools.packageutils.PackageInfo;
24
import org.gvsig.tools.packageutils.PackageManager;
25
import org.gvsig.tools.packageutils.Version;
26

    
27
/**
28
 *
29
 * @author jjdelcerro
30
 */
31
public class ScriptingMain {
32

    
33
    private File applicationFolder = null;
34
    private Version applicacionVersion = null;
35
    private List<File> pluginsFolder = null;
36
    private File applicationHomeFolder;
37
    private File installFolder;
38
    private int applicacionBuildNumber;
39

    
40
    private ScriptingUtils utils;
41

    
42
    public static void main(String args[]) throws Exception {
43
        ScriptingMain main = new ScriptingMain();
44
        main.doMain(args);
45
    }
46
    
47
    public File getApplicationFolder() {
48
        if (applicationFolder == null) {
49
            applicationFolder = new File(System.getProperty("user.dir"));
50
        }
51
        return applicationFolder;
52
    }
53

    
54
    public File getApplicationHomeFolder() {
55
        if (applicationHomeFolder == null) {
56
            applicationHomeFolder = new File(System.getProperty("user.home"));
57
        }
58
        return applicationHomeFolder;
59
    }
60

    
61
    public File getInstallFolder() {
62
        if (installFolder == null) {
63
            installFolder = FileUtils.getFile(getApplicationFolder(), "install");
64
        }
65
        return this.installFolder;
66
    }
67

    
68
    public Version getApplicationVersion() throws BaseException {
69
        if (applicacionVersion == null) {
70
            PackageManager packageManager = ToolsLocator.getPackageManager();
71
            PackageInfo packageInfo = packageManager.createPackageInfo(
72
                    new File(this.applicationFolder, "package.info")
73
            );
74
            applicacionVersion = (Version) packageInfo.getVersion();
75
        }
76
        return applicacionVersion;
77
    }
78

    
79
    public int getApplicationBuildNumber() throws BaseException {
80
        if (applicacionBuildNumber == 0) {
81
            applicacionBuildNumber = getApplicationVersion().getBuild();
82
        }
83
        return this.applicacionBuildNumber;
84
    }
85

    
86
    public List<File> getPluginsFolder() {
87
        List<File> folders = new ArrayList<>();
88
        folders.add(FileUtils.getFile(this.getApplicationFolder(), "gvSIG", "extensiones"));
89
        folders.add(FileUtils.getFile(this.getApplicationHomeFolder(), "gvSIG", "installation", "gvSIG", "extensiones"));
90
        return folders;
91
    }
92

    
93
    public File getPluginHomeFolder() {
94
        File f = this.getApplicationHomeFolder();
95
        f = FileUtils.getFile(f, "gvSIG", "plugins", "org.gvsig.scripting.app.mainplugin");
96
        return f;
97
    }
98

    
99
    private void initializeAbout() throws Exception {
100
        AboutManager aboutManager = AboutLocator.getManager();
101

    
102
        String build = String.valueOf(this.getApplicationBuildNumber());
103
        String version = this.getApplicationVersion().toString();
104
        
105
        Map<String, String> gvsig_vars = new HashMap<>();
106
        gvsig_vars.put("version", version);
107
        gvsig_vars.put("build", build);
108
        aboutManager.setProject(
109
                "gvSIG Desktop", 
110
                getResource("gvsig.html"),
111
                null, 
112
                gvsig_vars);
113
        aboutManager.getProject().set("build", build);
114

    
115
        aboutManager.addSponsor(
116
                "Generalitat Valenciana",
117
                getResource("gva.html"), 
118
                1);
119

    
120
        aboutManager.addDeveloper(
121
                "gvSIG Asocicion",
122
                getResource("gvSIG-asociacion.html"), 
123
                2);
124

    
125
    }
126

    
127
    public void doMain(String args[]) throws Exception {
128

    
129
        String lookAndFeel = "com.jgoodies.looks.plastic.PlasticXPLookAndFeel";
130
        try {
131
            UIManager.setLookAndFeel(lookAndFeel);
132
        } catch(Throwable th) {
133
            
134
        }
135
        
136
        new DefaultLibrariesInitializer().fullInitialize();
137

    
138
        initializeAbout();
139

    
140
        this.utils = new ScriptingUtils();
141
        this.utils.initializaPaths(
142
                this.getPluginsFolder(),
143
                this.getInstallFolder(),
144
                this.getPluginHomeFolder(),
145
                this.getApplicationVersion().format("%M.%m.%r")
146
        );
147

    
148
        ScriptingUIManager uimanager = ScriptingSwingLocator.getUIManager();
149
        ScriptingManager manager = uimanager.getManager();
150

    
151
        Options options = new Options();
152
        options.addOption("d",
153
                "debug",
154
                false,
155
                "");
156
        options.addOption("p",
157
                "pause",
158
                false,
159
                "");
160
        options.addOption("l",
161
                "launcher",
162
                false,
163
                "Show the launcher window");
164
        options.addOption("c",
165
                "composer",
166
                false,
167
                "Show the composer window");
168
        options.addOption("r",
169
                "run",
170
                true,
171
                "Run the specified script");
172
        options.addOption("h",
173
                "home",
174
                true,
175
                "Specify for the home of the script framework");
176
        CommandLineParser parser = new PosixParser();
177
        CommandLine line = null;
178
        boolean runLauncherAtEnd = true;
179
        
180
        line = parser.parse(options, args);
181
        if (line.hasOption("home")) {
182
            manager.setHomeFolder(new File(line.getOptionValue("home")));
183
        }
184
        if (line.hasOption("composer")) {
185
            runLauncherAtEnd = false;
186
            utils.runComposer();
187
        }
188
        if (line.hasOption("run")) {
189
            runLauncherAtEnd = false;
190
            utils.runScript(line.getOptionValue("run"), line.getArgs());
191
        }
192
        if( runLauncherAtEnd ) {
193
            utils.runLauncher();
194
        }
195
    }
196

    
197
    private URL getResource(String name) {
198
        URL resource = this.getClass().getResource(name);
199
        return resource;
200
    }
201

    
202
}