public FileDatesDto getDates()

in ddm-rrm-git-integration/src/main/java/com/epam/digital/data/platform/management/gitintegration/service/JGitServiceImpl.java [235:274]


  public FileDatesDto getDates(@NonNull String repositoryName, @NonNull String filePath) {
    var normalizedFilePath = FilenameUtils.normalize(filePath);
    var cachedDates = datesCacheService.getDates(repositoryName, normalizedFilePath);
    if (Objects.nonNull(cachedDates)) {
      return cachedDates;
    }

    log.debug("Retrieving git commit dates in repository {} for path {}", repositoryName,
        normalizedFilePath);
    var repositoryDirectory = getExistedRepository(repositoryName);

    log.trace("Synchronizing repo {}", repositoryName);
    var lock = getLock(repositoryName);
    lock.lock();
    try (var git = openRepo(repositoryDirectory)) {
      log.trace("Retrieving commit stack for file {}", normalizedFilePath);
      var revCommitList = getRevCommitList(normalizedFilePath, git);

      if (revCommitList.isEmpty()) {
        log.debug(
            "Git commit dates in repository {} for path {} wasn't found", repositoryName,
            normalizedFilePath);
        return null;
      }

      log.trace("Retrieving updated date-time as first element in stack and created as last");
      var updatedTime = getCommitDateTime(revCommitList.get(0));
      var createdTime = getCommitDateTime(revCommitList.get(revCommitList.size() - 1));

      log.debug(
          "Git commit dates in repository {} for path {} retrieved", repositoryName,
          normalizedFilePath);
      var dates = FileDatesDto.builder().create(createdTime).update(updatedTime).build();
      datesCacheService.setDatesToCache(repositoryName, normalizedFilePath, dates);
      return dates;
    } finally {
      lock.unlock();
      log.trace("Repo {} lock released", repositoryName);
    }
  }