public void collect()

in agent/src/jetbrains/buildServer/swabra/snapshots/FilesCollector.java [57:104]


  public void collect(@NotNull File snapshot,
                      @NotNull File dir,
                      @Nullable CollectionResultHandler handler) {
    if (!snapshot.exists() || (snapshot.length() == 0)) {
      logUnableCollect(snapshot, dir, "file doesn't exist", null);
      if (handler != null) handler.error();
      return;
    }

    final List<String> rules = mySettings.getRules().getRulesForPath(dir);
    myLogger.message("Scanning directory " + dir + " for newly created, modified and deleted files comparing with snapshot " +
      snapshot.getName() + (rules.size() == 1 ? "" : ", paths to monitor are " + SwabraUtil.getRulesStr(rules, true)), true);

    try {
      iterateAndCollect(snapshot, dir);
    } catch (InterruptedException e) {
      myLogger.warn("Interrupted while scanning " + dir + ". Gracefully finishing...");
      if (handler != null) handler.interrupted();
      return;
    } catch (Exception e) {
      logUnableCollect(snapshot, dir, "Exception occurred: " + e.getMessage(), e);
      if (handler != null) handler.error();
      return;
    }

    final FilesCollectionProcessor.Results results = myProcessor.getResults();

    final int detectedNew = results.detectedNewAndDeleted + results.detectedNewAndUnableToDelete;
    final String message = "Detected " + (results.detectedUnchanged >= 1 ? results.detectedUnchanged - 1 : 0) + " unchanged, " + // -1 not to count dir
      detectedNew + " newly created" +
      (detectedNew > 0 ? " (" + results.detectedNewAndDeleted + " of them deleted), " : ", ") +
      results.detectedModified + " modified, " +
      results.detectedDeleted + " deleted files and directories";

    removeSnapshot(snapshot, dir);
    if (results.detectedNewAndUnableToDelete != 0) {
      myLogger.warn(message);
      if (handler != null) handler.lockedFilesDetected();
      return;
    }
    if (results.detectedDeleted > 0 || results.detectedModified > 0) {
      myLogger.warn(message);
      if (handler != null) handler.dirtyStateDetected();
      return;
    }
    myLogger.message(message, true);
    if (handler != null) handler.success();
  }