public void render(ProgressMonitor monitor) {
    if (monitor == null) return;
    // position the cursor to line 0
    repositionCursor();

    // print header
    // -------------------------------------------------------------------------------
    //         VERTICES     STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
    // -------------------------------------------------------------------------------
    reprintLine(SEPARATOR);
    reprintLineWithColorAsBold(HEADER_FORMAT.formatted(monitor.headers().toArray()),
      Ansi.Color.CYAN);
    reprintLine(SEPARATOR);


    // Map 1 .......... container  SUCCEEDED      7          7        0        0       0       0
    List<String> printReady =
        monitor.rows().stream().map(row -> VERTEX_FORMAT.formatted(row.toArray())).collect(Collectors.toList());
    reprintMultiLine(StringUtils.join(printReady, "\n"));

    // -------------------------------------------------------------------------------
    // VERTICES: 03/04            [=================>>-----] 86%  ELAPSED TIME: 1.71 s
    // -------------------------------------------------------------------------------
    String progressStr = "" + (int) (monitor.progressedPercentage() * 100) + "%";
    float et = (float) (System.currentTimeMillis() - monitor.startTime()) / (float) 1000;
    String elapsedTime = "ELAPSED TIME: " + secondsFormatter.format(et) + " s";
    String footer = 
        FOOTER_FORMAT.formatted(
        monitor.footerSummary(),
        getInPlaceProgressBar(monitor.progressedPercentage()),
        progressStr,
        elapsedTime);

    reprintLine(SEPARATOR);
    reprintLineWithColorAsBold(footer, Ansi.Color.RED);
    reprintLine(SEPARATOR);
  }
NOTE: Use this method only if isUnixTerminal is true.
Repositions the cursor back to line 0.
common/src/java/org/apache/hadoop/hive/common/log/InPlaceUpdate.java