in services/library/src/main/java/com/google/cloud/pso/bq_snapshot_manager/entities/backup_policy/BackupPolicy.java [75:140]
public static List<BackupPolicyFields> validate(BackupPolicyBuilder builder) {
// validate that all required fields are provided depending on the backup method
List<BackupPolicyFields> missingRequired = new ArrayList<>();
List<BackupPolicyFields> missingOptional = new ArrayList<>();
if (builder.cron == null) {
missingRequired.add(BackupPolicyFields.backup_cron);
}
if (builder.method == null) {
missingRequired.add(BackupPolicyFields.backup_method);
}
if (builder.timeTravelOffsetDays == null) {
missingRequired.add(BackupPolicyFields.backup_time_travel_offset_days);
}
if (builder.configSource == null) {
missingRequired.add(BackupPolicyFields.config_source);
}
if (builder.backupStorageProject == null) {
missingRequired.add(BackupPolicyFields.backup_storage_project);
}
// if required params are missing return and don't continue with other checks
if (!missingRequired.isEmpty()) {
return missingRequired;
}
if (builder.method.equals(BackupMethod.BIGQUERY_SNAPSHOT) || builder.method.equals(BackupMethod.BOTH)) {
if (builder.bigQuerySnapshotStorageDataset == null) {
missingOptional.add(BackupPolicyFields.bq_snapshot_storage_dataset);
}
if (builder.bigQuerySnapshotExpirationDays == null) {
missingOptional.add(BackupPolicyFields.bq_snapshot_expiration_days);
}
}
// check for GCS params
if (builder.method.equals(BackupMethod.GCS_SNAPSHOT) || builder.method.equals(BackupMethod.BOTH)) {
String format = builder.gcsExportFormat == null ? null : GCSSnapshotFormat
.getFormatAndCompression(builder.gcsExportFormat).x();
if (builder.gcsExportFormat == null) {
missingOptional.add(BackupPolicyFields.gcs_snapshot_format);
}
if (builder.gcsSnapshotStorageLocation == null) {
missingOptional.add(BackupPolicyFields.gcs_snapshot_storage_location);
}
// check required fields for CSV exports
if (format != null && format.equals("CSV")) {
if (builder.gcsCsvDelimiter == null) {
missingOptional.add(BackupPolicyFields.gcs_csv_delimiter);
}
if (builder.gcsCsvExportHeader == null) {
missingOptional.add(BackupPolicyFields.gcs_csv_export_header);
}
}
// check for required fields for avro export
if (format != null && format.equals("AVRO")) {
if (builder.gcsUseAvroLogicalTypes == null) {
missingOptional.add(BackupPolicyFields.gcs_avro_use_logical_types);
}
}
}
return missingOptional;
}