public InputReader()

in tools/query_breakdown/src/main/java/com/google/bigquery/InputReader.java [28:91]


  public InputReader(String filename) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(filename));
    StringBuilder sb = new StringBuilder();
    queries = new ArrayList<>();
    locationTrackers = new ArrayList<>();
    LocationTracker locationTracker = new LocationTracker();
    docLength = 0;

    // local state for input reading
    int current = reader.read();

    // absolute position in the original document
    int line = 1;
    int column = 1;

    // local position within the query
    int localLine = 1;

    // for the first line
    if (current != -1) {
      locationTracker.addLine();
    }

    // loop for input reading
    while (current != -1) {
      docLength++;
      sb.append((char) current);

      // break down query using semicolon
      if ((char) current == ';') {
        queries.add(sb.substring(0, sb.length() - 1));
        sb = new StringBuilder();
        locationTrackers.add(locationTracker);
        locationTracker = new LocationTracker();
        locationTracker.addLine();
        column++;
        localLine = 1;
      }

      // line changes
      else if ((char) current == '\n') {
        locationTracker.add(localLine, line, column);
        column = 1;
        line++;
        localLine++;
        locationTracker.addLine();
      }
      else {
        locationTracker.add(localLine, line, column);
        column++;
      }

      // advance current pointer
      current = reader.read();
    }

    // deals with case where a single query or the last query don't have semicolons
    if (sb.length() != 0) {
      queries.add(sb.toString());
      locationTrackers.add(locationTracker);
    }

    reader.close();
  }