]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/jsch/SshFilesDeployment.java
Introduce filtered resources
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / jsch / SshFilesDeployment.java
index 7a3de3763b707d8f1bca22a591bd644d48ed19d4..97ba6c740d0db3479775393133aa0e6f581bc26b 100644 (file)
@@ -7,14 +7,15 @@ import java.util.Map;
 import org.argeo.slc.core.deploy.ResourceSet;
 import org.springframework.core.io.Resource;
 
-public class SshFilesDeployment implements Runnable {
+import com.jcraft.jsch.Session;
+
+public class SshFilesDeployment extends AbstractJschTask implements Runnable {
        private String targetBase = "";
        private ResourceSet resourceSet;
-       private SshTarget sshTarget;
 
-       public void run() {
+       @Override
+       void run(Session session) {
                JschMultiTasks multiTasks = new JschMultiTasks();
-               multiTasks.setSshTarget(sshTarget);
 
                List<String> subDirs = new ArrayList<String>();
                Map<String, Resource> resources = resourceSet.listResources();
@@ -26,11 +27,9 @@ public class SshFilesDeployment implements Runnable {
                                dir = targetBase + '/' + relPath.substring(0, lastIndexSubDir);
                        else
                                dir = targetBase;
+
                        if (!subDirs.contains(dir)) {
-                               RemoteExec remoteExec = new RemoteExec();
-                               remoteExec.setCommand("mkdir -p " + dir);
                                subDirs.add(dir);
-                               multiTasks.getTasks().add(remoteExec);
                        }
 
                        // Copy resource
@@ -39,9 +38,18 @@ public class SshFilesDeployment implements Runnable {
                        scpTo.setLocalResource(resource);
                        scpTo.setRemotePath(targetBase + "/" + relPath);
                        multiTasks.getTasks().add(scpTo);
+
+                       // TODO: set permissions
+               }
+
+               RemoteExec remoteExec = new RemoteExec();
+               for (String dir : subDirs) {
+                       remoteExec.getCommands().add("mkdir -p " + dir);
                }
+               multiTasks.getTasks().add(0, remoteExec);
 
-               multiTasks.run();
+               multiTasks.setSshTarget(getSshTarget());
+               multiTasks.run(session);
        }
 
        public void setTargetBase(String targetBase) {
@@ -51,9 +59,4 @@ public class SshFilesDeployment implements Runnable {
        public void setResourceSet(ResourceSet resourceSet) {
                this.resourceSet = resourceSet;
        }
-
-       public void setSshTarget(SshTarget sshTarget) {
-               this.sshTarget = sshTarget;
-       }
-
 }