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

package com.azure.resourcemanager.edgeorder.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.util.logging.ClientLogger;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Holds details about product hierarchy information. */
@Fluent
public final class HierarchyInformation {
    @JsonIgnore private final ClientLogger logger = new ClientLogger(HierarchyInformation.class);

    /*
     * Represents product family name that uniquely identifies product family
     */
    @JsonProperty(value = "productFamilyName")
    private String productFamilyName;

    /*
     * Represents product line name that uniquely identifies product line
     */
    @JsonProperty(value = "productLineName")
    private String productLineName;

    /*
     * Represents product name that uniquely identifies product
     */
    @JsonProperty(value = "productName")
    private String productName;

    /*
     * Represents configuration name that uniquely identifies configuration
     */
    @JsonProperty(value = "configurationName")
    private String configurationName;

    /**
     * Get the productFamilyName property: Represents product family name that uniquely identifies product family.
     *
     * @return the productFamilyName value.
     */
    public String productFamilyName() {
        return this.productFamilyName;
    }

    /**
     * Set the productFamilyName property: Represents product family name that uniquely identifies product family.
     *
     * @param productFamilyName the productFamilyName value to set.
     * @return the HierarchyInformation object itself.
     */
    public HierarchyInformation withProductFamilyName(String productFamilyName) {
        this.productFamilyName = productFamilyName;
        return this;
    }

    /**
     * Get the productLineName property: Represents product line name that uniquely identifies product line.
     *
     * @return the productLineName value.
     */
    public String productLineName() {
        return this.productLineName;
    }

    /**
     * Set the productLineName property: Represents product line name that uniquely identifies product line.
     *
     * @param productLineName the productLineName value to set.
     * @return the HierarchyInformation object itself.
     */
    public HierarchyInformation withProductLineName(String productLineName) {
        this.productLineName = productLineName;
        return this;
    }

    /**
     * Get the productName property: Represents product name that uniquely identifies product.
     *
     * @return the productName value.
     */
    public String productName() {
        return this.productName;
    }

    /**
     * Set the productName property: Represents product name that uniquely identifies product.
     *
     * @param productName the productName value to set.
     * @return the HierarchyInformation object itself.
     */
    public HierarchyInformation withProductName(String productName) {
        this.productName = productName;
        return this;
    }

    /**
     * Get the configurationName property: Represents configuration name that uniquely identifies configuration.
     *
     * @return the configurationName value.
     */
    public String configurationName() {
        return this.configurationName;
    }

    /**
     * Set the configurationName property: Represents configuration name that uniquely identifies configuration.
     *
     * @param configurationName the configurationName value to set.
     * @return the HierarchyInformation object itself.
     */
    public HierarchyInformation withConfigurationName(String configurationName) {
        this.configurationName = configurationName;
        return this;
    }

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