public void traverseCompare()

in agent/src/jetbrains/buildServer/swabra/snapshots/iteration/FilesTraversal.java [44:86]


  public void traverseCompare(@NotNull FilesIterator snapshotIterator,
                              @NotNull FilesIterator currentIterator,
                              @NotNull ComparisonProcessor processor) throws Exception {
    assert !snapshotIterator.isCurrent() && currentIterator.isCurrent();
    try {
      processor.comparisonStarted();

      FileInfo snapshotInfo = snapshotIterator.getNext();
      FileInfo currentInfo = currentIterator.getNext();

      while (snapshotInfo != null && currentInfo != null) {
        final int comparisonResult = FilesComparator.compare(snapshotInfo, currentInfo);
        if (fileAdded(comparisonResult)) {
          processAdded(currentInfo, processor, currentIterator);
          currentInfo = currentIterator.getNext();
        } else if (fileDeleted(comparisonResult)) {
          processDeleted(snapshotInfo, processor, snapshotIterator);
          snapshotInfo = snapshotIterator.getNext();
        } else {
          if (fileModified(snapshotInfo, currentInfo)) {
            processModified(snapshotInfo, currentInfo, processor);
          } else {
            processUnchanged(snapshotInfo, processor);
          }
          snapshotInfo = snapshotIterator.getNext();
          currentInfo = currentIterator.getNext();
        }
      }
      while (snapshotInfo != null) {
        processDeleted(snapshotInfo, processor, snapshotIterator);
        snapshotInfo = snapshotIterator.getNext();
      }
      while (currentInfo != null) {
        processAdded(currentInfo, processor, currentIterator);
        currentInfo = currentIterator.getNext();
      }
      processor.comparisonFinished();
    }
    finally {
      snapshotIterator.stopIterator();
      currentIterator.stopIterator();
    }
  }