// 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.monitoring.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;
import java.util.List;

/** The SparkJob model. */
@Fluent
public final class SparkJob {
    /*
     * The state property.
     */
    @JsonProperty(value = "state")
    private String state;

    /*
     * The name property.
     */
    @JsonProperty(value = "name")
    private String name;

    /*
     * The submitter property.
     */
    @JsonProperty(value = "submitter")
    private String submitter;

    /*
     * The compute property.
     */
    @JsonProperty(value = "compute")
    private String compute;

    /*
     * The sparkApplicationId property.
     */
    @JsonProperty(value = "sparkApplicationId")
    private String sparkApplicationId;

    /*
     * The livyId property.
     */
    @JsonProperty(value = "livyId")
    private String livyId;

    /*
     * The timing property.
     */
    @JsonProperty(value = "timing")
    private List<String> timing;

    /*
     * The sparkJobDefinition property.
     */
    @JsonProperty(value = "sparkJobDefinition")
    private String sparkJobDefinition;

    /*
     * The pipeline property.
     */
    @JsonProperty(value = "pipeline")
    private List<SparkJob> pipeline;

    /*
     * The jobType property.
     */
    @JsonProperty(value = "jobType")
    private String jobType;

    /*
     * The submitTime property.
     */
    @JsonProperty(value = "submitTime")
    private OffsetDateTime submitTime;

    /*
     * The endTime property.
     */
    @JsonProperty(value = "endTime")
    private OffsetDateTime endTime;

    /*
     * The queuedDuration property.
     */
    @JsonProperty(value = "queuedDuration")
    private String queuedDuration;

    /*
     * The runningDuration property.
     */
    @JsonProperty(value = "runningDuration")
    private String runningDuration;

    /*
     * The totalDuration property.
     */
    @JsonProperty(value = "totalDuration")
    private String totalDuration;

    /**
     * Get the state property: The state property.
     *
     * @return the state value.
     */
    public String getState() {
        return this.state;
    }

    /**
     * Set the state property: The state property.
     *
     * @param state the state value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setState(String state) {
        this.state = state;
        return this;
    }

    /**
     * Get the name property: The name property.
     *
     * @return the name value.
     */
    public String getName() {
        return this.name;
    }

    /**
     * Set the name property: The name property.
     *
     * @param name the name value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Get the submitter property: The submitter property.
     *
     * @return the submitter value.
     */
    public String getSubmitter() {
        return this.submitter;
    }

    /**
     * Set the submitter property: The submitter property.
     *
     * @param submitter the submitter value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setSubmitter(String submitter) {
        this.submitter = submitter;
        return this;
    }

    /**
     * Get the compute property: The compute property.
     *
     * @return the compute value.
     */
    public String getCompute() {
        return this.compute;
    }

    /**
     * Set the compute property: The compute property.
     *
     * @param compute the compute value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setCompute(String compute) {
        this.compute = compute;
        return this;
    }

    /**
     * Get the sparkApplicationId property: The sparkApplicationId property.
     *
     * @return the sparkApplicationId value.
     */
    public String getSparkApplicationId() {
        return this.sparkApplicationId;
    }

    /**
     * Set the sparkApplicationId property: The sparkApplicationId property.
     *
     * @param sparkApplicationId the sparkApplicationId value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setSparkApplicationId(String sparkApplicationId) {
        this.sparkApplicationId = sparkApplicationId;
        return this;
    }

    /**
     * Get the livyId property: The livyId property.
     *
     * @return the livyId value.
     */
    public String getLivyId() {
        return this.livyId;
    }

    /**
     * Set the livyId property: The livyId property.
     *
     * @param livyId the livyId value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setLivyId(String livyId) {
        this.livyId = livyId;
        return this;
    }

    /**
     * Get the timing property: The timing property.
     *
     * @return the timing value.
     */
    public List<String> getTiming() {
        return this.timing;
    }

    /**
     * Set the timing property: The timing property.
     *
     * @param timing the timing value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setTiming(List<String> timing) {
        this.timing = timing;
        return this;
    }

    /**
     * Get the sparkJobDefinition property: The sparkJobDefinition property.
     *
     * @return the sparkJobDefinition value.
     */
    public String getSparkJobDefinition() {
        return this.sparkJobDefinition;
    }

    /**
     * Set the sparkJobDefinition property: The sparkJobDefinition property.
     *
     * @param sparkJobDefinition the sparkJobDefinition value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setSparkJobDefinition(String sparkJobDefinition) {
        this.sparkJobDefinition = sparkJobDefinition;
        return this;
    }

    /**
     * Get the pipeline property: The pipeline property.
     *
     * @return the pipeline value.
     */
    public List<SparkJob> getPipeline() {
        return this.pipeline;
    }

    /**
     * Set the pipeline property: The pipeline property.
     *
     * @param pipeline the pipeline value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setPipeline(List<SparkJob> pipeline) {
        this.pipeline = pipeline;
        return this;
    }

    /**
     * Get the jobType property: The jobType property.
     *
     * @return the jobType value.
     */
    public String getJobType() {
        return this.jobType;
    }

    /**
     * Set the jobType property: The jobType property.
     *
     * @param jobType the jobType value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setJobType(String jobType) {
        this.jobType = jobType;
        return this;
    }

    /**
     * Get the submitTime property: The submitTime property.
     *
     * @return the submitTime value.
     */
    public OffsetDateTime getSubmitTime() {
        return this.submitTime;
    }

    /**
     * Set the submitTime property: The submitTime property.
     *
     * @param submitTime the submitTime value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setSubmitTime(OffsetDateTime submitTime) {
        this.submitTime = submitTime;
        return this;
    }

    /**
     * Get the endTime property: The endTime property.
     *
     * @return the endTime value.
     */
    public OffsetDateTime getEndTime() {
        return this.endTime;
    }

    /**
     * Set the endTime property: The endTime property.
     *
     * @param endTime the endTime value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setEndTime(OffsetDateTime endTime) {
        this.endTime = endTime;
        return this;
    }

    /**
     * Get the queuedDuration property: The queuedDuration property.
     *
     * @return the queuedDuration value.
     */
    public String getQueuedDuration() {
        return this.queuedDuration;
    }

    /**
     * Set the queuedDuration property: The queuedDuration property.
     *
     * @param queuedDuration the queuedDuration value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setQueuedDuration(String queuedDuration) {
        this.queuedDuration = queuedDuration;
        return this;
    }

    /**
     * Get the runningDuration property: The runningDuration property.
     *
     * @return the runningDuration value.
     */
    public String getRunningDuration() {
        return this.runningDuration;
    }

    /**
     * Set the runningDuration property: The runningDuration property.
     *
     * @param runningDuration the runningDuration value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setRunningDuration(String runningDuration) {
        this.runningDuration = runningDuration;
        return this;
    }

    /**
     * Get the totalDuration property: The totalDuration property.
     *
     * @return the totalDuration value.
     */
    public String getTotalDuration() {
        return this.totalDuration;
    }

    /**
     * Set the totalDuration property: The totalDuration property.
     *
     * @param totalDuration the totalDuration value to set.
     * @return the SparkJob object itself.
     */
    public SparkJob setTotalDuration(String totalDuration) {
        this.totalDuration = totalDuration;
        return this;
    }
}
