package edu.sjtu.infosec.ismp.manager.RAM.model;
import java.io.Serializable;
import java.util.Set;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/**
* 知识库静态脆弱点类别类.
*/
@Entity
@Table(name = "RAM_KNOW_STAT_VULN_KIND")
@org.hibernate.annotations.Entity(dynamicInsert=true, dynamicUpdate = true)
public class AsseKnowStatVulnKind implements Serializable {
/**
* 静态脆弱点类别编号
*/
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="ID")
private Integer id;
/**
* 静态脆弱点类别名称
*/
@Column(name="KIND", length = 100, nullable = false)
private String kind;
/**
* 关联静态脆弱点集
*/
@OneToMany(mappedBy="vulnKind")
@Cascade(value={CascadeType.SAVE_UPDATE,CascadeType.REMOVE})
private Set<AsseKnowStatVulnPoin> vulnPoins;
/**
* 关联静态漏洞集
*/
@OneToMany(mappedBy="vulnKind")
@Cascade(value={CascadeType.SAVE_UPDATE,CascadeType.REMOVE})
private Set<AsseKnowStatLeak> leaks;
/**
* 构造函数
*/
public AsseKnowStatVulnKind() {
}
/**
* 构造函数
* @param vulnKind
* 静态脆弱点类别名称
*/
public AsseKnowStatVulnKind(String vulnKind) {
this.kind = vulnKind;
}
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @param vulnKindId
* 静态脆弱点类别编号
*/
public void setId(Integer vulnKindId) {
this.id = vulnKindId;
}
/**
* @return kind
*/
public String getKind() {
return kind;
}
/**
* @param vulnKind
* 静态脆弱点类别名称
*/
public void setKind(String vulnKind) {
this.kind = vulnKind;
}
/**
* @return vulnPoins
*/
public Set<AsseKnowStatVulnPoin> getVulnPoins() {
return vulnPoins;
}
/**
* @param vulnpoins
* 关联静态脆弱点集
*/
public void setVulnPoins(Set<AsseKnowStatVulnPoin> vulnpoins) {
this.vulnPoins = vulnpoins;
}
/**
* @return leaks
*/
public Set<AsseKnowStatLeak> getLeaks() {
return leaks;
}
/**
* @param vleaks
* 关联静态漏洞集
*/
public void setLeaks(Set<AsseKnowStatLeak> vleaks) {
this.leaks = vleaks;
}
/**
* 获取哈希值
* @return 哈希值
*/
public int hashCode() {
return new HashCodeBuilder().append(id).hashCode();
}
/**
* 静态脆弱点类别实例属性查看
* @return 属性字符串
*/
public String toString() {
return new ToStringBuilder(this).append(id).append(kind).toString();
}
/**
* 比较是否相等
* @param o
* 静态脆弱点类别实例
* @return true/false
*/
public boolean equals(Object o) {
if (!(o instanceof AsseKnowStatVulnKind)) {
return false;
}
AsseKnowStatVulnKind another = (AsseKnowStatVulnKind) o;
return new EqualsBuilder()
.append(id, another.id)
.isEquals();
}
}