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
);
30 if (!subDirs
.contains(dir
)) {
31 RemoteExec remoteExec
= new RemoteExec();
32 remoteExec
.setCommand("mkdir -p " + dir
);
34 multiTasks
.getTasks().add(remoteExec
);
38 Resource resource
= resources
.get(relPath
);
39 ScpTo scpTo
= new ScpTo();
40 scpTo
.setLocalResource(resource
);
41 scpTo
.setRemotePath(targetBase
+ "/" + relPath
);
42 multiTasks
.getTasks().add(scpTo
);
44 // TODO: set permissions
47 multiTasks
.setSshTarget(getSshTarget());
48 multiTasks
.run(session
);
51 public void setTargetBase(String targetBase
) {
52 this.targetBase
= targetBase
;
55 public void setResourceSet(ResourceSet resourceSet
) {
56 this.resourceSet
= resourceSet
;