/**
   * Identifies.
   *
   * @param reader the catalog reader.
   * @exception IOException if the catalog cannot be accessed.
   * @exception QueryFailException if the query to the server is failed.
   */
  public void identify(CatalogReader reader) throws IOException, QueryFailException {
    // Starts the polling thread.
    PollingThread thread = new PollingThread();
    thread.start();

    try {
      Variability[] records = getSelectedRecords();

      for (int i = 0; i < records.length; i++) {
        CatalogStar star = records[i].getStar();

        StarList l = reader.read(star.getCoor(), 0.1);
        for (int j = 0; j < l.size(); j++) {
          CatalogStar s = (CatalogStar) l.elementAt(j);

          double radius =
              star.getMaximumPositionErrorInArcsec() + s.getMaximumPositionErrorInArcsec();
          double distance = star.getCoor().getAngularDistanceTo(s.getCoor());

          if (distance < radius / 3600.0)
            // Overwrites the already identified star.
            records[i].setIdentifiedStar(s);
        }
      }
    } finally {
      // Ends the polling thread.
      thread.end();
    }
  }
示例#2
0
  public static void main(String[] args) throws Exception {

    try {
      CatalogReader foo = new CatalogReader("Catalog.xml");
      Map<String, TableData> catalog = foo.getCatalog();
      // System.out.println (CatalogReader.printCatalog (res));

      InputStreamReader converter = new InputStreamReader(System.in);
      BufferedReader in = new BufferedReader(converter);

      System.out.format("\nSQL>");
      String soFar = in.readLine() + " ";

      // loop forever, or until someone asks to quit
      while (true) {

        // keep on reading from standard in until we hit a ";"
        while (soFar.indexOf(';') == -1) soFar += (in.readLine() + " ");

        // split the string
        String toParse = soFar.substring(0, soFar.indexOf(';') + 1);
        soFar = soFar.substring(soFar.indexOf(';') + 1, soFar.length());
        toParse = toParse.toLowerCase();

        // parse it
        ANTLRStringStream parserIn = new ANTLRStringStream(toParse);
        SQLLexer lexer = new SQLLexer(parserIn);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        SQLParser parser = new SQLParser(tokens);

        // if we got a quit
        if (parser.parse() == false) break;

        // print the results
        System.out.println("RESULT OF PARSING");
        System.out.println("Expressions in SELECT:");
        ArrayList<Expression> mySelect = parser.getSELECT();
        for (Expression e : mySelect) System.out.println("\t" + e);

        System.out.println("Tables in FROM:");
        Map<String, String> myFrom = parser.getFROM();
        System.out.println("\t" + myFrom);

        System.out.println("WHERE clause:");
        Expression myWhere = parser.getWHERE();
        if (myWhere != null) System.out.println("\t" + myWhere);

        System.out.println("GROUPING att:");
        String myGroup = parser.getGROUPBY();
        if (myGroup != null) System.out.println("\t" + myGroup);

        SemanticChecker sc = new SemanticChecker(mySelect, myFrom, myWhere, myGroup, catalog);
        if (sc.execute() == true)
          new Optimizer(mySelect, myFrom, myWhere, myGroup, catalog).execute();
        else System.err.println("Semantic checking failed");

        System.out.format("\nSQL>");
      }
    } catch (Exception e) {
      System.err.println("Interpreter.main.73: error!");
    }
  }