X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.core%2Fsrc%2Forg%2Fargeo%2Fsync%2Ffs%2FPathSync.java;h=99d5de81fb23da18fe679a1cfaa9251bef4c2891;hb=5c6333d04de4985c349197852414faa0f4ee33ee;hp=1dc30db6567ea9ffec7a08c1355d72ef88e4f3b7;hpb=d6bb3d3e0643c410ecd3ca1d4d88ae412697f258;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.core/src/org/argeo/sync/fs/PathSync.java b/org.argeo.core/src/org/argeo/sync/fs/PathSync.java index 1dc30db65..99d5de81f 100644 --- a/org.argeo.core/src/org/argeo/sync/fs/PathSync.java +++ b/org.argeo.core/src/org/argeo/sync/fs/PathSync.java @@ -11,6 +11,7 @@ import java.time.ZonedDateTime; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.jackrabbit.fs.DavexFsProvider; +import org.argeo.ssh.Sftp; import org.argeo.sync.SyncException; import org.argeo.util.LangUtils; @@ -27,12 +28,8 @@ public class PathSync implements Runnable { @Override public void run() { try { - FileSystemProvider sourceFsProvider = createFsProvider(sourceUri); - FileSystemProvider targetFsProvider = createFsProvider(targetUri); - Path sourceBasePath = sourceUri.getScheme() != null ? sourceFsProvider.getPath(sourceUri) - : Paths.get(sourceUri.getPath()); - Path targetBasePath = targetUri.getScheme() != null ? targetFsProvider.getPath(targetUri) - : Paths.get(targetUri.getPath()); + Path sourceBasePath = createPath(sourceUri); + Path targetBasePath = createPath(targetUri); SyncFileVisitor syncFileVisitor = new SyncFileVisitor(sourceBasePath, targetBasePath); ZonedDateTime begin = ZonedDateTime.now(); Files.walkFileTree(sourceBasePath, syncFileVisitor); @@ -43,15 +40,22 @@ public class PathSync implements Runnable { } } - private static FileSystemProvider createFsProvider(URI uri) { - FileSystemProvider fsProvider; - if (uri.getScheme() == null || uri.getScheme().equals("file")) - fsProvider = FileSystems.getDefault().provider(); - else if (uri.getScheme().equals("davex")) - fsProvider = new DavexFsProvider(); - else + private static Path createPath(URI uri) { + Path path; + if (uri.getScheme() == null) { + path = Paths.get(uri.getPath()); + } else if (uri.getScheme().equals("file")) { + FileSystemProvider fsProvider = FileSystems.getDefault().provider(); + path = fsProvider.getPath(uri); + } else if (uri.getScheme().equals("davex")) { + FileSystemProvider fsProvider = new DavexFsProvider(); + path = fsProvider.getPath(uri); + } else if (uri.getScheme().equals("sftp")) { + Sftp sftp = new Sftp(uri); + path = sftp.getBasePath(); + } else throw new SyncException("URI scheme not supported for " + uri); - return fsProvider; + return path; } static enum Arg {