public static List validate()

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