Revision 989 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 | ||
---|---|---|
17 | 17 |
import javax.script.SimpleBindings; |
18 | 18 |
import javax.swing.ImageIcon; |
19 | 19 |
|
20 |
import org.apache.commons.io.FileUtils; |
|
21 | 20 |
import org.apache.commons.lang3.StringUtils; |
22 | 21 |
import org.gvsig.scripting.ScriptingBaseScript; |
23 | 22 |
import org.gvsig.scripting.ScriptingDialog; |
... | ... | |
360 | 359 |
return script; |
361 | 360 |
} |
362 | 361 |
|
362 |
|
|
363 | 363 |
@Override |
364 | 364 |
public ScriptingFolder getFolder(File file) { |
365 |
if( file == null ) { |
|
366 |
throw new IllegalArgumentException("file argument can't be null"); |
|
367 |
} |
|
368 |
file = this.getLinkSource(file); |
|
369 |
if( FileUtils.isSameFile(this.getRootUserFolder(),file) ) { |
|
370 |
return this.getUserFolder(); |
|
371 |
} |
|
372 |
|
|
365 | 373 |
ScriptingFolder folder = (ScriptingFolder) this.getUnit(file); |
366 | 374 |
if (folder == null) { |
367 |
throw new RuntimeException(file.getAbsolutePath());
|
|
375 |
throw new IllegalArgumentException("Can't get ScriptFolder from '"+file.getAbsolutePath()+"'.");
|
|
368 | 376 |
} |
369 | 377 |
return folder; |
370 | 378 |
} |
... | ... | |
660 | 668 |
this.packagesFolder = folder; |
661 | 669 |
} |
662 | 670 |
|
671 |
@Override |
|
672 |
public ScriptingFolder createLink(String name, File link, String targetPathName) { |
|
673 |
StringBuilder contents = new StringBuilder(); |
|
674 |
contents.append("[Unit]\n") |
|
675 |
.append("type = Folder\n") |
|
676 |
.append("name = ").append(name).append("\n") |
|
677 |
.append("description =\n") |
|
678 |
.append("createdBy =\n") |
|
679 |
.append("version =\n") |
|
680 |
.append("\n") |
|
681 |
.append("[Folder]\n") |
|
682 |
.append("path =").append(targetPathName).append("\n") |
|
683 |
.append("\n\n"); |
|
684 |
|
|
685 |
if( link.isDirectory() ) { |
|
686 |
link = new File(link,name+".inf"); |
|
687 |
} else if( !link.getName().endsWith(".inf") ) { |
|
688 |
link = new File( link.getPath() + ".inf"); |
|
689 |
} |
|
690 |
if( !link.exists() ) { |
|
691 |
try { |
|
692 |
FileUtils.writeStringToFile(link, contents.toString()); |
|
693 |
} catch (IOException ex) { |
|
694 |
LOG.warn("Can't create ScriptingFolder file in '" + link.getAbsolutePath() + "'.", ex); |
|
695 |
} |
|
696 |
} |
|
697 |
ScriptingFolder folder = this.getFolder(link); |
|
698 |
return folder; |
|
699 |
} |
|
700 |
|
|
701 |
@Override |
|
702 |
public ScriptingFolder createLink(String name, ScriptingFolder link, String targetPathName) { |
|
703 |
return this.createLink(name, link.getFile(), targetPathName); |
|
704 |
} |
|
705 |
|
|
706 |
private Map<File,File> links = new HashMap<>(); |
|
707 |
|
|
708 |
public void addLink(File source, File target) { |
|
709 |
this.links.put(FileUtils.getRealFile(target), source); |
|
710 |
} |
|
711 |
|
|
712 |
public File getLinkSource(File target) { |
|
713 |
File source = this.links.get(FileUtils.getRealFile(target)); |
|
714 |
if( source == null ) { |
|
715 |
return target; |
|
716 |
} |
|
717 |
if( source.exists() ) { |
|
718 |
return source; |
|
719 |
} |
|
720 |
return target; |
|
721 |
} |
|
722 |
|
|
723 |
public boolean isInUserFolder(File f) { |
|
724 |
if( FileUtils.isSubfolder(this.getRootUserFolder(), f) ) { |
|
725 |
return true; |
|
726 |
} |
|
727 |
for( File file : this.links.keySet()) { |
|
728 |
if( FileUtils.isSubfolder(file, f) ) { |
|
729 |
return true; |
|
730 |
} |
|
731 |
} |
|
732 |
return false; |
|
733 |
} |
|
663 | 734 |
} |
Also available in: Unified diff