/// <exception cref="System.IO.IOException"/>
 internal static OfflineEditsLoader CreateLoader(OfflineEditsVisitor visitor, string
                                                 inputFileName, bool xmlInput, OfflineEditsViewer.Flags flags)
 {
     if (xmlInput)
     {
         return(new OfflineEditsXmlLoader(visitor, new FilePath(inputFileName), flags));
     }
     else
     {
         FilePath           file   = null;
         EditLogInputStream elis   = null;
         OfflineEditsLoader loader = null;
         try
         {
             file = new FilePath(inputFileName);
             elis = new EditLogFileInputStream(file, HdfsConstants.InvalidTxid, HdfsConstants.
                                               InvalidTxid, false);
             loader = new OfflineEditsBinaryLoader(visitor, elis, flags);
         }
         finally
         {
             if ((loader == null) && (elis != null))
             {
                 elis.Close();
             }
         }
         return(loader);
     }
 }
 /// <summary>Process an edit log using the chosen processor or visitor.</summary>
 /// <param name="inputFilename">The file to process</param>
 /// <param name="outputFilename">The output file name</param>
 /// <param name="processor">If visitor is null, the processor to use</param>
 /// <param name="visitor">If non-null, the visitor to use.</param>
 /// <returns>0 on success; error code otherwise</returns>
 public virtual int Go(string inputFileName, string outputFileName, string processor
                       , OfflineEditsViewer.Flags flags, OfflineEditsVisitor visitor)
 {
     if (flags.GetPrintToScreen())
     {
         System.Console.Out.WriteLine("input  [" + inputFileName + "]");
         System.Console.Out.WriteLine("output [" + outputFileName + "]");
     }
     try
     {
         if (visitor == null)
         {
             visitor = OfflineEditsVisitorFactory.GetEditsVisitor(outputFileName, processor, flags
                                                                  .GetPrintToScreen());
         }
         bool xmlInput             = inputFileName.EndsWith(".xml");
         OfflineEditsLoader loader = OfflineEditsLoader.OfflineEditsLoaderFactory.CreateLoader
                                         (visitor, inputFileName, xmlInput, flags);
         loader.LoadEdits();
     }
     catch (Exception e)
     {
         System.Console.Error.WriteLine("Encountered exception. Exiting: " + e.Message);
         Sharpen.Runtime.PrintStackTrace(e, System.Console.Error);
         return(-1);
     }
     return(0);
 }
 /// <exception cref="System.IO.FileNotFoundException"/>
 public OfflineEditsXmlLoader(OfflineEditsVisitor visitor, FilePath inputFile, OfflineEditsViewer.Flags
                              flags)
 {
     this.visitor    = visitor;
     this.fileReader = new InputStreamReader(new FileInputStream(inputFile), Charsets.
                                             Utf8);
     this.fixTxIds = flags.GetFixTxIds();
 }
 /// <summary>Constructor</summary>
 public OfflineEditsBinaryLoader(OfflineEditsVisitor visitor, EditLogInputStream inputStream
                                 , OfflineEditsViewer.Flags flags)
 {
     this.visitor      = visitor;
     this.inputStream  = inputStream;
     this.fixTxIds     = flags.GetFixTxIds();
     this.recoveryMode = flags.GetRecoveryMode();
     this.nextTxId     = -1;
 }