Package isi.pasco2

Source Code of isi.pasco2.Main

/*
* Copyright 2006 Bradley Schatz. All rights reserved.
*
* This file is part of pasco2, the next generation Internet Explorer cache
* and history record parser.
*
* pasco2 is free software; you can redistribute it and/or modify
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* pasco2 is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with pasco2; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/

package isi.pasco2;

import isi.pasco2.handler.CountingCacheHandler;
import isi.pasco2.handler.Pasco2HistoryHandler;
import isi.pasco2.io.FastReadIndexFile;
import isi.pasco2.io.IndexFile;
import isi.pasco2.parser.IECacheFileParser;
import isi.pasco2.parser.IEHistoryFileParser;
import isi.pasco2.parser.IEIndexFileParser;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;

/**
* Main command line parser for pasco2
*
* @author Bradley Schatz
*
*/
public class Main {
public static void main(String[] args) {
    CommandLineParser parser = new PosixParser();

    Options options = new Options();
    Option undelete = new Option("d", "Undelete activity records");
    options.addOption(undelete);
    Option disableAllocation = new Option("M", "Disable allocation detection");
    options.addOption(disableAllocation);
    Option fieldDelimeter = OptionBuilder.withArgName( "field-delimeter" )
                      .hasArg()
                      .withDescription( "Field Delimeter (TAB by default)" )
                      .create( "t" );
    options.addOption(fieldDelimeter);
   
    Option timeFormat = OptionBuilder.withArgName( "time-format" )
                    .hasArg()
                    .withDescription( "xsd or standard (pasco1 compatible)" )
                    .create( "f" );
    options.addOption(timeFormat);
   
    Option fileTypeOption = OptionBuilder.withArgName( "file-type" )
                    .hasArg()
                    .withDescription( "The type of file: cache or history" )
                    .create( "T" );
   
    options.addOption(fileTypeOption);

   
    try {
        CommandLine line = parser.parse( options, args );
        boolean undeleteMethod = false;
        String delimeter = null;
        String format = null;
        String fileType = null;
        boolean disableAllocationTest = false;
       
        if( line.hasOption( "d" ) ) {
            undeleteMethod = true;
        }
       
        if( line.hasOption( 't' ) ) {
          delimeter = line.getOptionValue( 't' ) ;
        }
       
        if( line.hasOption( 'M' ) ) {
          disableAllocationTest = true ;
        }
       
        if( line.hasOption( 'T' ) ) {
          fileType = line.getOptionValue( 'T' ) ;
        }
       
        if( line.hasOption( 'f' ) ) {
          format = line.getOptionValue( 'f' ) ;
        }
       
        if (line.getArgs().length != 1) {
          System.err.println("No file specified.");
          HelpFormatter formatter = new HelpFormatter();
          formatter.printHelp( "pasco2", options );
          System.exit(1);
        }
        String fileName = line.getArgs()[0];
       
        try {
          IndexFile fr = new FastReadIndexFile(fileName, "r");
          CountingCacheHandler handler = null;
         
          if (fileType == null) {
            handler = new CountingCacheHandler();
          }
          if (fileType == null) {
            handler = new CountingCacheHandler();
          } else if (fileType.equals("cache")) {
            handler = new CountingCacheHandler();
          } else if (fileType.equals("history")) {
            handler = new Pasco2HistoryHandler();
          }
         
          if (format != null) {
            if (format.equals("pasco")) {
              DateFormat regularDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss.SSS");
              handler.setDateFormat(regularDateFormat);
              TimeZone tz = TimeZone.getTimeZone("Australia/Brisbane");
              regularDateFormat.setTimeZone(tz);
             
            } else if (format.equals("standard")) {
              DateFormat xsdDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
              handler.setDateFormat(xsdDateFormat);    
              xsdDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
            } else {
              System.err.println("Format not supported.");
              HelpFormatter formatter = new HelpFormatter();
              formatter.printHelp( "pasco2", options );
              System.exit(1);
            }
          }
         
          if (delimeter != null) {
            handler.setDelimeter(delimeter);
          }
         
          IEIndexFileParser logparser = null;
          if (fileType == null) {
            System.err.println("Using cache file parser.");
            logparser = new IECacheFileParser(fileName, fr, handler);
          } else if (fileType.equals("cache")) {
            logparser = new IECacheFileParser(fileName, fr, handler);
          } else if (fileType.equals("history")) {
            logparser = new IEHistoryFileParser(fileName, fr, handler);
          } else {
            System.err.println("Unsupported file type.");
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp( "pasco2", options );
            System.exit(1);
          }
          if (disableAllocationTest) {
            logparser.setDisableAllocationTest(true);
          }
          logparser.parseFile();
         
        } catch (Exception ex) {
          System.err.println(ex.getMessage());
          ex.printStackTrace();
        }
       
    }
    catch( ParseException exp ) {
        System.out.println( "Unexpected exception:" + exp.getMessage() );
    }
  }
}

TOP

Related Classes of isi.pasco2.Main

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.