package com.sleepycat.je.util; import java.io.File; import com.sleepycat.je.dbi.EnvironmentImpl; import com.sleepycat.je.utilint.CmdUtil; import de.ovgu.cide.jakutil.*; /** * DbRecover is a utility that allows the user to resume use of the environment * from a given time point. Not for general use yet! */ public class DbRecover { public static void main( String[] argv){ try { int whichArg=0; boolean seenFile=false; boolean seenOffset=false; long truncateFileNum=-1; long truncateOffset=-1; File envHome=new File("."); while (whichArg < argv.length) { String nextArg=argv[whichArg]; if (nextArg.equals("-h")) { whichArg++; envHome=new File(CmdUtil.getArg(argv,whichArg)); } else if (nextArg.equals("-f")) { whichArg++; truncateFileNum=CmdUtil.readLongNumber(CmdUtil.getArg(argv,whichArg)); seenFile=true; } else if (nextArg.equals("-o")) { whichArg++; truncateOffset=CmdUtil.readLongNumber(CmdUtil.getArg(argv,whichArg)); seenOffset=true; } else { throw new IllegalArgumentException(nextArg + " is not a supported option."); } whichArg++; } if ((!seenFile) || (!seenOffset)) { usage(); System.exit(1); } EnvironmentImpl env=CmdUtil.makeUtilityEnvironment(envHome,false); env.getFileManager().truncateLog(truncateFileNum,truncateOffset); env.close(); } catch ( Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); usage(); System.exit(1); } } private static void usage(){ System.out.println("Usage: " + CmdUtil.getJavaCommand(DbRecover.class)); System.out.println(" -h <environment home>"); System.out.println("(optional)"); System.out.println(" -f <file number, in hex>"); System.out.println(" -o <offset, in hex>"); System.out.println("Log file is truncated at position starting at" + " and inclusive of the offset. Beware, not " + " for general purpose use yet!"); } }