Revision 301 org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/DefaultScriptingManager.java
DefaultScriptingManager.java | ||
---|---|---|
8 | 8 |
import java.io.FileWriter; |
9 | 9 |
import java.io.IOException; |
10 | 10 |
import java.io.Writer; |
11 |
import java.net.MalformedURLException; |
|
12 | 11 |
import java.util.ArrayList; |
13 | 12 |
import java.util.HashMap; |
14 | 13 |
import java.util.Iterator; |
... | ... | |
22 | 21 |
import javax.script.SimpleBindings; |
23 | 22 |
import javax.swing.ImageIcon; |
24 | 23 |
|
25 |
import org.slf4j.Logger; |
|
26 |
import org.slf4j.LoggerFactory; |
|
27 |
|
|
28 | 24 |
import org.gvsig.scripting.ScriptingBaseScript; |
29 | 25 |
import org.gvsig.scripting.ScriptingDialog; |
30 | 26 |
import org.gvsig.scripting.ScriptingFolder; |
... | ... | |
33 | 29 |
import org.gvsig.scripting.ScriptingProject; |
34 | 30 |
import org.gvsig.scripting.ScriptingScript; |
35 | 31 |
import org.gvsig.scripting.ScriptingUnit; |
32 |
import org.slf4j.Logger; |
|
33 |
import org.slf4j.LoggerFactory; |
|
36 | 34 |
|
35 |
@SuppressWarnings("restriction") |
|
37 | 36 |
public class DefaultScriptingManager implements ScriptingManager{ |
38 | 37 |
|
39 | 38 |
private static final Logger LOG = LoggerFactory |
40 | 39 |
.getLogger(DefaultScriptingManager.class); |
41 | 40 |
|
42 |
protected String rootUserFolder; |
|
43 | 41 |
protected Map<String, ImageIcon> icons; |
44 | 42 |
protected List<RegisterSystemFolder> systemFolders = new ArrayList<RegisterSystemFolder>(); |
45 | 43 |
protected ScriptEngineManager engineManager = null; |
... | ... | |
47 | 45 |
private final ScriptingHelpManager helpManager; |
48 | 46 |
private List<String> unitTypes = null; |
49 | 47 |
private ClassLoader classLoader = null; |
48 |
private List<File> libFolders = new ArrayList<File>(); |
|
49 |
private File home = null; |
|
50 | 50 |
|
51 | 51 |
public DefaultScriptingManager() { |
52 |
this.classLoader = getClass().getClassLoader(); |
|
53 |
this.setHomeFolder(null); |
|
54 |
this.bindings.put("ScriptingManager", this); |
|
55 |
this.addLibFolder(new File(this.home,"lib")); |
|
52 | 56 |
this.helpManager = new DefaultScriptingHelpManager(this); |
53 |
initialize(); |
|
54 |
this.classLoader = getClass().getClassLoader(); |
|
55 | 57 |
} |
56 | 58 |
|
57 | 59 |
public DefaultScriptingManager(ClassLoader classLoader) { |
... | ... | |
59 | 61 |
this.classLoader = classLoader; |
60 | 62 |
} |
61 | 63 |
|
62 |
private void initialize() { |
|
63 |
this.rootUserFolder = |
|
64 |
System.getProperty("user.home") + File.separator + "scripts"; |
|
64 |
private void createFolder(File f){ |
|
65 |
if( !f.exists() ) { |
|
66 |
try { |
|
67 |
f.mkdir(); |
|
68 |
LOG.info("Created scripting folder '"+home.getAbsolutePath()+"'"); |
|
69 |
} catch (Throwable e) { |
|
70 |
// Ignore it. |
|
71 |
} |
|
72 |
} |
|
73 |
} |
|
65 | 74 |
|
66 |
File f = |
|
67 |
new File(System.getProperty("user.dir") + File.separator + ".." |
|
68 |
+ File.separator + "org.gvsig.scripting.lib" + File.separator |
|
69 |
+ "org.gvsig.scripting.lib.api" + File.separator + "target" |
|
70 |
+ File.separator + "site" + File.separator + "apidoc"); |
|
71 |
if (f.exists()) { |
|
72 |
try { |
|
73 |
this.helpManager.importHelp("ScriptingFrameworkHelp", f.toURI() |
|
74 |
.toURL()); |
|
75 |
} catch (MalformedURLException e) { |
|
76 |
// TODO Auto-generated catch block |
|
77 |
e.printStackTrace(); |
|
78 |
} |
|
79 |
} |
|
80 |
this.bindings.put("ScriptingManager", this); |
|
75 |
private void createDefaultFolders(File home) { |
|
76 |
createFolder(home); |
|
77 |
createFolder(new File(home,"scripts")); |
|
78 |
createFolder(new File(home,"help")); |
|
79 |
createFolder(new File(home,"lib")); |
|
81 | 80 |
} |
82 |
|
|
83 |
|
|
81 |
|
|
82 |
public File getHomeFolder() { |
|
83 |
createDefaultFolders(home); |
|
84 |
return this.home; |
|
85 |
} |
|
86 |
|
|
87 |
public void setHomeFolder(File home) { |
|
88 |
if( home == null ) { |
|
89 |
this.home = new File(System.getProperty("user.dir"), ".scripting"); |
|
90 |
} else { |
|
91 |
this.home = home; |
|
92 |
} |
|
93 |
LOG.info("Set scripting home to '"+this.home.getAbsolutePath()+"'"); |
|
94 |
} |
|
95 |
|
|
84 | 96 |
protected ScriptEngineManager getEngineManager(){ |
85 | 97 |
if(this.engineManager == null){ |
86 | 98 |
this.engineManager = |
... | ... | |
339 | 351 |
} |
340 | 352 |
|
341 | 353 |
public ScriptingFolder getUserFolder() { |
342 |
return new UserFolder(this,new File(this.getRootUserFolder()));
|
|
354 |
return new UserFolder(this,this.getRootUserFolder());
|
|
343 | 355 |
} |
344 | 356 |
|
345 |
public String getRootUserFolder() {
|
|
346 |
return this.rootUserFolder;
|
|
357 |
public File getRootUserFolder() {
|
|
358 |
return new File(this.getHomeFolder(),"scripts");
|
|
347 | 359 |
} |
348 | 360 |
|
349 |
public void setRootUserFolder(String path){ |
|
350 |
this.rootUserFolder = path; |
|
351 |
} |
|
352 |
|
|
353 | 361 |
public void registerSystemFolder(String name, File folder) { |
354 | 362 |
this.systemFolders.add(new RegisterSystemFolder(name, folder)); |
363 |
LOG.info("Register system folder name '"+name+"' folder "+folder.getAbsolutePath()+"'"); |
|
364 |
|
|
355 | 365 |
} |
356 | 366 |
|
357 | 367 |
public List<RegisterSystemFolder> getSystemFolders(){ |
... | ... | |
427 | 437 |
} |
428 | 438 |
return this.unitTypes; |
429 | 439 |
} |
440 |
|
|
441 |
public void addLibFolder(File lib) { |
|
442 |
LOG.info("Add scripting lib folder '"+lib.getAbsolutePath()+"'"); |
|
443 |
this.libFolders.add(lib); |
|
444 |
} |
|
430 | 445 |
|
446 |
public List<File> getLibFolders() { |
|
447 |
return this.libFolders; |
|
448 |
} |
|
431 | 449 |
} |
Also available in: Unified diff