private Collection validateUserCommandedExecutionEvent()

in src/main/java/com/google/gcs/sdrs/controller/EventsController.java [166:219]


  private Collection<ValidationResult> validateUserCommandedExecutionEvent(
      String target, String projectId) {
    Collection<ValidationResult> validations = new HashSet<>();

    ValidationResult validateTargetNameResult =
        FieldValidations.validateFieldFollowsBucketNamingStructure("target", target);
    validations.add(validateTargetNameResult);

    if (validateTargetNameResult.isValid) {
      if (!RetentionUtil.isValidDeleteMarker(target)) {
        validations.add(
            ValidationResult.fromString(
                String.format(
                    "The target %s does not have a valid delete marker. The delete marker needs to match the pattern %s",
                    target, RetentionUtil.DM_REGEX_PATTERN)));
      } else {
        String datasetPath = RetentionUtil.getDmDatasetPath(target);
        if (datasetPath == null) {
          validations.add(
              ValidationResult.fromString(
                  String.format(
                      "The target %s is intended to delete a bucket. Can not delete a bucket",
                      target)));
        } else {
          String bucketName = RetentionUtil.getBucketName(target);
          if (!GcsHelper.getInstance().doesBucketExist(bucketName, projectId)) {
            validations.add(
                ValidationResult.fromString(
                    String.format("The bucket %s/%s does not exist", projectId, bucketName)));
          } else {
            String dataStorageName =
                ValidationConstants.STORAGE_PREFIX
                    + bucketName
                    + ValidationConstants.STORAGE_SEPARATOR
                    + datasetPath;
            List<DmRequest> dmRequests =
                SingletonDao.getDmQueueDao().getPendingDmRequestByName(dataStorageName, projectId);
            if (dmRequests != null && !dmRequests.isEmpty()) {
              validations.add(
                  ValidationResult.fromString(
                      String.format(
                          "The target %s for project %s already exist.", target, projectId)));
            }
          }
        }
      }
    }

    if (projectId == null) {
      validations.add(ValidationResult.fromString("projectId must be provided if type is USER"));
    }

    return validations;
  }