1 package org
.argeo
.slc
.jsch
;
3 import java
.util
.ArrayList
;
7 import org
.argeo
.slc
.core
.deploy
.ResourceSet
;
8 import org
.springframework
.core
.io
.Resource
;
10 import com
.jcraft
.jsch
.Session
;
12 public class SshFilesDeployment
extends AbstractJschTask
implements Runnable
{
13 private String targetBase
= "";
14 private ResourceSet resourceSet
;
17 void run(Session session
) {
18 JschMultiTasks multiTasks
= new JschMultiTasks();
20 List
<String
> subDirs
= new ArrayList
<String
>();
21 Map
<String
, Resource
> resources
= resourceSet
.listResources();
22 for (String relPath
: resources
.keySet()) {
23 // Create dir if necessary
25 int lastIndexSubDir
= relPath
.lastIndexOf('/');
26 if (lastIndexSubDir
> 0)
27 dir
= targetBase
+ '/' + relPath
.substring(0, lastIndexSubDir
);
31 if (!subDirs
.contains(dir
)) {
36 Resource resource
= resources
.get(relPath
);
37 ScpTo scpTo
= new ScpTo();
38 scpTo
.setLocalResource(resource
);
39 scpTo
.setRemotePath(targetBase
+ "/" + relPath
);
40 multiTasks
.getTasks().add(scpTo
);
42 // TODO: set permissions
45 RemoteExec remoteExec
= new RemoteExec();
46 for (String dir
: subDirs
) {
47 remoteExec
.getCommands().add("mkdir -p " + dir
);
49 multiTasks
.getTasks().add(0, remoteExec
);
51 multiTasks
.setSshTarget(getSshTarget());
52 multiTasks
.run(session
);
55 public void setTargetBase(String targetBase
) {
56 this.targetBase
= targetBase
;
59 public void setResourceSet(ResourceSet resourceSet
) {
60 this.resourceSet
= resourceSet
;