/*_##########################################################################
_##
_## Copyright (C) 2012-2015 Kaito Yamada
_##
_##########################################################################
*/
package com.github.kaitoy.sneo.giane.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import com.github.kaitoy.sneo.giane.action.message.FormMessage;
import com.github.kaitoy.sneo.network.dto.VlanDto;
import com.github.kaitoy.sneo.network.dto.VlanMemberDto;
import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator;
import com.opensymphony.xwork2.validator.annotations.IntRangeFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator;
@Entity
@Table(name = "VLAN")
public class Vlan extends AbstractModel implements FormMessage {
/**
*
*/
private static final long serialVersionUID = 1566064814817098702L;
private String name;
private Integer vid;
private VlanIpAddressRelation ipAddressRelation;
private List<VlanMember> vlanMembers;
private Node node;
@Column(name = "NAME", nullable = false, length = 200)
public String getName() {
return name;
}
@RequiredStringValidator(
key = "RequiredStringValidator.error",
trim = true,
shortCircuit = true // Stops checking if detects error
)
@StringLengthFieldValidator(
key = "StringLengthFieldValidator.error.max",
trim = true,
maxLength = "200",
shortCircuit = true
)
public void setName(String name) {
this.name = name;
}
@Column(name = "VID", nullable = false)
public Integer getVid() {
return vid;
}
@ConversionErrorFieldValidator(
key = "ConversionErrorFieldValidator.error",
shortCircuit = true
)
@RequiredFieldValidator(
key = "RequiredFieldValidator.error",
shortCircuit = true
)
@IntRangeFieldValidator(
key = "IntRangeFieldValidator.error.min.max",
min = "1",
max = "4094",
shortCircuit = true
)
public void setVid(Integer vid) {
this.vid = vid;
}
@OneToOne(
fetch = FetchType.LAZY,
orphanRemoval = true,
cascade = {
CascadeType.REMOVE
},
optional = false
)
@JoinColumn(
name = "IP_ADDRESS_RELATION_ID",
nullable = false,
unique = true
)
public VlanIpAddressRelation getIpAddressRelation() {
return ipAddressRelation;
}
public void setIpAddressRelation(VlanIpAddressRelation ipAddressRelation) {
this.ipAddressRelation = ipAddressRelation;
}
@ManyToMany(fetch = FetchType.LAZY, cascade = {})
@JoinTable(
name = "VLAN__VLAN_MEMBER",
joinColumns = @JoinColumn(name = "VLAN_ID", nullable = false),
inverseJoinColumns = @JoinColumn(name = "VLAN_MEMBER_ID", nullable = false)
)
public List<VlanMember> getVlanMembers() {
return vlanMembers;
}
public void setVlanMembers(List<VlanMember> vlanMembers) {
this.vlanMembers = vlanMembers;
}
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "NODE_ID", nullable = false)
public Node getNode() {
return node;
}
public void setNode(Node node) {
this.node = node;
}
public VlanDto toDto() {
List<VlanMemberDto> vlanMemberDtos
= new ArrayList<VlanMemberDto>();
for (VlanMember vlanMember: vlanMembers) {
vlanMemberDtos.add(vlanMember.toDto());
}
VlanDto dto = new VlanDto();
dto.setId(getId());
dto.setName(name);
dto.setVid(vid);
dto.setVlanMembers(vlanMemberDtos);
dto.setIpAddresses(ipAddressRelation.getIpAddressDtos());
return dto;
}
}