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

package com.azure.analytics.synapse.artifacts.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;
import java.util.List;

/** Execute data flow activity. */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonTypeName("ExecuteDataFlow")
@JsonFlatten
@Fluent
public class ExecuteDataFlowActivity extends ExecutionActivity {
    /*
     * Data flow reference.
     */
    @JsonProperty(value = "typeProperties.dataflow", required = true)
    private DataFlowReference dataflow;

    /*
     * Staging info for execute data flow activity.
     */
    @JsonProperty(value = "typeProperties.staging")
    private DataFlowStagingInfo staging;

    /*
     * The integration runtime reference.
     */
    @JsonProperty(value = "typeProperties.integrationRuntime")
    private IntegrationRuntimeReference integrationRuntime;

    /*
     * Compute properties for data flow activity.
     */
    @JsonProperty(value = "typeProperties.compute")
    private ExecuteDataFlowActivityTypePropertiesCompute compute;

    /*
     * Trace level setting used for data flow monitoring output. Supported values are: 'coarse', 'fine', and 'none'.
     * Type: string (or Expression with resultType string)
     */
    @JsonProperty(value = "typeProperties.traceLevel")
    private Object traceLevel;

    /*
     * Continue on error setting used for data flow execution. Enables processing to continue if a sink fails. Type:
     * boolean (or Expression with resultType boolean)
     */
    @JsonProperty(value = "typeProperties.continueOnError")
    private Object continueOnError;

    /*
     * Concurrent run setting used for data flow execution. Allows sinks with the same save order to be processed
     * concurrently. Type: boolean (or Expression with resultType boolean)
     */
    @JsonProperty(value = "typeProperties.runConcurrently")
    private Object runConcurrently;

    /*
     * Specify number of parallel staging for sources applicable to the sink. Type: integer (or Expression with
     * resultType integer)
     */
    @JsonProperty(value = "typeProperties.sourceStagingConcurrency")
    private Object sourceStagingConcurrency;

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

    /**
     * Get the dataflow property: Data flow reference.
     *
     * @return the dataflow value.
     */
    public DataFlowReference getDataflow() {
        return this.dataflow;
    }

    /**
     * Set the dataflow property: Data flow reference.
     *
     * @param dataflow the dataflow value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setDataflow(DataFlowReference dataflow) {
        this.dataflow = dataflow;
        return this;
    }

    /**
     * Get the staging property: Staging info for execute data flow activity.
     *
     * @return the staging value.
     */
    public DataFlowStagingInfo getStaging() {
        return this.staging;
    }

    /**
     * Set the staging property: Staging info for execute data flow activity.
     *
     * @param staging the staging value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setStaging(DataFlowStagingInfo staging) {
        this.staging = staging;
        return this;
    }

    /**
     * Get the integrationRuntime property: The integration runtime reference.
     *
     * @return the integrationRuntime value.
     */
    public IntegrationRuntimeReference getIntegrationRuntime() {
        return this.integrationRuntime;
    }

    /**
     * Set the integrationRuntime property: The integration runtime reference.
     *
     * @param integrationRuntime the integrationRuntime value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setIntegrationRuntime(IntegrationRuntimeReference integrationRuntime) {
        this.integrationRuntime = integrationRuntime;
        return this;
    }

    /**
     * Get the compute property: Compute properties for data flow activity.
     *
     * @return the compute value.
     */
    public ExecuteDataFlowActivityTypePropertiesCompute getCompute() {
        return this.compute;
    }

    /**
     * Set the compute property: Compute properties for data flow activity.
     *
     * @param compute the compute value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setCompute(ExecuteDataFlowActivityTypePropertiesCompute compute) {
        this.compute = compute;
        return this;
    }

    /**
     * Get the traceLevel property: Trace level setting used for data flow monitoring output. Supported values are:
     * 'coarse', 'fine', and 'none'. Type: string (or Expression with resultType string).
     *
     * @return the traceLevel value.
     */
    public Object getTraceLevel() {
        return this.traceLevel;
    }

    /**
     * Set the traceLevel property: Trace level setting used for data flow monitoring output. Supported values are:
     * 'coarse', 'fine', and 'none'. Type: string (or Expression with resultType string).
     *
     * @param traceLevel the traceLevel value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setTraceLevel(Object traceLevel) {
        this.traceLevel = traceLevel;
        return this;
    }

    /**
     * Get the continueOnError property: Continue on error setting used for data flow execution. Enables processing to
     * continue if a sink fails. Type: boolean (or Expression with resultType boolean).
     *
     * @return the continueOnError value.
     */
    public Object getContinueOnError() {
        return this.continueOnError;
    }

    /**
     * Set the continueOnError property: Continue on error setting used for data flow execution. Enables processing to
     * continue if a sink fails. Type: boolean (or Expression with resultType boolean).
     *
     * @param continueOnError the continueOnError value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setContinueOnError(Object continueOnError) {
        this.continueOnError = continueOnError;
        return this;
    }

    /**
     * Get the runConcurrently property: Concurrent run setting used for data flow execution. Allows sinks with the same
     * save order to be processed concurrently. Type: boolean (or Expression with resultType boolean).
     *
     * @return the runConcurrently value.
     */
    public Object getRunConcurrently() {
        return this.runConcurrently;
    }

    /**
     * Set the runConcurrently property: Concurrent run setting used for data flow execution. Allows sinks with the same
     * save order to be processed concurrently. Type: boolean (or Expression with resultType boolean).
     *
     * @param runConcurrently the runConcurrently value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setRunConcurrently(Object runConcurrently) {
        this.runConcurrently = runConcurrently;
        return this;
    }

    /**
     * Get the sourceStagingConcurrency property: Specify number of parallel staging for sources applicable to the sink.
     * Type: integer (or Expression with resultType integer).
     *
     * @return the sourceStagingConcurrency value.
     */
    public Object getSourceStagingConcurrency() {
        return this.sourceStagingConcurrency;
    }

    /**
     * Set the sourceStagingConcurrency property: Specify number of parallel staging for sources applicable to the sink.
     * Type: integer (or Expression with resultType integer).
     *
     * @param sourceStagingConcurrency the sourceStagingConcurrency value to set.
     * @return the ExecuteDataFlowActivity object itself.
     */
    public ExecuteDataFlowActivity setSourceStagingConcurrency(Object sourceStagingConcurrency) {
        this.sourceStagingConcurrency = sourceStagingConcurrency;
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExecuteDataFlowActivity setLinkedServiceName(LinkedServiceReference linkedServiceName) {
        super.setLinkedServiceName(linkedServiceName);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExecuteDataFlowActivity setPolicy(ActivityPolicy policy) {
        super.setPolicy(policy);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExecuteDataFlowActivity setName(String name) {
        super.setName(name);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExecuteDataFlowActivity setDescription(String description) {
        super.setDescription(description);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExecuteDataFlowActivity setDependsOn(List<ActivityDependency> dependsOn) {
        super.setDependsOn(dependsOn);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public ExecuteDataFlowActivity setUserProperties(List<UserProperty> userProperties) {
        super.setUserProperties(userProperties);
        return this;
    }
}
