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

package com.azure.resourcemanager.machinelearning.models;

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

/** The DiagnoseResponseResultValue model. */
@Fluent
public final class DiagnoseResponseResultValue {
    /*
     * The userDefinedRouteResults property.
     */
    @JsonProperty(value = "userDefinedRouteResults")
    private List<DiagnoseResult> userDefinedRouteResults;

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

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

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

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

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

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

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

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

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

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

    /**
     * Set the userDefinedRouteResults property: The userDefinedRouteResults property.
     *
     * @param userDefinedRouteResults the userDefinedRouteResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withUserDefinedRouteResults(List<DiagnoseResult> userDefinedRouteResults) {
        this.userDefinedRouteResults = userDefinedRouteResults;
        return this;
    }

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

    /**
     * Set the networkSecurityRuleResults property: The networkSecurityRuleResults property.
     *
     * @param networkSecurityRuleResults the networkSecurityRuleResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withNetworkSecurityRuleResults(List<DiagnoseResult> networkSecurityRuleResults) {
        this.networkSecurityRuleResults = networkSecurityRuleResults;
        return this;
    }

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

    /**
     * Set the resourceLockResults property: The resourceLockResults property.
     *
     * @param resourceLockResults the resourceLockResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withResourceLockResults(List<DiagnoseResult> resourceLockResults) {
        this.resourceLockResults = resourceLockResults;
        return this;
    }

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

    /**
     * Set the dnsResolutionResults property: The dnsResolutionResults property.
     *
     * @param dnsResolutionResults the dnsResolutionResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withDnsResolutionResults(List<DiagnoseResult> dnsResolutionResults) {
        this.dnsResolutionResults = dnsResolutionResults;
        return this;
    }

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

    /**
     * Set the storageAccountResults property: The storageAccountResults property.
     *
     * @param storageAccountResults the storageAccountResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withStorageAccountResults(List<DiagnoseResult> storageAccountResults) {
        this.storageAccountResults = storageAccountResults;
        return this;
    }

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

    /**
     * Set the keyVaultResults property: The keyVaultResults property.
     *
     * @param keyVaultResults the keyVaultResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withKeyVaultResults(List<DiagnoseResult> keyVaultResults) {
        this.keyVaultResults = keyVaultResults;
        return this;
    }

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

    /**
     * Set the containerRegistryResults property: The containerRegistryResults property.
     *
     * @param containerRegistryResults the containerRegistryResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withContainerRegistryResults(List<DiagnoseResult> containerRegistryResults) {
        this.containerRegistryResults = containerRegistryResults;
        return this;
    }

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

    /**
     * Set the applicationInsightsResults property: The applicationInsightsResults property.
     *
     * @param applicationInsightsResults the applicationInsightsResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withApplicationInsightsResults(List<DiagnoseResult> applicationInsightsResults) {
        this.applicationInsightsResults = applicationInsightsResults;
        return this;
    }

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

    /**
     * Set the otherResults property: The otherResults property.
     *
     * @param otherResults the otherResults value to set.
     * @return the DiagnoseResponseResultValue object itself.
     */
    public DiagnoseResponseResultValue withOtherResults(List<DiagnoseResult> otherResults) {
        this.otherResults = otherResults;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
        if (userDefinedRouteResults() != null) {
            userDefinedRouteResults().forEach(e -> e.validate());
        }
        if (networkSecurityRuleResults() != null) {
            networkSecurityRuleResults().forEach(e -> e.validate());
        }
        if (resourceLockResults() != null) {
            resourceLockResults().forEach(e -> e.validate());
        }
        if (dnsResolutionResults() != null) {
            dnsResolutionResults().forEach(e -> e.validate());
        }
        if (storageAccountResults() != null) {
            storageAccountResults().forEach(e -> e.validate());
        }
        if (keyVaultResults() != null) {
            keyVaultResults().forEach(e -> e.validate());
        }
        if (containerRegistryResults() != null) {
            containerRegistryResults().forEach(e -> e.validate());
        }
        if (applicationInsightsResults() != null) {
            applicationInsightsResults().forEach(e -> e.validate());
        }
        if (otherResults() != null) {
            otherResults().forEach(e -> e.validate());
        }
    }
}
