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

package com.azure.resourcemanager.customerinsights.fluent.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.management.ProxyResource;
import com.azure.resourcemanager.customerinsights.models.PredictionGradesItem;
import com.azure.resourcemanager.customerinsights.models.PredictionMappings;
import com.azure.resourcemanager.customerinsights.models.PredictionSystemGeneratedEntities;
import com.azure.resourcemanager.customerinsights.models.ProvisioningStates;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import java.util.Map;

/** The prediction resource format. */
@Fluent
public final class PredictionResourceFormatInner extends ProxyResource {
    /*
     * The prediction definition.
     */
    @JsonProperty(value = "properties")
    private Prediction innerProperties;

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

    /**
     * Get the innerProperties property: The prediction definition.
     *
     * @return the innerProperties value.
     */
    private Prediction innerProperties() {
        return this.innerProperties;
    }

    /**
     * Get the description property: Description of the prediction.
     *
     * @return the description value.
     */
    public Map<String, String> description() {
        return this.innerProperties() == null ? null : this.innerProperties().description();
    }

    /**
     * Set the description property: Description of the prediction.
     *
     * @param description the description value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withDescription(Map<String, String> description) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withDescription(description);
        return this;
    }

    /**
     * Get the displayName property: Display name of the prediction.
     *
     * @return the displayName value.
     */
    public Map<String, String> displayName() {
        return this.innerProperties() == null ? null : this.innerProperties().displayName();
    }

    /**
     * Set the displayName property: Display name of the prediction.
     *
     * @param displayName the displayName value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withDisplayName(Map<String, String> displayName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withDisplayName(displayName);
        return this;
    }

    /**
     * Get the involvedInteractionTypes property: Interaction types involved in the prediction.
     *
     * @return the involvedInteractionTypes value.
     */
    public List<String> involvedInteractionTypes() {
        return this.innerProperties() == null ? null : this.innerProperties().involvedInteractionTypes();
    }

    /**
     * Set the involvedInteractionTypes property: Interaction types involved in the prediction.
     *
     * @param involvedInteractionTypes the involvedInteractionTypes value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withInvolvedInteractionTypes(List<String> involvedInteractionTypes) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withInvolvedInteractionTypes(involvedInteractionTypes);
        return this;
    }

    /**
     * Get the involvedKpiTypes property: KPI types involved in the prediction.
     *
     * @return the involvedKpiTypes value.
     */
    public List<String> involvedKpiTypes() {
        return this.innerProperties() == null ? null : this.innerProperties().involvedKpiTypes();
    }

    /**
     * Set the involvedKpiTypes property: KPI types involved in the prediction.
     *
     * @param involvedKpiTypes the involvedKpiTypes value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withInvolvedKpiTypes(List<String> involvedKpiTypes) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withInvolvedKpiTypes(involvedKpiTypes);
        return this;
    }

    /**
     * Get the involvedRelationships property: Relationships involved in the prediction.
     *
     * @return the involvedRelationships value.
     */
    public List<String> involvedRelationships() {
        return this.innerProperties() == null ? null : this.innerProperties().involvedRelationships();
    }

    /**
     * Set the involvedRelationships property: Relationships involved in the prediction.
     *
     * @param involvedRelationships the involvedRelationships value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withInvolvedRelationships(List<String> involvedRelationships) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withInvolvedRelationships(involvedRelationships);
        return this;
    }

    /**
     * Get the negativeOutcomeExpression property: Negative outcome expression.
     *
     * @return the negativeOutcomeExpression value.
     */
    public String negativeOutcomeExpression() {
        return this.innerProperties() == null ? null : this.innerProperties().negativeOutcomeExpression();
    }

    /**
     * Set the negativeOutcomeExpression property: Negative outcome expression.
     *
     * @param negativeOutcomeExpression the negativeOutcomeExpression value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withNegativeOutcomeExpression(String negativeOutcomeExpression) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withNegativeOutcomeExpression(negativeOutcomeExpression);
        return this;
    }

    /**
     * Get the positiveOutcomeExpression property: Positive outcome expression.
     *
     * @return the positiveOutcomeExpression value.
     */
    public String positiveOutcomeExpression() {
        return this.innerProperties() == null ? null : this.innerProperties().positiveOutcomeExpression();
    }

    /**
     * Set the positiveOutcomeExpression property: Positive outcome expression.
     *
     * @param positiveOutcomeExpression the positiveOutcomeExpression value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withPositiveOutcomeExpression(String positiveOutcomeExpression) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withPositiveOutcomeExpression(positiveOutcomeExpression);
        return this;
    }

    /**
     * Get the primaryProfileType property: Primary profile type.
     *
     * @return the primaryProfileType value.
     */
    public String primaryProfileType() {
        return this.innerProperties() == null ? null : this.innerProperties().primaryProfileType();
    }

    /**
     * Set the primaryProfileType property: Primary profile type.
     *
     * @param primaryProfileType the primaryProfileType value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withPrimaryProfileType(String primaryProfileType) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withPrimaryProfileType(primaryProfileType);
        return this;
    }

    /**
     * Get the provisioningState property: Provisioning state.
     *
     * @return the provisioningState value.
     */
    public ProvisioningStates provisioningState() {
        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
    }

    /**
     * Get the predictionName property: Name of the prediction.
     *
     * @return the predictionName value.
     */
    public String predictionName() {
        return this.innerProperties() == null ? null : this.innerProperties().predictionName();
    }

    /**
     * Set the predictionName property: Name of the prediction.
     *
     * @param predictionName the predictionName value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withPredictionName(String predictionName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withPredictionName(predictionName);
        return this;
    }

    /**
     * Get the scopeExpression property: Scope expression.
     *
     * @return the scopeExpression value.
     */
    public String scopeExpression() {
        return this.innerProperties() == null ? null : this.innerProperties().scopeExpression();
    }

    /**
     * Set the scopeExpression property: Scope expression.
     *
     * @param scopeExpression the scopeExpression value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withScopeExpression(String scopeExpression) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withScopeExpression(scopeExpression);
        return this;
    }

    /**
     * Get the tenantId property: The hub name.
     *
     * @return the tenantId value.
     */
    public String tenantId() {
        return this.innerProperties() == null ? null : this.innerProperties().tenantId();
    }

    /**
     * Get the autoAnalyze property: Whether do auto analyze.
     *
     * @return the autoAnalyze value.
     */
    public Boolean autoAnalyze() {
        return this.innerProperties() == null ? null : this.innerProperties().autoAnalyze();
    }

    /**
     * Set the autoAnalyze property: Whether do auto analyze.
     *
     * @param autoAnalyze the autoAnalyze value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withAutoAnalyze(Boolean autoAnalyze) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withAutoAnalyze(autoAnalyze);
        return this;
    }

    /**
     * Get the mappings property: Definition of the link mapping of prediction.
     *
     * @return the mappings value.
     */
    public PredictionMappings mappings() {
        return this.innerProperties() == null ? null : this.innerProperties().mappings();
    }

    /**
     * Set the mappings property: Definition of the link mapping of prediction.
     *
     * @param mappings the mappings value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withMappings(PredictionMappings mappings) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withMappings(mappings);
        return this;
    }

    /**
     * Get the scoreLabel property: Score label.
     *
     * @return the scoreLabel value.
     */
    public String scoreLabel() {
        return this.innerProperties() == null ? null : this.innerProperties().scoreLabel();
    }

    /**
     * Set the scoreLabel property: Score label.
     *
     * @param scoreLabel the scoreLabel value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withScoreLabel(String scoreLabel) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withScoreLabel(scoreLabel);
        return this;
    }

    /**
     * Get the grades property: The prediction grades.
     *
     * @return the grades value.
     */
    public List<PredictionGradesItem> grades() {
        return this.innerProperties() == null ? null : this.innerProperties().grades();
    }

    /**
     * Set the grades property: The prediction grades.
     *
     * @param grades the grades value to set.
     * @return the PredictionResourceFormatInner object itself.
     */
    public PredictionResourceFormatInner withGrades(List<PredictionGradesItem> grades) {
        if (this.innerProperties() == null) {
            this.innerProperties = new Prediction();
        }
        this.innerProperties().withGrades(grades);
        return this;
    }

    /**
     * Get the systemGeneratedEntities property: System generated entities.
     *
     * @return the systemGeneratedEntities value.
     */
    public PredictionSystemGeneratedEntities systemGeneratedEntities() {
        return this.innerProperties() == null ? null : this.innerProperties().systemGeneratedEntities();
    }

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