/** @param args */
  public static void main(String[] args) {
    ArgParser ap = ArgParser.getParser(args);
    Logger logger = Loggers.getDefaultLogger(ap);

    java.sql.Connection conn = SQL.connectMySQL(ap, logger, "farzin");
    String where = ap.get("where");
    String limit = ap.get("limit");

    Map<Integer, UniqueEvent> data = null;

    if (ap.containsKey("collapse")) {
      System.out.println("Collapsing universe data... ");
      data = collapseData(conn, where, limit);
      System.out.println("Done. Read data for " + data.size() + " hashes.");
    }

    if (ap.containsKey("load")) {
      System.out.println("Loading... ");
      data = load(conn, ap.get("load"), where, limit);
      System.out.println("Done. Read data for " + data.size() + " hashes.");
    }

    if (ap.containsKey("store")) {
      System.out.println("Storing... ");
      store(data, conn, ap.get("store"));
      System.out.println("Done. Stored data for " + data.size() + " hashes.");
    }

    if (ap.containsKey("contradictions")) {
      System.out.println("Calculating contradictions...");
      List<Pair<Integer>> contradictions = contradictions(data);
      System.out.println("Done. Detected " + contradictions.size() + " contradictions.");

      if (ap.containsKey("countTypes")) {
        System.out.println("Counting...");
        countTypes(contradictions, data);
      }

      if (ap.containsKey("sentences")) {
        System.out.println("Printing sentences...");
        printContradictorySentences(conn, ap.getInt("sentences"), contradictions, data);
      }

      if (ap.containsKey("dumpContradictions")) {
        System.out.println("Dumping...");
        dumpContradictions(contradictions, data, ap.getFile("dumpContradictions"));
      }
    }

    if (ap.containsKey("contrasts")) {
      //			contrasts(data, conn, ap.getInt("sentences",-1));
    }
  }