private void checkQualityGateStatusChange(
      Component project, Metric metric, QualityGateStatus rawStatus) {
    Optional<Measure> baseMeasure = measureRepository.getBaseMeasure(project, metric);
    if (!baseMeasure.isPresent()) {
      checkNewQualityGate(project, rawStatus);
      return;
    }

    if (!baseMeasure.get().hasQualityGateStatus()) {
      LOGGER.warn(
          String.format(
              "Previous alterStatus for project %s is not a supported value. Can not compute Quality Gate event",
              project.getKey()));
      checkNewQualityGate(project, rawStatus);
      return;
    }
    QualityGateStatus baseStatus = baseMeasure.get().getQualityGateStatus();

    if (baseStatus.getStatus() != rawStatus.getStatus()) {
      // The QualityGate status has changed
      String label =
          String.format(
              "%s (was %s)",
              rawStatus.getStatus().getColorName(), baseStatus.getStatus().getColorName());
      createEvent(project, label, rawStatus.getText());
      boolean isNewKo = rawStatus.getStatus() == Measure.Level.OK;
      notifyUsers(project, label, rawStatus, isNewKo);
    }
  }
 @Override
 public void visitFile(Component file, Path<LastCommit> path) {
   // load SCM blame information from report. It can be absent when the file was not touched
   // since previous analysis (optimization to decrease execution of blame commands). In this case
   // the date is loaded from database, as it did not change from previous analysis.
   BatchReport.Changesets changesets =
       reportReader.readChangesets(file.getReportAttributes().getRef());
   if (changesets == null) {
     Optional<Measure> baseMeasure = measureRepository.getBaseMeasure(file, lastCommitDateMetric);
     if (baseMeasure.isPresent()) {
       path.current().addDate(baseMeasure.get().getLongValue());
     }
   } else {
     for (BatchReport.Changesets.Changeset changeset : changesets.getChangesetList()) {
       if (changeset.hasDate()) {
         path.current().addDate(changeset.getDate());
       }
     }
   }
   saveAndAggregate(file, path);
 }