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

package com.azure.analytics.purview.sharing.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.annotation.JsonFlatten;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
 * Blob Sink.
 */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "storeKind")
@JsonTypeName("BlobAccount")
@JsonFlatten
@Fluent
public class BlobAccountSink extends Sink {
    /*
     * Blob Container Name
     */
    @JsonProperty(value = "properties.containerName", required = true)
    private String containerName;

    /*
     * Blob Folder
     */
    @JsonProperty(value = "properties.folder", required = true)
    private String folder;

    /*
     * Blob Location
     */
    @JsonProperty(value = "properties.location", access = JsonProperty.Access.WRITE_ONLY)
    private String location;

    /*
     * Blob Mount Path
     */
    @JsonProperty(value = "properties.mountPath")
    private String mountPath;

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

    /**
     * Get the containerName property: Blob Container Name.
     * 
     * @return the containerName value.
     */
    public String getContainerName() {
        return this.containerName;
    }

    /**
     * Set the containerName property: Blob Container Name.
     * 
     * @param containerName the containerName value to set.
     * @return the BlobAccountSink object itself.
     */
    public BlobAccountSink setContainerName(String containerName) {
        this.containerName = containerName;
        return this;
    }

    /**
     * Get the folder property: Blob Folder.
     * 
     * @return the folder value.
     */
    public String getFolder() {
        return this.folder;
    }

    /**
     * Set the folder property: Blob Folder.
     * 
     * @param folder the folder value to set.
     * @return the BlobAccountSink object itself.
     */
    public BlobAccountSink setFolder(String folder) {
        this.folder = folder;
        return this;
    }

    /**
     * Get the location property: Blob Location.
     * 
     * @return the location value.
     */
    public String getLocation() {
        return this.location;
    }

    /**
     * Get the mountPath property: Blob Mount Path.
     * 
     * @return the mountPath value.
     */
    public String getMountPath() {
        return this.mountPath;
    }

    /**
     * Set the mountPath property: Blob Mount Path.
     * 
     * @param mountPath the mountPath value to set.
     * @return the BlobAccountSink object itself.
     */
    public BlobAccountSink setMountPath(String mountPath) {
        this.mountPath = mountPath;
        return this;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public BlobAccountSink setStoreReference(StoreReference storeReference) {
        super.setStoreReference(storeReference);
        return this;
    }
}
