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

View differences:

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