package br.uff.ic.oceano.util.test; import br.uff.ic.oceano.util.file.FileUtils; import difflib.Delta; import difflib.DiffUtils; import difflib.Patch; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Set; /** * * @author Daniel */ public class DiffUtil { public static boolean hasDiff(Set<String> leftFiles, Set<String> rightFiles) throws IOException { Iterator<String> itLeft = leftFiles.iterator(); Iterator<String> itRight = rightFiles.iterator(); while (itLeft.hasNext()) { if (hasDiff(itLeft.next(), itRight.next())) { return true; } } return false; } private static boolean hasDiff(String leftFile, String rightFile) throws IOException { List<String> leftLines = FileUtils.getLines(leftFile); List<String> righLines = FileUtils.getLines(rightFile); if (!leftLines.containsAll(righLines) || !righLines.containsAll(leftLines)) { return false; } Patch patch = DiffUtils.diff(leftLines, righLines); List<Delta> deltas = patch.getDeltas(); return deltas != null ? !deltas.isEmpty() : false; } }