private void updateDmRequests()

in src/main/java/com/google/gcs/sdrs/service/worker/impl/ValidationWorker.java [140:185]


  private void updateDmRequests(List<RetentionJobValidation> dmValidationList) {
    if (dmValidationList == null || dmValidationList.isEmpty()) {
      return;
    }
    Map<Integer, RetentionJobStatusType> finalValidationMap = new HashMap<>();

    dmValidationList.stream()
        .forEach(
            validation ->
                finalValidationMap.put(validation.getRetentionJobId(), validation.getStatus()));

    List<DmRequest> dmRequests =
        dmQueueDao.getByStatus(DatabaseConstants.DM_REQUEST_STATUS_SCHEDULED);

    final Map<String, Integer> countMap = new HashMap<>();
    String keySuccess = "success";
    String keyError = "error";
    countMap.put(keySuccess, 0);
    countMap.put(keyError, 0);
    dmRequests.forEach(
        request -> {
          RetentionJobStatusType jobStatus = finalValidationMap.get(request.getRetentionJobId());
          if (jobStatus != null) {
            switch (jobStatus) {
              case SUCCESS:
                countMap.put(keySuccess, countMap.get(keySuccess) + 1);
                request.setStatus(DatabaseConstants.DM_REQUEST_STATUS_SUCCESS);
                break;
              case ERROR:
                countMap.put(keyError, countMap.get(keyError) + 1);
                if (request.getNumberOfRetry() < DmBatchProcessingWorker.DM_MAX_RETRY) {
                  request.setStatus(DatabaseConstants.DM_REQUEST_STATIUS_RETRY);
                } else {
                  request.setStatus(DatabaseConstants.DM_REQUEST_STATUS_FAIL);
                }
                break;
              default:
            }
          }
        });
    dmQueueDao.saveOrUpdateBatch(dmRequests);
    logger.info(
        String.format(
            "Processed %d DM jobs. DM requests processing status: success=%d; fail=%d",
            dmValidationList.size(), countMap.get(keySuccess), countMap.get(keyError)));
  }