63 lines
1.6 KiB
Java
63 lines
1.6 KiB
Java
/**
|
|
* 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!! *****************");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|