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;
}