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

package com.azure.resourcemanager.recoveryservicessiterecovery.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Replication protection intent custom data details. */
@Fluent
public final class ReplicationProtectionIntentProperties {
    /*
     * The name.
     */
    @JsonProperty(value = "friendlyName")
    private String friendlyName;

    /*
     * The job Id.
     */
    @JsonProperty(value = "jobId", access = JsonProperty.Access.WRITE_ONLY)
    private String jobId;

    /*
     * The job state.
     */
    @JsonProperty(value = "jobState", access = JsonProperty.Access.WRITE_ONLY)
    private String jobState;

    /*
     * A value indicating whether the intent object is active.
     */
    @JsonProperty(value = "isActive", access = JsonProperty.Access.WRITE_ONLY)
    private Boolean isActive;

    /*
     * The creation time in UTC.
     */
    @JsonProperty(value = "creationTimeUTC", access = JsonProperty.Access.WRITE_ONLY)
    private String creationTimeUtc;

    /*
     * The Replication provider custom settings.
     */
    @JsonProperty(value = "providerSpecificDetails")
    private ReplicationProtectionIntentProviderSpecificSettings providerSpecificDetails;

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

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

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

    /**
     * Get the jobId property: The job Id.
     *
     * @return the jobId value.
     */
    public String jobId() {
        return this.jobId;
    }

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

    /**
     * Get the isActive property: A value indicating whether the intent object is active.
     *
     * @return the isActive value.
     */
    public Boolean isActive() {
        return this.isActive;
    }

    /**
     * Get the creationTimeUtc property: The creation time in UTC.
     *
     * @return the creationTimeUtc value.
     */
    public String creationTimeUtc() {
        return this.creationTimeUtc;
    }

    /**
     * Get the providerSpecificDetails property: The Replication provider custom settings.
     *
     * @return the providerSpecificDetails value.
     */
    public ReplicationProtectionIntentProviderSpecificSettings providerSpecificDetails() {
        return this.providerSpecificDetails;
    }

    /**
     * Set the providerSpecificDetails property: The Replication provider custom settings.
     *
     * @param providerSpecificDetails the providerSpecificDetails value to set.
     * @return the ReplicationProtectionIntentProperties object itself.
     */
    public ReplicationProtectionIntentProperties withProviderSpecificDetails(
        ReplicationProtectionIntentProviderSpecificSettings providerSpecificDetails) {
        this.providerSpecificDetails = providerSpecificDetails;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
        if (providerSpecificDetails() != null) {
            providerSpecificDetails().validate();
        }
    }
}
