// 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;

/** Azure ML Execute Pipeline activity. */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonTypeName("AzureMLExecutePipeline")
@JsonFlatten
@Fluent
public class AzureMLExecutePipelineActivity extends ExecutionActivity {
    /*
     * ID of the published Azure ML pipeline. Type: string (or Expression with resultType string).
     */
    @JsonProperty(value = "typeProperties.mlPipelineId", required = true)
    private Object mlPipelineId;

    /*
     * Run history experiment name of the pipeline run. This information will be passed in the ExperimentName property
     * of the published pipeline execution request. Type: string (or Expression with resultType string).
     */
    @JsonProperty(value = "typeProperties.experimentName")
    private Object experimentName;

    /*
     * Key,Value pairs to be passed to the published Azure ML pipeline endpoint. Keys must match the names of pipeline
     * parameters defined in the published pipeline. Values will be passed in the ParameterAssignments property of the
     * published pipeline execution request. Type: object with key value pairs (or Expression with resultType object).
     */
    @JsonProperty(value = "typeProperties.mlPipelineParameters")
    private Object mlPipelineParameters;

    /*
     * The parent Azure ML Service pipeline run id. This information will be passed in the ParentRunId property of the
     * published pipeline execution request. Type: string (or Expression with resultType string).
     */
    @JsonProperty(value = "typeProperties.mlParentRunId")
    private Object mlParentRunId;

    /*
     * Whether to continue execution of other steps in the PipelineRun if a step fails. This information will be passed
     * in the continueOnStepFailure property of the published pipeline execution request. Type: boolean (or Expression
     * with resultType boolean).
     */
    @JsonProperty(value = "typeProperties.continueOnStepFailure")
    private Object continueOnStepFailure;

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

    /**
     * Get the mlPipelineId property: ID of the published Azure ML pipeline. Type: string (or Expression with resultType
     * string).
     *
     * @return the mlPipelineId value.
     */
    public Object getMlPipelineId() {
        return this.mlPipelineId;
    }

    /**
     * Set the mlPipelineId property: ID of the published Azure ML pipeline. Type: string (or Expression with resultType
     * string).
     *
     * @param mlPipelineId the mlPipelineId value to set.
     * @return the AzureMLExecutePipelineActivity object itself.
     */
    public AzureMLExecutePipelineActivity setMlPipelineId(Object mlPipelineId) {
        this.mlPipelineId = mlPipelineId;
        return this;
    }

    /**
     * Get the experimentName property: Run history experiment name of the pipeline run. This information will be passed
     * in the ExperimentName property of the published pipeline execution request. Type: string (or Expression with
     * resultType string).
     *
     * @return the experimentName value.
     */
    public Object getExperimentName() {
        return this.experimentName;
    }

    /**
     * Set the experimentName property: Run history experiment name of the pipeline run. This information will be passed
     * in the ExperimentName property of the published pipeline execution request. Type: string (or Expression with
     * resultType string).
     *
     * @param experimentName the experimentName value to set.
     * @return the AzureMLExecutePipelineActivity object itself.
     */
    public AzureMLExecutePipelineActivity setExperimentName(Object experimentName) {
        this.experimentName = experimentName;
        return this;
    }

    /**
     * Get the mlPipelineParameters property: Key,Value pairs to be passed to the published Azure ML pipeline endpoint.
     * Keys must match the names of pipeline parameters defined in the published pipeline. Values will be passed in the
     * ParameterAssignments property of the published pipeline execution request. Type: object with key value pairs (or
     * Expression with resultType object).
     *
     * @return the mlPipelineParameters value.
     */
    public Object getMlPipelineParameters() {
        return this.mlPipelineParameters;
    }

    /**
     * Set the mlPipelineParameters property: Key,Value pairs to be passed to the published Azure ML pipeline endpoint.
     * Keys must match the names of pipeline parameters defined in the published pipeline. Values will be passed in the
     * ParameterAssignments property of the published pipeline execution request. Type: object with key value pairs (or
     * Expression with resultType object).
     *
     * @param mlPipelineParameters the mlPipelineParameters value to set.
     * @return the AzureMLExecutePipelineActivity object itself.
     */
    public AzureMLExecutePipelineActivity setMlPipelineParameters(Object mlPipelineParameters) {
        this.mlPipelineParameters = mlPipelineParameters;
        return this;
    }

    /**
     * Get the mlParentRunId property: The parent Azure ML Service pipeline run id. This information will be passed in
     * the ParentRunId property of the published pipeline execution request. Type: string (or Expression with resultType
     * string).
     *
     * @return the mlParentRunId value.
     */
    public Object getMlParentRunId() {
        return this.mlParentRunId;
    }

    /**
     * Set the mlParentRunId property: The parent Azure ML Service pipeline run id. This information will be passed in
     * the ParentRunId property of the published pipeline execution request. Type: string (or Expression with resultType
     * string).
     *
     * @param mlParentRunId the mlParentRunId value to set.
     * @return the AzureMLExecutePipelineActivity object itself.
     */
    public AzureMLExecutePipelineActivity setMlParentRunId(Object mlParentRunId) {
        this.mlParentRunId = mlParentRunId;
        return this;
    }

    /**
     * Get the continueOnStepFailure property: Whether to continue execution of other steps in the PipelineRun if a step
     * fails. This information will be passed in the continueOnStepFailure property of the published pipeline execution
     * request. Type: boolean (or Expression with resultType boolean).
     *
     * @return the continueOnStepFailure value.
     */
    public Object getContinueOnStepFailure() {
        return this.continueOnStepFailure;
    }

    /**
     * Set the continueOnStepFailure property: Whether to continue execution of other steps in the PipelineRun if a step
     * fails. This information will be passed in the continueOnStepFailure property of the published pipeline execution
     * request. Type: boolean (or Expression with resultType boolean).
     *
     * @param continueOnStepFailure the continueOnStepFailure value to set.
     * @return the AzureMLExecutePipelineActivity object itself.
     */
    public AzureMLExecutePipelineActivity setContinueOnStepFailure(Object continueOnStepFailure) {
        this.continueOnStepFailure = continueOnStepFailure;
        return this;
    }

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

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

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

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

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

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