package org.zstack.header.network.service;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class NetworkServiceType {
private static Map<String, NetworkServiceType> types = Collections.synchronizedMap(new HashMap<String, NetworkServiceType>());
public static NetworkServiceType DHCP = new NetworkServiceType("DHCP");
public static NetworkServiceType DNS = new NetworkServiceType("DNS");
public static NetworkServiceType SNAT = new NetworkServiceType("SNAT");
public static NetworkServiceType PortForwarding = new NetworkServiceType("PortForwarding");
private final String typeName;
public NetworkServiceType(String typeName) {
this.typeName = typeName;
types.put(typeName, this);
}
public static NetworkServiceType valueOf(String typeName) {
NetworkServiceType type = types.get(typeName);
if (type == null) {
throw new IllegalArgumentException("NetworkServiceType type: " + typeName + " was not provided by any NetworkServiceProvider");
}
return type;
}
@Override
public String toString() {
return typeName;
}
@Override
public boolean equals(Object t) {
if (t == null || !(t instanceof NetworkServiceType)) {
return false;
}
NetworkServiceType type = (NetworkServiceType) t;
return type.toString().equals(typeName);
}
@Override
public int hashCode() {
return typeName.hashCode();
}
}