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

package com.azure.resourcemanager.peering.models;

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

/** The properties that define a direct peering facility. */
@Fluent
public final class DirectPeeringFacility {
    /*
     * The address of the direct peering facility.
     */
    @JsonProperty(value = "address")
    private String address;

    /*
     * The type of the direct peering.
     */
    @JsonProperty(value = "directPeeringType")
    private DirectPeeringType directPeeringType;

    /*
     * The PeeringDB.com ID of the facility.
     */
    @JsonProperty(value = "peeringDBFacilityId")
    private Integer peeringDBFacilityId;

    /*
     * The PeeringDB.com URL of the facility.
     */
    @JsonProperty(value = "peeringDBFacilityLink")
    private String peeringDBFacilityLink;

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

    /**
     * Get the address property: The address of the direct peering facility.
     *
     * @return the address value.
     */
    public String address() {
        return this.address;
    }

    /**
     * Set the address property: The address of the direct peering facility.
     *
     * @param address the address value to set.
     * @return the DirectPeeringFacility object itself.
     */
    public DirectPeeringFacility withAddress(String address) {
        this.address = address;
        return this;
    }

    /**
     * Get the directPeeringType property: The type of the direct peering.
     *
     * @return the directPeeringType value.
     */
    public DirectPeeringType directPeeringType() {
        return this.directPeeringType;
    }

    /**
     * Set the directPeeringType property: The type of the direct peering.
     *
     * @param directPeeringType the directPeeringType value to set.
     * @return the DirectPeeringFacility object itself.
     */
    public DirectPeeringFacility withDirectPeeringType(DirectPeeringType directPeeringType) {
        this.directPeeringType = directPeeringType;
        return this;
    }

    /**
     * Get the peeringDBFacilityId property: The PeeringDB.com ID of the facility.
     *
     * @return the peeringDBFacilityId value.
     */
    public Integer peeringDBFacilityId() {
        return this.peeringDBFacilityId;
    }

    /**
     * Set the peeringDBFacilityId property: The PeeringDB.com ID of the facility.
     *
     * @param peeringDBFacilityId the peeringDBFacilityId value to set.
     * @return the DirectPeeringFacility object itself.
     */
    public DirectPeeringFacility withPeeringDBFacilityId(Integer peeringDBFacilityId) {
        this.peeringDBFacilityId = peeringDBFacilityId;
        return this;
    }

    /**
     * Get the peeringDBFacilityLink property: The PeeringDB.com URL of the facility.
     *
     * @return the peeringDBFacilityLink value.
     */
    public String peeringDBFacilityLink() {
        return this.peeringDBFacilityLink;
    }

    /**
     * Set the peeringDBFacilityLink property: The PeeringDB.com URL of the facility.
     *
     * @param peeringDBFacilityLink the peeringDBFacilityLink value to set.
     * @return the DirectPeeringFacility object itself.
     */
    public DirectPeeringFacility withPeeringDBFacilityLink(String peeringDBFacilityLink) {
        this.peeringDBFacilityLink = peeringDBFacilityLink;
        return this;
    }

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