Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. See License.txt in the project root for
license information.
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.network;
import com.microsoft.azure.management.apigeneration.Beta;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
Express route circuit sku type.
/**
* Express route circuit sku type.
*/
@LangDefinition
@Beta(Beta.SinceVersion.V1_4_0)
public class ExpressRouteCircuitSkuType {
private static final Map<String, ExpressRouteCircuitSkuType> VALUES_BY_NAME = new HashMap<>();
Static value for Standard sku tier and MeteredData sku family.
/**
* Static value for Standard sku tier and MeteredData sku family.
*/
public static final ExpressRouteCircuitSkuType STANDARD_METEREDDATA = new ExpressRouteCircuitSkuType(ExpressRouteCircuitSkuTier.STANDARD, ExpressRouteCircuitSkuFamily.METERED_DATA);
Static value for Standard sku tier and UnlimitedData sku family.
/**
* Static value for Standard sku tier and UnlimitedData sku family.
*/
public static final ExpressRouteCircuitSkuType STANDARD_UNLIMITEDDATA = new ExpressRouteCircuitSkuType(ExpressRouteCircuitSkuTier.STANDARD, ExpressRouteCircuitSkuFamily.UNLIMITED_DATA);
Static value for Premium sku tier and MeteredData sku family.
/**
* Static value for Premium sku tier and MeteredData sku family.
*/
public static final ExpressRouteCircuitSkuType PREMIUM_METEREDDATA = new ExpressRouteCircuitSkuType(ExpressRouteCircuitSkuTier.PREMIUM, ExpressRouteCircuitSkuFamily.METERED_DATA);
Static value for Premium sku tier and UnlimitedData sku family.
/**
* Static value for Premium sku tier and UnlimitedData sku family.
*/
public static final ExpressRouteCircuitSkuType PREMIUM_UNLIMITEDDATA = new ExpressRouteCircuitSkuType(ExpressRouteCircuitSkuTier.PREMIUM, ExpressRouteCircuitSkuFamily.UNLIMITED_DATA);
the SKU corresponding to this type.
/**
* the SKU corresponding to this type.
*/
private final ExpressRouteCircuitSku sku;
The string value of the SKU.
/**
* The string value of the SKU.
*/
private final String value;
Returns: predefined Express Route circuit SKU types
/**
* @return predefined Express Route circuit SKU types
*/
public static ExpressRouteCircuitSkuType[] values() {
Collection<ExpressRouteCircuitSkuType> valuesCollection = VALUES_BY_NAME.values();
return valuesCollection.toArray(new ExpressRouteCircuitSkuType[valuesCollection.size()]);
}
Creates a custom value for ExpressRouteCircuitSkuType.
Params: - skuTier – a SKU tier
- skuFamily – an SKU family
/**
* Creates a custom value for ExpressRouteCircuitSkuType.
* @param skuTier a SKU tier
* @param skuFamily an SKU family
*/
public ExpressRouteCircuitSkuType(ExpressRouteCircuitSkuTier skuTier, ExpressRouteCircuitSkuFamily skuFamily) {
this(new ExpressRouteCircuitSku()
.withName((skuTier == null ? "" : skuTier.toString()) + "_" + (skuFamily == null ? "" : skuFamily.toString()))
.withTier(skuTier)
.withFamily(skuFamily));
}
Creates a custom value for ExpressRouteCircuitSkuType.
Params: - sku – the SKU
/**
* Creates a custom value for ExpressRouteCircuitSkuType.
* @param sku the SKU
*/
public ExpressRouteCircuitSkuType(ExpressRouteCircuitSku sku) {
// Store Sku copy since original user provided sku can be modified
// by the user.
//
this.sku = createCopy(sku);
this.value = this.sku.name();
VALUES_BY_NAME.put(this.value.toLowerCase(), this);
}
Searches for an SKU type and creates a new Express Route circuit SKU type instance if not found among the existing ones.
Params: - sku – an Express Route circuit SKU
Returns: the parsed or created Express Route circuit SKU type
/**
* Searches for an SKU type and creates a new Express Route circuit SKU type instance if not found among the existing ones.
*
* @param sku an Express Route circuit SKU
* @return the parsed or created Express Route circuit SKU type
*/
public static ExpressRouteCircuitSkuType fromSku(ExpressRouteCircuitSku sku) {
if (sku == null) {
return null;
}
String nameToLookFor = sku.name();
ExpressRouteCircuitSkuType result = VALUES_BY_NAME.get(nameToLookFor.toLowerCase());
if (result != null) {
return result;
} else {
return new ExpressRouteCircuitSkuType(sku);
}
}
Returns: the SKU
/**
* @return the SKU
*/
public ExpressRouteCircuitSku sku() {
// Return copy of sku to guard ExpressRouteCircuitSkuType from ending up with invalid
// sku in case consumer changes the returned Sku instance.
//
return createCopy(this.sku);
}
@Override
public String toString() {
return this.value;
}
@Override
public int hashCode() {
return this.value.hashCode();
}
@Override
public boolean equals(Object obj) {
String value = this.toString();
if (!(obj instanceof ExpressRouteCircuitSkuType)) {
return false;
} else if (obj == this) {
return true;
} else if (value == null) {
return ((ExpressRouteCircuitSkuType) obj).value == null;
} else {
return value.equalsIgnoreCase(((ExpressRouteCircuitSkuType) obj).value.toLowerCase());
}
}
Creates a copy of the given sku.
Params: - sku – the sku to create copy of
Returns: the copy
/**
* Creates a copy of the given sku.
*
* @param sku the sku to create copy of
* @return the copy
*/
private static ExpressRouteCircuitSku createCopy(ExpressRouteCircuitSku sku) {
return new ExpressRouteCircuitSku()
.withName(sku.name())
.withTier(sku.tier())
.withFamily(sku.family());
}
}