Revision 1084 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 | ||
---|---|---|
19 | 19 |
import javax.swing.ImageIcon; |
20 | 20 |
|
21 | 21 |
import org.apache.commons.lang3.StringUtils; |
22 |
import org.gvsig.scripting.DataFolderFound; |
|
22 | 23 |
import org.gvsig.scripting.ScriptingBaseScript; |
23 | 24 |
import org.gvsig.scripting.ScriptingDialog; |
24 | 25 |
import org.gvsig.scripting.ScriptingExternalFile; |
... | ... | |
26 | 27 |
import org.gvsig.scripting.ScriptingManager; |
27 | 28 |
import org.gvsig.scripting.ScriptingScript; |
28 | 29 |
import org.gvsig.scripting.ScriptingUnit; |
30 |
import org.gvsig.tools.packageutils.Version; |
|
29 | 31 |
import org.gvsig.tools.script.Script; |
30 | 32 |
import org.gvsig.tools.service.spi.ProviderFactory; |
33 |
import org.gvsig.tools.util.FolderSet; |
|
31 | 34 |
import org.python.jsr223.MyPyScriptEngine; |
32 | 35 |
import org.slf4j.Logger; |
33 | 36 |
import org.slf4j.LoggerFactory; |
34 | 37 |
|
35 | 38 |
|
39 |
@SuppressWarnings("UseSpecificCatch") |
|
36 | 40 |
public class DefaultScriptingManager implements ScriptingManager { |
37 | 41 |
|
38 | 42 |
public static class RegisterSystemFolder { |
... | ... | |
63 | 67 |
private File packagesFolder; |
64 | 68 |
private final Map properties = new HashMap(); |
65 | 69 |
private final Map<String,ScriptEngine> engineGroups = new HashMap<>(); |
70 |
private DataFolderManager dataFolderManager = null; |
|
71 |
private ScriptingFolder userFolder = null; |
|
72 |
private ScriptingFolder systemFolder = null; |
|
66 | 73 |
|
67 | 74 |
@SuppressWarnings({"OverridableMethodCallInConstructor", "LeakingThisInConstructor"}) |
68 | 75 |
public DefaultScriptingManager() { |
... | ... | |
129 | 136 |
this.addLibFolder(new File(this.home, "lib")); |
130 | 137 |
} |
131 | 138 |
|
139 |
private DataFolderManager getDataFolderManager() { |
|
140 |
if( this.dataFolderManager==null ) { |
|
141 |
this.dataFolderManager = new DataFolderManager(this); |
|
142 |
} |
|
143 |
return this.dataFolderManager; |
|
144 |
} |
|
145 |
|
|
132 | 146 |
@Override |
133 | 147 |
public File getDataFolder(String id) { |
134 |
File f = FileUtils.getFile(getHomeFolder(), "data",id); |
|
135 |
createFolder(f); |
|
136 |
return f; |
|
148 |
return this.getDataFolderManager().getDataFolder(id); |
|
137 | 149 |
} |
138 | 150 |
|
151 |
public void registerDataFolder(ScriptingFolder folderScript, String id ) { |
|
152 |
this.getDataFolderManager().registerDataFolder(folderScript, id); |
|
153 |
} |
|
154 |
|
|
155 |
@Override |
|
156 |
public List<DataFolderFound> searchOldVersions(Version currentVersion, FolderSet folder) { |
|
157 |
return this.getDataFolderManager().searchOldVersions(currentVersion, folder); |
|
158 |
} |
|
159 |
|
|
139 | 160 |
protected synchronized ScriptEngineManager getEngineManager() { |
140 | 161 |
if (this.engineManager == null) { |
141 | 162 |
this.engineManager |
... | ... | |
379 | 400 |
return folder; |
380 | 401 |
} |
381 | 402 |
|
403 |
public ScriptingUnit getUnit(String pathName) { |
|
404 |
ScriptingUnit unit = null; |
|
405 |
String[] parts = StringUtils.split(pathName, '/'); |
|
406 |
if( pathName.equals(this.getUserFolder().getName()) ) { |
|
407 |
unit = this.getUserFolder().getUnit( |
|
408 |
StringUtils.join(parts, "/", 1, parts.length) |
|
409 |
); |
|
410 |
} else if( pathName.equals(this.getSystemFolder().getName()) ) { |
|
411 |
unit = this.getSystemFolder().getUnit( |
|
412 |
StringUtils.join(parts, "/", 1, parts.length) |
|
413 |
); |
|
414 |
} |
|
415 |
return unit; |
|
416 |
} |
|
417 |
|
|
382 | 418 |
public ScriptingUnit getUnit(File file) { |
383 | 419 |
ScriptingFolder folder; |
384 | 420 |
ScriptingUnit unit; |
385 | 421 |
|
386 | 422 |
if (file.isAbsolute()) { |
387 |
folder = new DefaultScriptingFolder(null, this, file.getParentFile()); |
|
423 |
if( FileUtils.isSameFile(this.getRootUserFolder(), file.getParentFile()) ) { |
|
424 |
folder = this.getUserFolder(); |
|
425 |
// FIXME: que pasa si esta en SystemFolder ??? |
|
426 |
} else { |
|
427 |
folder = new DefaultScriptingFolder(null, this, file.getParentFile()); |
|
428 |
} |
|
388 | 429 |
unit = folder.getUnit(file); |
389 | 430 |
return unit; |
390 | 431 |
} else { |
... | ... | |
405 | 446 |
|
406 | 447 |
@Override |
407 | 448 |
public ScriptingFolder getSystemFolder() { |
408 |
return new SystemFolder(this); |
|
449 |
if( this.systemFolder == null ) { |
|
450 |
this.systemFolder = new SystemFolder(this); |
|
451 |
} |
|
452 |
return this.systemFolder; |
|
409 | 453 |
} |
410 | 454 |
|
411 | 455 |
@Override |
412 | 456 |
public ScriptingFolder getUserFolder() { |
413 |
return new UserFolder(this, this.getRootUserFolder()); |
|
457 |
if( this.userFolder == null ) { |
|
458 |
this.userFolder = new UserFolder(this, this.getRootUserFolder()); |
|
459 |
} |
|
460 |
return this.userFolder; |
|
414 | 461 |
} |
415 | 462 |
|
416 | 463 |
@Override |
Also available in: Unified diff