X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fcmd%2FSync.java;h=515ef6c5565d86730f77db5e7f2e023f74040c66;hb=57e34e0482e03cea9a6a34326c22c7c969ad07c8;hp=1744cb12adf779c265c953f9188679e196ac1826;hpb=7764393bb0f9fafab93c86a5b16ef7773e1b0cc8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/cmd/Sync.java b/org.argeo.cms/src/org/argeo/cms/cmd/Sync.java index 1744cb12a..515ef6c55 100644 --- a/org.argeo.cms/src/org/argeo/cms/cmd/Sync.java +++ b/org.argeo.cms/src/org/argeo/cms/cmd/Sync.java @@ -1,20 +1,19 @@ package org.argeo.cms.cmd; +import java.net.URI; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.spi.FileSystemProvider; +import java.time.ZonedDateTime; import java.util.HashMap; import java.util.Map; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory; -import org.argeo.cms.internal.kernel.KernelConstants; +import org.argeo.cms.CmsException; import org.argeo.jackrabbit.fs.DavexFsProvider; -import org.argeo.jcr.ArgeoJcrException; -import org.argeo.jcr.JcrUtils; -import org.argeo.jcr.fs.JcrFileSystem; +import org.argeo.util.LangUtils; public class Sync { private final static Log log = LogFactory.getLog(Sync.class); @@ -43,25 +42,32 @@ public class Sync { } } - log.debug("Hello world " + arguments); - String sourceUri = arguments.get("-i"); - DavexFsProvider fsProvider = new DavexFsProvider(); -// Map params = new HashMap(); -// params.put(KernelConstants.JACKRABBIT_REPOSITORY_URI, sourceUri); -// params.put(KernelConstants.JACKRABBIT_REMOTE_DEFAULT_WORKSPACE, "main"); -// Repository repository; -// try { -// repository = new Jcr2davRepositoryFactory().getRepository(params); -// if (repository == null) -// throw new ArgeoJcrException("Remote Davex repository " + sourceUri + " not found"); -// Session session = repository.login(); -// if (log.isDebugEnabled()) -// log.debug("Opened JCR session to " + sourceUri); -// JcrUtils.logoutQuietly(session); -// } catch (RepositoryException e) { -// throw new ArgeoJcrException("Cannot load " + sourceUri, e); -// } + try { + URI sourceUri = new URI(arguments.get("-i")); + URI targetUri = new URI(arguments.get("-o")); + FileSystemProvider sourceFsProvider = createFsProvider(sourceUri); + FileSystemProvider targetFsProvider = createFsProvider(targetUri); + Path sourceBasePath = sourceFsProvider.getPath(sourceUri); + Path targetBasePath = targetFsProvider.getPath(targetUri); + SyncFileVisitor syncFileVisitor = new SyncFileVisitor(sourceBasePath, targetBasePath); + ZonedDateTime begin = ZonedDateTime.now(); + Files.walkFileTree(sourceBasePath, syncFileVisitor); + if (log.isDebugEnabled()) + log.debug("Sync from " + sourceBasePath + " to " + targetBasePath + " took " + LangUtils.since(begin)); + } catch (Exception e) { + e.printStackTrace(); + } + } + private static FileSystemProvider createFsProvider(URI uri) { + FileSystemProvider fsProvider; + if (uri.getScheme().equals("file")) + fsProvider = FileSystems.getDefault().provider(); + else if (uri.getScheme().equals("davex")) + fsProvider = new DavexFsProvider(); + else + throw new CmsException("URI scheme not supported for " + uri); + return fsProvider; } static enum Arg {