// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.recoveryservicesbackup.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Details about target workload during restore operation. */
@Fluent
public final class TargetRestoreInfo {
    /*
     * Can Overwrite if Target DataBase already exists
     */
    @JsonProperty(value = "overwriteOption")
    private OverwriteOptions overwriteOption;

    /*
     * Resource Id name of the container in which Target DataBase resides
     */
    @JsonProperty(value = "containerId")
    private String containerId;

    /*
     * Database name InstanceName/DataBaseName for SQL or System/DbName for SAP Hana
     */
    @JsonProperty(value = "databaseName")
    private String databaseName;

    /*
     * Target directory location for restore as files.
     */
    @JsonProperty(value = "targetDirectoryForFileRestore")
    private String targetDirectoryForFileRestore;

    /** Creates an instance of TargetRestoreInfo class. */
    public TargetRestoreInfo() {
    }

    /**
     * Get the overwriteOption property: Can Overwrite if Target DataBase already exists.
     *
     * @return the overwriteOption value.
     */
    public OverwriteOptions overwriteOption() {
        return this.overwriteOption;
    }

    /**
     * Set the overwriteOption property: Can Overwrite if Target DataBase already exists.
     *
     * @param overwriteOption the overwriteOption value to set.
     * @return the TargetRestoreInfo object itself.
     */
    public TargetRestoreInfo withOverwriteOption(OverwriteOptions overwriteOption) {
        this.overwriteOption = overwriteOption;
        return this;
    }

    /**
     * Get the containerId property: Resource Id name of the container in which Target DataBase resides.
     *
     * @return the containerId value.
     */
    public String containerId() {
        return this.containerId;
    }

    /**
     * Set the containerId property: Resource Id name of the container in which Target DataBase resides.
     *
     * @param containerId the containerId value to set.
     * @return the TargetRestoreInfo object itself.
     */
    public TargetRestoreInfo withContainerId(String containerId) {
        this.containerId = containerId;
        return this;
    }

    /**
     * Get the databaseName property: Database name InstanceName/DataBaseName for SQL or System/DbName for SAP Hana.
     *
     * @return the databaseName value.
     */
    public String databaseName() {
        return this.databaseName;
    }

    /**
     * Set the databaseName property: Database name InstanceName/DataBaseName for SQL or System/DbName for SAP Hana.
     *
     * @param databaseName the databaseName value to set.
     * @return the TargetRestoreInfo object itself.
     */
    public TargetRestoreInfo withDatabaseName(String databaseName) {
        this.databaseName = databaseName;
        return this;
    }

    /**
     * Get the targetDirectoryForFileRestore property: Target directory location for restore as files.
     *
     * @return the targetDirectoryForFileRestore value.
     */
    public String targetDirectoryForFileRestore() {
        return this.targetDirectoryForFileRestore;
    }

    /**
     * Set the targetDirectoryForFileRestore property: Target directory location for restore as files.
     *
     * @param targetDirectoryForFileRestore the targetDirectoryForFileRestore value to set.
     * @return the TargetRestoreInfo object itself.
     */
    public TargetRestoreInfo withTargetDirectoryForFileRestore(String targetDirectoryForFileRestore) {
        this.targetDirectoryForFileRestore = targetDirectoryForFileRestore;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
