private Collection validateCompositeKey()

in src/main/java/com/google/gcs/sdrs/controller/RetentionRulesController.java [225:272]


  private Collection<ValidationResult> validateCompositeKey(
      String retentionRuleType, String projectId, String dataStorageName) {
    Collection<ValidationResult> partialValidations = new HashSet<>();
    boolean validateDataStorageName = false;
    if (retentionRuleType == null) {
      partialValidations.add(
          ValidationResult.fromString(
              String.format(
                  "type, one of [%s, %s, %s],  must be provided.",
                  RetentionRuleType.GLOBAL.toString(),
                  RetentionRuleType.DATASET.toString(),
                  RetentionRuleType.DEFAULT.toString())));
    } else {
      switch (retentionRuleType.toUpperCase()) {
        case ValidationConstants.GLOBAL_JSON_VALUE:
          break;
        case ValidationConstants.DATASET_JSON_VALUE:
          validateDataStorageName = true;
          break;
        case ValidationConstants.DEFAULT_JSON_VALUE:
          validateDataStorageName = true;
          break;
        default:
          partialValidations.add(
              ValidationResult.fromString(
                  String.format(
                      "type, one of [%s, %s, %s],  must be provided.",
                      RetentionRuleType.GLOBAL.toString(),
                      RetentionRuleType.DATASET.toString(),
                      RetentionRuleType.DEFAULT.toString())));
      }

      if (validateDataStorageName) {
        partialValidations.add(
            FieldValidations.validateFieldFollowsBucketNamingStructure(
                "dataStorageName", dataStorageName));

        if (projectId == null) {
          partialValidations.add(
              ValidationResult.fromString(
                  String.format(
                      "projectId must be provided if type is %s or %s",
                      RetentionRuleType.DATASET.toString(), RetentionRuleType.DEFAULT.toString())));
        }
      }
    }
    return partialValidations;
  }