ImportScrubber.java :  » Code-Analyzer » importscrubber » net » sourceforge » importscrubber » Java Open Source

Java Open Source » Code Analyzer » importscrubber 
importscrubber » net » sourceforge » importscrubber » ImportScrubber.java
package net.sourceforge.importscrubber;

import java.io.File;
import java.io.IOException;
import java.util.*;

/**
 * This class encapsulates the import scrubber controller
 */
public class ImportScrubber
{
    public static final String START_DIRECTORY_KEY = "importscrubber.startDir";
    public static final String CLASS_DIRECTORY_KEY = "importscrubber.classDir";
    public static final String RECURSE = "importscrubber.recurse";
    public static final String SORT_STD_HIGH = "importscrubber.sortStdHigh";
    public static final String SYNC_CLASS_TO_SOURCE = "importscrubber.syncClassToSource";
    public static final String THRESHOLD = "importscrubber.threshold";
    public static final String THRESHOLD_STD_ONLY = "importscrubber.thresholdStdOnly";
    public static final String BREAK_STYLE = "importscrubber.breakStyle";

    public static final String FILE_SEPARATOR = System.getProperty("file.separator");
    public static final String LINE_SEPARATOR = System.getProperty("line.separator");
    public static boolean DEBUG = false;
    private FileChooser _fileChooser;
    private List _tasks = new ArrayList();
    private StatementFormat _format;
  private String _encoding;

  public ImportScrubber(String encoding)
  {
    _encoding = encoding;
  }

    public void setFileRoot(String fileName, String classRoot, boolean recurse) throws IOException
    {
        _fileChooser = new FileChooser(fileName, classRoot, recurse);
    }

    public static String getDirectory(String fileName)
    {
        File f = new File(fileName);
        if (f.isDirectory()) {
            return fileName;
        } else {
            return f.getParent();
        }
    }

    public void setFormat(StatementFormat format)
    {
        _format = format;
    }

    public void debugOff()
    {
        DEBUG = false;
    }

    public void debug()
    {
        DEBUG = true;
    }

    public int getTaskCount()
    {
        return _tasks.size();
    }

    public Iterator getFilesIterator()
    {
        return _fileChooser;
    }

    // Returns number of files to work on, allows getFiles to be called just once.
    public int buildTasks(Iterator iter) throws IOException
    {
        while (iter.hasNext()) {
            FilePair pair = (FilePair)iter.next();
            _tasks.add(new ScrubTask(pair, _format, _encoding));
        }

        return _tasks.size();
    }

    public void runTasks(IProgressMonitor monitor) throws IOException
    {
        for (ListIterator iter = _tasks.listIterator(); iter.hasNext();) {
            ScrubTask task = (ScrubTask)iter.next();
            monitor.taskStarted(task);
            task.run();
            monitor.taskComplete(task);
        }
        _tasks.clear();
    }

    public static void main(String[] args)
    {
        if (argExists("g",args)) {
            new ImportScrubberGUI();
            return;
        }

    String encoding = null;
    if (argExists("encoding", args)) {
      encoding = findArg("encoding", args);
    } else {
      encoding = System.getProperty("file.encoding");
    }

        if (!argExists("root", args)) {
            usage();
            System.exit(0);
        }
        String root = findArg("root",args);
        if (!(new File(root).exists())) {
            System.out.println("Root: " + root + " does not exist");
            usage();
            System.exit(0);
        }
        boolean recurse = argExists("recurse", args);

        StatementFormat format = StatementFormat.getFormat(args);

        try {
            ImportScrubber scrubber = new ImportScrubber(encoding);

            if(argExists("classRoot", args) ) {
                String classesRootStr= findArg( "classRoot", args );
                scrubber.setFileRoot(root, classesRootStr, recurse);
            }  else {
                scrubber.setFileRoot(root, getDirectory(root), recurse);
            }

            scrubber.setFormat(format);
            System.out.println("Building tasks");
            scrubber.buildTasks(scrubber.getFilesIterator());
            scrubber.runTasks(new ConsoleProgressMonitor());
            System.out.println(LINE_SEPARATOR + "All done!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean argExists(String argFlag, String[] args)
    {
        for (int i=0; i<args.length; i++) {
            if (args[i].equalsIgnoreCase("-"+argFlag)) {
                return true;
            }
        }
        return false;
    }

    public static String findArg(String argFlag, String[] args)
    {
        for (int i=0; i<args.length; i++) {
            if (args[i].equalsIgnoreCase("-"+argFlag)) {
                return args[i+1];
            }
        }
        throw new IllegalArgumentException("Couldn't find " + argFlag);
    }

    private static void usage()
    {
        System.out.println("Usage: java net.sourceforge.importscrubber.ImportScrubber\n"
                           + "-g\n"
                           + "| -root <dir|file> [-classroot <dir>] [-recurse] [-encoding charsetname] [formatargs]\n"
                           + "formatargs:\n"
                           + StatementFormat.getUsage());
        System.out.println("Ex: java net.sourceforge.importscrubber.ImportScrubber -root /home/me/myproject/src -recurse");
        System.out.println("\nOR, TO USE THE GUI:\n");
        System.out.println("Ex: java net.sourceforge.importscrubber.ImportScrubber -g");
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.