public static List<File> getSortedFullPaths(File dir, List<String> relativePaths) { List<File> files = getFullPaths(dir, relativePaths); Collections.sort(files); return files; }
public static List<File> getFullPaths(File dir, Set<String> relativePaths) { return getFullPaths(dir, new ArrayList<String>(relativePaths)); }
protected SyncResult getSyncResult(DirDiff diff) { List<File> adds = FileSystemUtils.getFullPaths(diff.getTargetDir(), diff.getSourceDirOnly()); List<File> deletes = FileSystemUtils.getFullPaths(diff.getTargetDir(), diff.getTargetDirOnly()); List<File> updates = new ArrayList<File>(); for (MD5Result result : diff.getDifferent()) { updates.add(result.getTarget()); } SyncResult result = new SyncResult(); result.setAdds(adds); result.setDeletes(deletes); result.setUpdates(updates); return result; }
protected static void fillInMD5Results(DirDiff diff) { List<File> sources = getFullPaths(diff.getSourceDir(), diff.getBoth()); List<File> targets = getFullPaths(diff.getTargetDir(), diff.getBoth()); List<MD5Result> results = getMD5Results(sources, targets); List<MD5Result> different = new ArrayList<MD5Result>(); List<MD5Result> identical = new ArrayList<MD5Result>(); for (MD5Result md5Result : results) { String sourceChecksum = md5Result.getSourceChecksum(); String targetChecksum = md5Result.getTargetChecksum(); Assert.notNull(sourceChecksum, "sourceChecksum is null"); Assert.notNull(targetChecksum, "targetChecksum is null"); if (StringUtils.equals(sourceChecksum, targetChecksum)) { identical.add(md5Result); } else { different.add(md5Result); } } // diff.setDifferent(different); diff.setIdentical(identical); }
public static SyncResult syncFiles(SyncRequest request) throws IOException { logger.info("Sync [{}] -> [{}]", request.getSrcDir(), request.getDstDir()); List<File> dstFiles = getAllNonScmFiles(request.getDstDir()); List<File> srcFiles = request.getSrcFiles(); List<String> dstPaths = getRelativePaths(request.getDstDir(), dstFiles); List<String> srcPaths = getRelativePaths(request.getSrcDir(), srcFiles); List<String> adds = new ArrayList<String>(); List<String> updates = new ArrayList<String>(); List<String> deletes = new ArrayList<String>(); for (String srcPath : srcPaths) { boolean existing = dstPaths.contains(srcPath); if (existing) { updates.add(srcPath); } else { adds.add(srcPath); } } for (String dstPath : dstPaths) { boolean extra = !srcPaths.contains(dstPath); if (extra) { deletes.add(dstPath); } } copyFiles(request.getSrcDir(), request.getSrcFiles(), request.getDstDir()); SyncResult result = new SyncResult(); result.setAdds(getFullPaths(request.getDstDir(), adds)); result.setUpdates(getFullPaths(request.getDstDir(), updates)); result.setDeletes(getFullPaths(request.getDstDir(), deletes)); return result; }