Revision 464 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
30 30
import org.slf4j.Logger;
31 31
import org.slf4j.LoggerFactory;
32 32

  
33
public class DefaultScriptingManager implements ScriptingManager{
33
public class DefaultScriptingManager implements ScriptingManager {
34 34

  
35 35
    private static final Logger LOG = LoggerFactory
36
        .getLogger(DefaultScriptingManager.class);
36
            .getLogger(DefaultScriptingManager.class);
37 37

  
38 38
    protected Map<String, ImageIcon> icons;
39
	protected List<RegisterSystemFolder> systemFolders = new ArrayList<RegisterSystemFolder>();
40
	protected ScriptEngineManager engineManager = null;
41
	private final SimpleBindings bindings = new SimpleBindings();
42
	private ScriptingHelpManager helpManager = null;
43
	private List<String> unitTypes = null;
39
    protected List<RegisterSystemFolder> systemFolders = new ArrayList<RegisterSystemFolder>();
40
    protected ScriptEngineManager engineManager = null;
41
    private final SimpleBindings bindings = new SimpleBindings();
42
    private ScriptingHelpManager helpManager = null;
43
    private List<String> unitTypes = null;
44 44
    private ClassLoader classLoader = null;
45 45
    private List<File> libFolders = new ArrayList<File>();
46 46
    private File home = null;
47
	
47

  
48 48
    public DefaultScriptingManager() {
49 49
        this.classLoader = getClass().getClassLoader();
50 50
        this.setHomeFolder(null);
......
56 56
        this.classLoader = classLoader;
57 57
    }
58 58

  
59
    private void createFolder(File f){
60
    	if( !f.exists() ) {
61
			try {
62
				FileUtils.forceMkdir(f);
63
				LOG.info("Created scripting folder '"+f.getAbsolutePath()+"'");
64
			} catch (Throwable e) {
65
				LOG.warn("Can't Create scripting folder '"+f.getAbsolutePath()+"'");
66
			}
67
    	}
59
    private void createFolder(File f) {
60
        if (!f.exists()) {
61
            try {
62
                FileUtils.forceMkdir(f);
63
                LOG.info("Created scripting folder '" + f.getAbsolutePath() + "'");
64
            } catch (Throwable e) {
65
                LOG.warn("Can't Create scripting folder '" + f.getAbsolutePath() + "'");
66
            }
67
        }
68 68
    }
69 69

  
70 70
    private void createDefaultFolders(File home) {
71
    	createFolder(new File(home,"scripts"));
72
    	createFolder(new File(home,"help"));
73
    	createFolder(new File(home,"lib"));
71
        createFolder(new File(home, "scripts"));
72
        createFolder(new File(home, "help"));
73
        createFolder(new File(home, "lib"));
74 74
    }
75
    
75

  
76 76
    public File getHomeFolder() {
77
    	if( !this.home.exists() ) {
78
    		createFolder(home);
79
    		createDefaultFolders(home);
80
    	}
81
    	return this.home;
77
        if (!this.home.exists()) {
78
            createFolder(home);
79
            createDefaultFolders(home);
80
        }
81
        return this.home;
82 82
    }
83
    
83

  
84 84
    public void setHomeFolder(File home) {
85
    	if( home == null ) {
86
    		this.home = new File(System.getProperty("user.home"), ".gvsig-scripting");
87
    	} else {
88
    		this.home = home;
89
    	}
90
    	createDefaultFolders(this.home);
91
		LOG.info("Set scripting home to '"+this.home.getAbsolutePath()+"'");
92
		this.addLibFolder(new File(this.home,"lib"));
85
        if (home == null) {
86
            this.home = new File(System.getProperty("user.home"), ".gvsig-scripting");
87
        } else {
88
            this.home = home;
89
        }
90
        createDefaultFolders(this.home);
91
        LOG.info("Set scripting home to '" + this.home.getAbsolutePath() + "'");
92
        this.addLibFolder(new File(this.home, "lib"));
93 93
    }
94
    
95
	protected ScriptEngineManager getEngineManager(){
96
		if(this.engineManager == null){
97
            this.engineManager =
98
                classLoader == null ? new ScriptEngineManager()
99
                    : new ScriptEngineManager(classLoader);
94

  
95
    protected ScriptEngineManager getEngineManager() {
96
        if (this.engineManager == null) {
97
            this.engineManager
98
                    = classLoader == null ? new ScriptEngineManager()
99
                            : new ScriptEngineManager(classLoader);
100 100
            showEnginesInfo(engineManager);
101
		}
102
		return this.engineManager;
103
	}
104
	
101
        }
102
        return this.engineManager;
103
    }
104

  
105 105
    private void showEnginesInfo(ScriptEngineManager mgr) {
106 106
        if (LOG.isInfoEnabled()) {
107 107
            List<ScriptEngineFactory> factories = mgr.getEngineFactories();
......
112 112

  
113 113
                // Main engine info
114 114
                buffer
115
                    .append("\n- {}: version = {}, language = {}, langVersion = {}");
115
                        .append("\n- {}: version = {}, language = {}, langVersion = {}");
116 116
                values.add(factory.getEngineName());
117 117
                values.add(factory.getEngineVersion());
118 118
                values.add(factory.getLanguageName());
......
159 159
    }
160 160

  
161 161
    protected ScriptEngine getEngine(String langName) {
162
		ScriptEngine engine = this.getEngineManager().getEngineByName(langName);
163
		engine.getBindings(ScriptContext.ENGINE_SCOPE).putAll(bindings);
164
		return engine;
165
	}
166
	
167
	public ImageIcon getIcon(String name){
168
		return this.icons.get(name);
169
	}
162
        ScriptEngine engine = this.getEngineManager().getEngineByName(langName);
163
        engine.getBindings(ScriptContext.ENGINE_SCOPE).putAll(bindings);
164
        return engine;
165
    }
170 166

  
171
	public Map<String,String> getSupportedLanguagesByExtension(){
172
        List<ScriptEngineFactory> factories =
173
            getEngineManager().getEngineFactories();
167
    public ImageIcon getIcon(String name) {
168
        return this.icons.get(name);
169
    }
170

  
171
    public Map<String, String> getSupportedLanguagesByExtension() {
172
        List<ScriptEngineFactory> factories
173
                = getEngineManager().getEngineFactories();
174 174
        Map<String, String> extToLang = new HashMap<String, String>();
175 175

  
176 176
        for (ScriptEngineFactory factory : factories) {
......
181 181
        }
182 182

  
183 183
        return extToLang;
184
	}
185
	
186
	public Map<String, String> getExtensionsByLanguages(){
184
    }
185

  
186
    public Map<String, String> getExtensionsByLanguages() {
187 187
        Map<String, String> l = getSupportedLanguagesByExtension();
188
		Map<String,String> result = new HashMap<String,String>();
188
        Map<String, String> result = new HashMap<String, String>();
189 189
        Iterator<Map.Entry<String, String>> it = l.entrySet().iterator();
190
	    while (it.hasNext()) {
190
        while (it.hasNext()) {
191 191
            Map.Entry<String, String> pairs = it.next();
192 192
            result.put(pairs.getValue(), pairs.getKey());
193
	    }
194
		return result;
195
	}
196
	
197
	public boolean validateUnitId(ScriptingFolder folder, String id){
193
        }
194
        return result;
195
    }
196

  
197
    public boolean validateUnitId(ScriptingFolder folder, String id) {
198 198
        List<ScriptingUnit> units = folder.getUnits();
199
		String fileName;
200
		String s[];
201
		String extension;
202
		for(int i=0; i<units.size();i++){
203
			fileName = (units.get(i)).getId();
204
			s = fileName.split("\\.");
205
			extension = null;
206
			if (s.length>1){
207
				extension ="." +  s[s.length-1];
208
				fileName = fileName.substring(0,fileName.length()-extension.length());
209
			}
210
			if(fileName.equals(id)){
211
				return false;
212
			}
213
		}
214
		return true;
215
	}
216
	
217
	public static String getStringFromFile(String filename){
199
        String fileName;
200
        String s[];
201
        String extension;
202
        for (int i = 0; i < units.size(); i++) {
203
            fileName = (units.get(i)).getId();
204
            s = fileName.split("\\.");
205
            extension = null;
206
            if (s.length > 1) {
207
                extension = "." + s[s.length - 1];
208
                fileName = fileName.substring(0, fileName.length() - extension.length());
209
            }
210
            if (fileName.equals(id)) {
211
                return false;
212
            }
213
        }
214
        return true;
215
    }
218 216

  
219
		BufferedReader b = null;
220
		try {
221
			try {
222
				b = new BufferedReader(new FileReader(filename));
223
			} catch (FileNotFoundException e) {
224
				LOG.warn("Can't open file '"+filename+"'.",e);
225
			}
226
			StringBuffer sb=new StringBuffer();
227
			String str;
228
			try {
229
				while((str=b.readLine())!=null) {
230
					sb.append(str);
231
					sb.append('\n');
232
				}
233
			} catch (IOException e) {
234
				LOG.warn("Can't read file '"+filename+"'.",e);
235
			}
236
			return sb.toString();
237
		} finally {
238
			if( b!=null ) {
239
				try {
240
					b.close();
241
				} catch (IOException e) {
242
					LOG.warn("Can't close file '"+filename+"'", e);
243
				}
244
				b = null;
245
			}
246
		}
247
	}
248
	
249
	public ScriptingScript createScript(ScriptingFolder folder, String id) {
250
		return this.createScript(folder, id, null);
251
	}
217
    public static String getStringFromFile(String filename) {
252 218

  
253
	private ScriptingScript createScript(ScriptingFolder folder, String id, String language) {
254
		DefaultScriptingScript script = new DefaultScriptingScript(folder, this, id);
255
		if( !script.getFile().exists() ) {
256
			script.create(folder, id, language);
257
		} else {
258
			script.load(folder, id);
259
		}
260
		return script;
261
	}
219
        BufferedReader b = null;
220
        try {
221
            try {
222
                b = new BufferedReader(new FileReader(filename));
223
            } catch (FileNotFoundException e) {
224
                LOG.warn("Can't open file '" + filename + "'.", e);
225
            }
226
            StringBuffer sb = new StringBuffer();
227
            String str;
228
            try {
229
                while ((str = b.readLine()) != null) {
230
                    sb.append(str);
231
                    sb.append('\n');
232
                }
233
            } catch (IOException e) {
234
                LOG.warn("Can't read file '" + filename + "'.", e);
235
            }
236
            return sb.toString();
237
        } finally {
238
            if (b != null) {
239
                try {
240
                    b.close();
241
                } catch (IOException e) {
242
                    LOG.warn("Can't close file '" + filename + "'", e);
243
                }
244
                b = null;
245
            }
246
        }
247
    }
262 248

  
263
	public ScriptingDialog createDialog(ScriptingFolder folder, String id) {
264
		return this.createDialog(folder, id, null);
265
	}
266
	
267
	private ScriptingDialog createDialog(ScriptingFolder folder, String id, String language) {
268
		DefaultScriptingDialog dialog = new DefaultScriptingDialog(folder, this, id);
269
		if( !dialog.getFile().exists() ) {
270
			dialog.create(folder, id, language);
271
		} else {
272
			dialog.load(folder, id);
273
		}
274
		return dialog;
275
	}
249
    public ScriptingScript createScript(ScriptingFolder folder, String id) {
250
        return this.createScript(folder, id, null);
251
    }
276 252

  
277
	public ScriptingFolder createFolder(ScriptingFolder folder, String id) {
278
		DefaultScriptingFolder unit = new DefaultScriptingFolder(folder, this, new File(folder.getFile(),id));
279
		if( !unit.getFile().exists() ) {
280
			unit.create(folder, id);
281
		} else {
282
			unit.load(folder,id);
283
		}
284
		return unit;
285
	}
253
    private ScriptingScript createScript(ScriptingFolder folder, String id, String language) {
254
        DefaultScriptingScript script = new DefaultScriptingScript(folder, this, id);
255
        if (!script.getFile().exists()) {
256
            script.create(folder, id, language);
257
        } else {
258
            script.load(folder, id);
259
        }
260
        return script;
261
    }
286 262

  
287
	public ScriptingProject createProject(ScriptingFolder folder, String id) {
288
		LOG.warn("Projects can't be implementeds");
289
		return null;
290
	}
263
    public ScriptingDialog createDialog(ScriptingFolder folder, String id) {
264
        return this.createDialog(folder, id, null);
265
    }
291 266

  
292
	public ScriptingBaseScript getScript(File file) {
293
		ScriptingBaseScript script = (ScriptingBaseScript) this.getUnit(file);
294
		if (script == null){
295
			throw new ScriptNotFoundException(file);
296
		}
297
		return script;
298
	}
299
	
300
	public ScriptingFolder getFolder(File file) {
301
		ScriptingFolder folder = (ScriptingFolder) this.getUnit(file);
302
		if (folder == null){
303
			throw new RuntimeException(file.getAbsolutePath());
304
		}
305
		return folder;
306
	}
307
	
308
	public ScriptingUnit getUnit(File file) {
309
		ScriptingFolder folder = null;
310
		ScriptingUnit unit = null;
267
    private ScriptingDialog createDialog(ScriptingFolder folder, String id, String language) {
268
        DefaultScriptingDialog dialog = new DefaultScriptingDialog(folder, this, id);
269
        if (!dialog.getFile().exists()) {
270
            dialog.create(folder, id, language);
271
        } else {
272
            dialog.load(folder, id);
273
        }
274
        return dialog;
275
    }
311 276

  
312
		if( file.isAbsolute() ) {
313
			folder = new DefaultScriptingFolder(null,this,file.getParentFile());
314
			unit = folder.getUnit(file);
315
			return unit;
316
		} else {
317
			folder = this.getUserFolder();
318
			unit = folder.getUnit(file);
319
			if( unit != null ) {
320
				return unit;
321
			}
322
			
323
			folder = this.getSystemFolder();
324
			unit = folder.getUnit(file);
325
			if( unit != null ) {
326
				return unit;
327
			}
328
		}
329
		return null;
330
	}
277
    public ScriptingFolder createFolder(ScriptingFolder folder, String id) {
278
        DefaultScriptingFolder unit = new DefaultScriptingFolder(folder, this, new File(folder.getFile(), id));
279
        if (!unit.getFile().exists()) {
280
            unit.create(folder, id);
281
        } else {
282
            unit.load(folder, id);
283
        }
284
        return unit;
285
    }
331 286

  
332
	public ScriptingFolder getSystemFolder() {
333
		return new SystemFolder(this);
334
	}
287
    public ScriptingProject createProject(ScriptingFolder folder, String id) {
288
        LOG.warn("Projects can't be implementeds");
289
        return null;
290
    }
335 291

  
336
	public ScriptingFolder getUserFolder() {
337
		return new UserFolder(this,this.getRootUserFolder());
338
	}
339
	
340
	public ScriptingBaseScript getScript(String name) {
341
		return (ScriptingBaseScript)findScript(null, name);
342
	}
292
    public ScriptingBaseScript getScript(File file) {
293
        ScriptingBaseScript script = (ScriptingBaseScript) this.getUnit(file);
294
        if (script == null) {
295
            throw new ScriptNotFoundException(file);
296
        }
297
        return script;
298
    }
343 299

  
344
	private ScriptingUnit findScript(ScriptingFolder folder, String name) {
345
		if( name==null ) {
346
			return null;
347
		}
348
		if( name.trim().length()==0 ) {
349
			return  null;
350
		}
351
		ScriptingUnit unit = null;
352
		if( folder == null ) {
353
			unit = findScript(this.getUserFolder(), name);
354
			if( unit != null ) {
355
				return unit;
356
			}
357
			unit = findScript(this.getSystemFolder(), name);
358
			return unit;
359
		}
360
		List<ScriptingUnit> units = folder.getUnits();
361
		Iterator<ScriptingUnit> it = units.iterator();
362
		while( it.hasNext() ) {
363
			unit = it.next();
364
			if( unit instanceof ScriptingFolder ) {
365
				unit = findScript((ScriptingFolder) unit, name);
366
				if( unit!= null ) {
367
					return unit;
368
				}
369
			} else if( unit instanceof ScriptingBaseScript ) {
370
				if( name.equalsIgnoreCase(unit.getId()))  {
371
					return unit;
372
				}
373
			}
374
		}
375
		return null;
376
	}
377
	
378
	public File getRootUserFolder() {
379
		return new File(this.getHomeFolder(),"scripts");
380
	}
381
	
382
	public void registerSystemFolder(String name, File folder) {
383
		this.systemFolders.add(new RegisterSystemFolder(name, folder));
384
    	LOG.info("Register system folder name '"+name+"' folder "+folder.getAbsolutePath()+"'");
300
    public ScriptingFolder getFolder(File file) {
301
        ScriptingFolder folder = (ScriptingFolder) this.getUnit(file);
302
        if (folder == null) {
303
            throw new RuntimeException(file.getAbsolutePath());
304
        }
305
        return folder;
306
    }
385 307

  
386
	}
387
	
388
	public List<RegisterSystemFolder> getSystemFolders(){
389
		return this.systemFolders;
390
	}
391
	
392
	
393
	public static class RegisterSystemFolder {
394
		public String name;
395
		public File folder;
396
		
397
		public RegisterSystemFolder(String name, File folder) {
398
			this.name = name;
399
			this.folder = folder;
400
		}
401
	}
308
    public ScriptingUnit getUnit(File file) {
309
        ScriptingFolder folder = null;
310
        ScriptingUnit unit = null;
402 311

  
312
        if (file.isAbsolute()) {
313
            folder = new DefaultScriptingFolder(null, this, file.getParentFile());
314
            unit = folder.getUnit(file);
315
            return unit;
316
        } else {
317
            folder = this.getUserFolder();
318
            unit = folder.getUnit(file);
319
            if (unit != null) {
320
                return unit;
321
            }
403 322

  
404
	public String getExtensionByLanguage(String langName) {
323
            folder = this.getSystemFolder();
324
            unit = folder.getUnit(file);
325
            if (unit != null) {
326
                return unit;
327
            }
328
        }
329
        return null;
330
    }
331

  
332
    public ScriptingFolder getSystemFolder() {
333
        return new SystemFolder(this);
334
    }
335

  
336
    public ScriptingFolder getUserFolder() {
337
        return new UserFolder(this, this.getRootUserFolder());
338
    }
339

  
340
    public ScriptingBaseScript getScript(String name) {
341
        return (ScriptingBaseScript) findScript(null, name);
342
    }
343

  
344
    private ScriptingUnit findScript(ScriptingFolder folder, String name) {
345
        if (name == null) {
346
            return null;
347
        }
348
        if (name.trim().length() == 0) {
349
            return null;
350
        }
351
        ScriptingUnit unit = null;
352
        if (folder == null) {
353
            unit = findScript(this.getUserFolder(), name);
354
            if (unit != null) {
355
                return unit;
356
            }
357
            unit = findScript(this.getSystemFolder(), name);
358
            return unit;
359
        }
360
        List<ScriptingUnit> units = folder.getUnits();
361
        Iterator<ScriptingUnit> it = units.iterator();
362
        while (it.hasNext()) {
363
            unit = it.next();
364
            if (unit instanceof ScriptingFolder) {
365
                unit = findScript((ScriptingFolder) unit, name);
366
                if (unit != null) {
367
                    return unit;
368
                }
369
            } else if (unit instanceof ScriptingBaseScript) {
370
                if (name.equalsIgnoreCase(unit.getId())) {
371
                    return unit;
372
                }
373
            }
374
        }
375
        return null;
376
    }
377

  
378
    public File getRootUserFolder() {
379
        return new File(this.getHomeFolder(), "scripts");
380
    }
381

  
382
    public void registerSystemFolder(String name, File folder) {
383
        this.systemFolders.add(new RegisterSystemFolder(name, folder));
384
        LOG.info("Register system folder name '" + name + "' folder " + folder.getAbsolutePath() + "'");
385

  
386
    }
387

  
388
    public List<RegisterSystemFolder> getSystemFolders() {
389
        return this.systemFolders;
390
    }
391

  
392
    public static class RegisterSystemFolder {
393

  
394
        public String name;
395
        public File folder;
396

  
397
        public RegisterSystemFolder(String name, File folder) {
398
            this.name = name;
399
            this.folder = folder;
400
        }
401
    }
402

  
403
    public String getExtensionByLanguage(String langName) {
405 404
        Map<String, String> extensions = getSupportedLanguagesByExtension();
406 405
        Iterator<String> iterator = extensions.keySet().iterator();
407
		String extension = null;
408
		String s = null;
409
		
410
		while (iterator. hasNext()){
411
			extension = iterator.next();
412
			s = extensions.get(extension);
406
        String extension = null;
407
        String s = null;
408

  
409
        while (iterator.hasNext()) {
410
            extension = iterator.next();
411
            s = extensions.get(extension);
413 412
            if (s.equalsIgnoreCase(langName)) {
414
				return extension;
415
			}
416
			
417
		}
418
		
419
		return null;
420
	}
421
	
422
	public Object get(String key) {
423
		return this.bindings.get(key);
424
	}
413
                return extension;
414
            }
425 415

  
426
	public void put(String key, Object value) {
427
		this.bindings.put(key,value); 
428
		
429
	}
416
        }
430 417

  
431
	public ScriptingHelpManager getHelpManager() {
432
		if( this.helpManager == null ) {
433
			this.helpManager = new DefaultScriptingHelpManager(this);
434
		}
435
		return this.helpManager;
436
	}
418
        return null;
419
    }
437 420

  
438
	public ScriptingUnit createUnit(String unitType, ScriptingFolder folder, String id) {
439
		return createUnit(unitType, folder, id, null);
440
	}
421
    public Object get(String key) {
422
        return this.bindings.get(key);
423
    }
441 424

  
442
	public ScriptingUnit createUnit(String unitType, ScriptingFolder folder, String id, String language) {
443
		if(unitType.equals(UNIT_SCRIPT)){
444
			return this.createScript(folder, id, language);
445
		}
446
		if(unitType.equals(UNIT_DIALOG)){
447
			return this.createDialog(folder, id, language);
448
		}
449
		if(unitType.equals(UNIT_FOLDER)){
450
			return this.createFolder(folder, id);
451
		}
452
		if(unitType.equals(UNIT_PROJECT)){
453
			return null;
454
		}
455
		return null;
456
	}
425
    public void put(String key, Object value) {
426
        this.bindings.put(key, value);
457 427

  
458
	public List<String> getUnitTypes() {
459
		if(this.unitTypes==null){
460
			this.unitTypes=new ArrayList<String>();
461
			this.unitTypes.add(UNIT_SCRIPT);
462
			this.unitTypes.add(UNIT_DIALOG);
463
			this.unitTypes.add(UNIT_PROJECT);
464
			this.unitTypes.add(UNIT_FOLDER);
465
		}
466
		return this.unitTypes;
467
	}
428
    }
468 429

  
469
	public void addLibFolder(File lib) {
470
		if( lib.exists() ) {
471
			LOG.info("Add scripting lib folder '"+lib.getAbsolutePath()+"'");
472
			this.libFolders.add(lib);
473
		} else {
474
			LOG.info("Skip add scripting lib folder '"+lib.getAbsolutePath()+"', folder don't exist");
475
		}
476
	}
477
	
478
	public List<File> getLibFolders() {
479
		return this.libFolders;
480
	}
430
    public ScriptingHelpManager getHelpManager() {
431
        if (this.helpManager == null) {
432
            this.helpManager = new DefaultScriptingHelpManager(this);
433
        }
434
        return this.helpManager;
435
    }
436

  
437
    public ScriptingUnit createUnit(String unitType, ScriptingFolder folder, String id) {
438
        return createUnit(unitType, folder, id, null);
439
    }
440

  
441
    public ScriptingUnit createUnit(String unitType, ScriptingFolder folder, String id, String language) {
442
        if (unitType.equals(UNIT_SCRIPT)) {
443
            return this.createScript(folder, id, language);
444
        }
445
        if (unitType.equals(UNIT_DIALOG)) {
446
            return this.createDialog(folder, id, language);
447
        }
448
        if (unitType.equals(UNIT_FOLDER)) {
449
            return this.createFolder(folder, id);
450
        }
451
        if (unitType.equals(UNIT_PROJECT)) {
452
            return null;
453
        }
454
        return null;
455
    }
456

  
457
    public List<String> getUnitTypes() {
458
        if (this.unitTypes == null) {
459
            this.unitTypes = new ArrayList<String>();
460
            this.unitTypes.add(UNIT_SCRIPT);
461
            this.unitTypes.add(UNIT_DIALOG);
462
            this.unitTypes.add(UNIT_PROJECT);
463
            this.unitTypes.add(UNIT_FOLDER);
464
        }
465
        return this.unitTypes;
466
    }
467

  
468
    public void addLibFolder(File lib) {
469
        if (lib.exists()) {
470
            LOG.info("Add scripting lib folder '" + lib.getAbsolutePath() + "'");
471
            this.libFolders.add(lib);
472
        } else {
473
            LOG.info("Skip add scripting lib folder '" + lib.getAbsolutePath() + "', folder don't exist");
474
        }
475
    }
476

  
477
    public List<File> getLibFolders() {
478
        return this.libFolders;
479
    }
481 480
}

Also available in: Unified diff