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

package com.azure.ai.textanalytics.implementation.models;

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

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

    /*
     * The createdDateTime property.
     */
    @JsonProperty(value = "createdDateTime", required = true)
    private OffsetDateTime createdDateTime;

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

    /*
     * The jobId property.
     */
    @JsonProperty(value = "jobId", required = true)
    private UUID jobId;

    /*
     * The lastUpdateDateTime property.
     */
    @JsonProperty(value = "lastUpdateDateTime", required = true)
    private OffsetDateTime lastUpdateDateTime;

    /*
     * The status property.
     */
    @JsonProperty(value = "status", required = true)
    private State status;

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

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

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

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

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

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

    /**
     * Get the jobId property: The jobId property.
     *
     * @return the jobId value.
     */
    public UUID getJobId() {
        return this.jobId;
    }

    /**
     * Set the jobId property: The jobId property.
     *
     * @param jobId the jobId value to set.
     * @return the JobMetadata object itself.
     */
    public JobMetadata setJobId(UUID jobId) {
        this.jobId = jobId;
        return this;
    }

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

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

    /**
     * Get the status property: The status property.
     *
     * @return the status value.
     */
    public State getStatus() {
        return this.status;
    }

    /**
     * Set the status property: The status property.
     *
     * @param status the status value to set.
     * @return the JobMetadata object itself.
     */
    public JobMetadata setStatus(State status) {
        this.status = status;
        return this;
    }
}
