package com.telefonica.claudia.slm.deployment;
import java.util.Set;
import java.util.TreeSet;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import com.telefonica.claudia.slm.common.PersistentObject;
@Entity
public class Zone implements PersistentObject {
@Id
@GeneratedValue
public long internalId;
@OneToMany(mappedBy="zone", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private Set<Network> networks = new TreeSet<Network>();
@ManyToOne
private VDC vdc;
public enum ZoneType {VPN_ACCESS, PRIVATE_PROTECTED, PRIVATE_BACKEND, PUBLIC_UNPROTECTED, PUBLIC_PROTECTED, PUBLIC_CUSTOM_PROTECTED};
private ZoneType zoneType;
public Zone() {}
@Override
public String toString() {
return String.valueOf(internalId);
}
@Override
public int hashCode() {
return (int) (internalId%100);
}
public void registerNetwork(Network network) {
if(network == null)
throw new IllegalArgumentException("Cannot register null network");
if(!network.getZone().equals(this))
throw new IllegalArgumentException("Trying to register network " + network + " on a different Service " + this);
networks.add(network);
}
public boolean isNetworkRegistered(Network network) {
return networks.contains(network);
}
public void unregisterNetwork(Network network) {
networks.remove(network);
}
public Set<Network> getNetworks() {
return networks;
}
public void setVdc(VDC vdc) {
this.vdc = vdc;
}
public VDC getVdc() {
return vdc;
}
public void setZoneType(ZoneType zoneType) {
this.zoneType = zoneType;
}
public ZoneType getZoneType() {
return zoneType;
}
public long getObjectId() {
return internalId;
}
}