X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=blobdiff_plain;f=org.argeo.core%2Fsrc%2Forg%2Fargeo%2Fsync%2Ffs%2FSyncFileVisitor.java;h=d59a611fca63ed213bd9af4e1f33de9ef196bde1;hp=de8032004e324a42ee5332539b0828a90daf7494;hb=438237c2b8c995d4f9562d53bfe4ea63c4442054;hpb=9885228c89ca6da1835c1c3e098c92589d76301e diff --git a/org.argeo.core/src/org/argeo/sync/fs/SyncFileVisitor.java b/org.argeo.core/src/org/argeo/sync/fs/SyncFileVisitor.java index de8032004..d59a611fc 100644 --- a/org.argeo.core/src/org/argeo/sync/fs/SyncFileVisitor.java +++ b/org.argeo.core/src/org/argeo/sync/fs/SyncFileVisitor.java @@ -1,56 +1,31 @@ package org.argeo.sync.fs; -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.fs.BasicSyncFileVisitor; /** Synchronises two directory structures. */ -public class SyncFileVisitor extends SimpleFileVisitor { +public class SyncFileVisitor extends BasicSyncFileVisitor { private final static Log log = LogFactory.getLog(SyncFileVisitor.class); - private final Path sourceBasePath; - private final Path targetBasePath; - - public SyncFileVisitor(Path sourceBasePath, Path targetBasePath) { - this.sourceBasePath = sourceBasePath; - this.targetBasePath = targetBasePath; + public SyncFileVisitor(Path sourceBasePath, Path targetBasePath, boolean delete) { + super(sourceBasePath, targetBasePath, delete); } @Override - public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { - Path targetPath = toTargetPath(dir); - Files.createDirectories(targetPath); - return FileVisitResult.CONTINUE; + protected void error(Object obj, Throwable e) { + log.error(obj, e); } @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { - Path targetPath = toTargetPath(file); - try { - Files.copy(file, targetPath); - if (log.isDebugEnabled()) - log.debug("Copied " + targetPath); - } catch (Exception e) { - log.error("Cannot copy " + file + " to " + targetPath, e); - } - return FileVisitResult.CONTINUE; + protected boolean isDebugEnabled() { + return log.isDebugEnabled(); } @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { - log.error("Cannot sync " + file, exc); - return FileVisitResult.CONTINUE; - } - - private Path toTargetPath(Path sourcePath) { - Path relativePath = sourceBasePath.relativize(sourcePath); - Path targetPath = targetBasePath.resolve(relativePath.toString()); - return targetPath; + protected void debug(Object obj) { + log.debug(obj); } }