// path functions... public boolean childOf(Command c1, Command c2) { if (c1.getPath().startsWith(c2.getPath())) { return true; } else { return false; } }
// and uniquePath(c2,c1) public String uniquePath(Command c1, Command c2) { long maxTicket = java.lang.Math.max(c1.getTicket(), c2.getTicket()); return new String(c1.getPath() + "#" + maxTicket); }
public static void main(String[] args) throws Exception { File dir = FileUtils.createTmpDir(); File opVectorDir = FileUtils.createTmpDir(); File attachDir = FileUtils.createTmpDir(); OpVectorFsImpl opVector = new OpVectorFsImpl(opVectorDir.getAbsolutePath()); File execDir = FileUtils.createTmpDir(); File execCompDir = FileUtils.createTmpDir(); DBType dbType = new DBType(dir.getAbsolutePath() + "/dbType.txt", ""); WsConnection wsc = new WsConnection("c:/replicaTest/original/.so6/1/so6.properties"); File[] patchList = wsc.getAppliedPatch().list(); int index = 1; for (int i = 0; i < patchList.length; i++) { PatchFile pf = new PatchFile(patchList[i].getAbsolutePath()); pf.buildOpVector(opVector, attachDir.getAbsolutePath(), null); } // print history Command cmd = null; FileWriter fw1 = new FileWriter("c:/originalHist.txt"); for (ListIterator i = opVector.getCommands(); i.hasNext(); ) { cmd = (Command) i.next(); System.out.println(index); if (!(cmd instanceof NeutralCommand)) { cmd.execute(execDir.getAbsolutePath(), dbType); fw1.write( index++ + "\t" + cmd.getClass().getName().substring(cmd.getClass().getName().lastIndexOf(".") + 1) + "\t" + cmd.getPath() + "\t" + cmd.getAttachement() + "\n"); } } fw1.close(); // compression CompressUtil.compressLog(opVector); // print new history FileWriter fw2 = new FileWriter("c:/compressedHist.txt"); index = 1; for (ListIterator i = opVector.getCommands(); i.hasNext(); ) { cmd = (Command) i.next(); if (!(cmd instanceof NeutralCommand)) { System.out.println(index); cmd.execute(execCompDir.getAbsolutePath(), dbType); fw2.write( index++ + "\t" + cmd.getClass().getName().substring(cmd.getClass().getName().lastIndexOf(".") + 1) + "\t" + cmd.getPath() + "\t" + cmd.getAttachement() + "\n"); } } fw2.close(); System.out.println("Exec dir: " + execDir); System.out.println("Exec compression dir: " + execCompDir); System.out.println( "Compare: " + FileUtils.compareDir(execDir.getAbsolutePath(), execCompDir.getAbsolutePath())); }