// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.datashare.inputs;

import com.pulumi.azure.datashare.inputs.DatasetBlobStorageStorageAccountArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class DatasetBlobStorageState extends com.pulumi.resources.ResourceArgs {

    public static final DatasetBlobStorageState Empty = new DatasetBlobStorageState();

    /**
     * The name of the storage account container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    @Import(name="containerName")
    private @Nullable Output<String> containerName;

    /**
     * @return The name of the storage account container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    public Optional<Output<String>> containerName() {
        return Optional.ofNullable(this.containerName);
    }

    /**
     * The ID of the Data Share in which this Data Share Blob Storage Dataset should be created. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    @Import(name="dataShareId")
    private @Nullable Output<String> dataShareId;

    /**
     * @return The ID of the Data Share in which this Data Share Blob Storage Dataset should be created. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    public Optional<Output<String>> dataShareId() {
        return Optional.ofNullable(this.dataShareId);
    }

    /**
     * The name of the Data Share Dataset.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output<String> displayName;

    /**
     * @return The name of the Data Share Dataset.
     * 
     */
    public Optional<Output<String>> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * The path of the file in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    @Import(name="filePath")
    private @Nullable Output<String> filePath;

    /**
     * @return The path of the file in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    public Optional<Output<String>> filePath() {
        return Optional.ofNullable(this.filePath);
    }

    /**
     * The path of the folder in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    @Import(name="folderPath")
    private @Nullable Output<String> folderPath;

    /**
     * @return The path of the folder in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    public Optional<Output<String>> folderPath() {
        return Optional.ofNullable(this.folderPath);
    }

    /**
     * The name which should be used for this Data Share Blob Storage Dataset. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return The name which should be used for this Data Share Blob Storage Dataset. Changing this forces a new Data Share Blob Storage Dataset to be created.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * A `storage_account` block as defined below. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="storageAccount")
    private @Nullable Output<DatasetBlobStorageStorageAccountArgs> storageAccount;

    /**
     * @return A `storage_account` block as defined below. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<DatasetBlobStorageStorageAccountArgs>> storageAccount() {
        return Optional.ofNullable(this.storageAccount);
    }

    private DatasetBlobStorageState() {}

    private DatasetBlobStorageState(DatasetBlobStorageState $) {
        this.containerName = $.containerName;
        this.dataShareId = $.dataShareId;
        this.displayName = $.displayName;
        this.filePath = $.filePath;
        this.folderPath = $.folderPath;
        this.name = $.name;
        this.storageAccount = $.storageAccount;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(DatasetBlobStorageState defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private DatasetBlobStorageState $;

        public Builder() {
            $ = new DatasetBlobStorageState();
        }

        public Builder(DatasetBlobStorageState defaults) {
            $ = new DatasetBlobStorageState(Objects.requireNonNull(defaults));
        }

        /**
         * @param containerName The name of the storage account container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder containerName(@Nullable Output<String> containerName) {
            $.containerName = containerName;
            return this;
        }

        /**
         * @param containerName The name of the storage account container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder containerName(String containerName) {
            return containerName(Output.of(containerName));
        }

        /**
         * @param dataShareId The ID of the Data Share in which this Data Share Blob Storage Dataset should be created. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder dataShareId(@Nullable Output<String> dataShareId) {
            $.dataShareId = dataShareId;
            return this;
        }

        /**
         * @param dataShareId The ID of the Data Share in which this Data Share Blob Storage Dataset should be created. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder dataShareId(String dataShareId) {
            return dataShareId(Output.of(dataShareId));
        }

        /**
         * @param displayName The name of the Data Share Dataset.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output<String> displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName The name of the Data Share Dataset.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @param filePath The path of the file in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder filePath(@Nullable Output<String> filePath) {
            $.filePath = filePath;
            return this;
        }

        /**
         * @param filePath The path of the file in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder filePath(String filePath) {
            return filePath(Output.of(filePath));
        }

        /**
         * @param folderPath The path of the folder in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder folderPath(@Nullable Output<String> folderPath) {
            $.folderPath = folderPath;
            return this;
        }

        /**
         * @param folderPath The path of the folder in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder folderPath(String folderPath) {
            return folderPath(Output.of(folderPath));
        }

        /**
         * @param name The name which should be used for this Data Share Blob Storage Dataset. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name which should be used for this Data Share Blob Storage Dataset. Changing this forces a new Data Share Blob Storage Dataset to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param storageAccount A `storage_account` block as defined below. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder storageAccount(@Nullable Output<DatasetBlobStorageStorageAccountArgs> storageAccount) {
            $.storageAccount = storageAccount;
            return this;
        }

        /**
         * @param storageAccount A `storage_account` block as defined below. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder storageAccount(DatasetBlobStorageStorageAccountArgs storageAccount) {
            return storageAccount(Output.of(storageAccount));
        }

        public DatasetBlobStorageState build() {
            return $;
        }
    }

}
