public static BackupPolicy fromMap()

in services/library/src/main/java/com/google/cloud/pso/bq_snapshot_manager/entities/backup_policy/BackupPolicy.java [194:282]


    public static BackupPolicy fromMap(Map<String, String> fieldsMap) throws IllegalArgumentException {


        // parse required fields
        String cron = Utils.getOrFail(fieldsMap, BackupPolicyFields.backup_cron.toString());

        BackupMethod method = BackupMethod.fromString(
                Utils.getOrFail(fieldsMap, BackupPolicyFields.backup_method.toString())
        );

        TimeTravelOffsetDays timeTravelOffsetDays = TimeTravelOffsetDays.fromString(
                Utils.getOrFail(fieldsMap, BackupPolicyFields.backup_time_travel_offset_days.toString())
        );

        String backupStorageProject = Utils.getOrFail(fieldsMap, BackupPolicyFields.backup_storage_project.toString());

        // config source is not required in the fallback policies. It defaults to SYSTEM if not present
        String configSourceStr = fieldsMap.getOrDefault(
                BackupPolicyFields.config_source.toString(),
                null);

        BackupConfigSource configSource = configSourceStr == null ? BackupConfigSource.SYSTEM :
                BackupConfigSource.fromString(configSourceStr);

        BackupPolicyBuilder backupPolicyBuilder = new BackupPolicyBuilder(cron, method, timeTravelOffsetDays,
                configSource, backupStorageProject);

        // parse optional fields
        // these fields might not exist in the attached tag template if not filled. Same for fallback policies

        backupPolicyBuilder.setBackupOperationProject(
                fieldsMap.getOrDefault(
                        BackupPolicyFields.backup_operation_project.toString(),
                        null
                )
        );

        backupPolicyBuilder.setBigQuerySnapshotStorageDataset(
                fieldsMap.getOrDefault(
                        BackupPolicyFields.bq_snapshot_storage_dataset.toString(),
                        null)
        );

        String bqSnapshotExpirationDaysStr = fieldsMap.getOrDefault(
                BackupPolicyFields.bq_snapshot_expiration_days.toString(),
                null);
        backupPolicyBuilder.setBigQuerySnapshotExpirationDays(
                bqSnapshotExpirationDaysStr == null ? null : Double.parseDouble(bqSnapshotExpirationDaysStr)
        );

        // parse optional GCS snapshot settings
        backupPolicyBuilder.setGcsSnapshotStorageLocation(
                fieldsMap.getOrDefault(
                        BackupPolicyFields.gcs_snapshot_storage_location.toString(),
                        null)
        );

        String gcsSnapshotFormatStr = fieldsMap.getOrDefault(
                BackupPolicyFields.gcs_snapshot_format.toString(),
                null);
        backupPolicyBuilder.setGcsExportFormat(
                gcsSnapshotFormatStr == null ? null : GCSSnapshotFormat.valueOf(gcsSnapshotFormatStr)
        );

        backupPolicyBuilder.setGcsCsvDelimiter(
                fieldsMap.getOrDefault(
                        BackupPolicyFields.gcs_csv_delimiter.toString(),
                        null)
        );

        // if optional boolean values are not provided, set them to null and not false
        String gcsCsvExportHeaderStr = fieldsMap.getOrDefault(
                BackupPolicyFields.gcs_csv_export_header.toString(),
                null);
        backupPolicyBuilder.setGcsCsvExportHeader(
                gcsCsvExportHeaderStr == null ? null : Boolean.valueOf(gcsCsvExportHeaderStr)
        );

        // if optional boolean values are not provided, set them to null and not false
        String gcsAvroUseLogicalAvroTypeStr = fieldsMap.getOrDefault(
                BackupPolicyFields.gcs_avro_use_logical_types.toString(),
                null);

        backupPolicyBuilder.setGcsUseAvroLogicalTypes(
                gcsAvroUseLogicalAvroTypeStr == null ? null : Boolean.valueOf(gcsAvroUseLogicalAvroTypeStr)
        );

        return backupPolicyBuilder.build();
    }