/** * Manage rd5 diff-file creation * * @author ab */ package btools.mapaccess; import java.io.File; final public class Rd5DiffValidator { public static void main(String[] args) throws Exception { validateDiffs(new File(args[0]), new File(args[1])); } /** * Validate diffs for all DF5 files */ public static void validateDiffs(File oldDir, File newDir) throws Exception { File oldDiffDir = new File(oldDir, "diff"); File newDiffDir = new File(newDir, "diff"); File[] filesNew = newDir.listFiles(); for (File fn : filesNew) { String name = fn.getName(); if (!name.endsWith(".rd5")) { continue; } if (fn.length() < 1024 * 1024) { continue; // expecting no diff for small files } String basename = name.substring(0, name.length() - 4); File fo = new File(oldDir, name); if (!fo.isFile()) { continue; } // calculate MD5 of old file String md5 = Rd5DiffManager.getMD5(fo); String md5New = Rd5DiffManager.getMD5(fn); System.out.println("name=" + name + " md5=" + md5); File specificNewDiffs = new File(newDiffDir, basename); String diffFileName = md5 + ".df5"; File diffFile = new File(specificNewDiffs, diffFileName); File fcmp = new File(oldDir, name + "_tmp"); // merge old file and diff Rd5DiffTool.recoverFromDelta(fo, diffFile, fcmp, new Rd5DiffTool()); String md5Cmp = Rd5DiffManager.getMD5(fcmp); if (!md5Cmp.equals(md5New)) { throw new RuntimeException("**************** md5 mismatch!! *****************"); } } } }