package edu.sjtu.infosec.ismp.manager.RAM.model;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
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;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Type;
/**
* 知识库静态脆弱点类.
*
*/
@Entity
@Table(name = "RAM_KNOW_STAT_VULN_POIN")
@org.hibernate.annotations.Entity(dynamicInsert=true, dynamicUpdate = true)
public class AsseKnowStatVulnPoin implements Serializable {
/**
* 静态脆弱点编号
*/
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="ID")
private Integer id;
/**
* 静态脆弱点描述
*/
@Column(name="VULN_POIN_DESCRIBE", nullable = false)
@Type(type="text")
private String describe;
/**
* 关联静态脆弱点类别
*/
@ManyToOne
@Cascade(value={CascadeType.SAVE_UPDATE})
@JoinColumn(name="asse_know_stat_vuln_kind_id")
private AsseKnowStatVulnKind vulnKind;
/**
* 来源
*/
@Column(name="SOURCE", length = 10)
private String source;
/**
* 解决方案
*/
@Column(name="RESOLVE")
@Type(type="text")
private String resolve;
/**
* 关联静态威胁集
*/
@OneToMany(mappedBy="vulnPoin")
@Cascade(value={CascadeType.SAVE_UPDATE})
private Set<AsseKnowStatThre> thres;
/**
* 关联安全要素集
*/
@OneToMany(mappedBy="vulnPoin")
@Cascade(value={CascadeType.SAVE_UPDATE})
private Set<AsseKnowStatSecuElem> secuElems;
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @param vulnPoinId
* 静态脆弱点编号
*/
public void setId(Integer vulnPoinId) {
this.id = vulnPoinId;
}
/**
* @return describe
*/
public String getDescribe() {
return describe;
}
/**
* @param desc
* 静态脆弱点描述
*/
public void setDescribe(String desc) {
this.describe = desc;
}
/**
* @return vulnKind
*/
public AsseKnowStatVulnKind getVulnKind() {
return vulnKind;
}
/**
* @param vulnkind
* 关联静态脆弱点类别
*/
public void setVulnKind(AsseKnowStatVulnKind vulnkind) {
this.vulnKind = vulnkind;
}
/**
* @return source
*/
public String getSource() {
return source;
}
/**
* @param sour
* 来源
*/
public void setSource(String sour) {
this.source = sour;
}
/**
* @return resolve
*/
public String getResolve() {
return resolve;
}
/**
* @param reso
* 解决方案
*/
public void setResolve(String reso) {
this.resolve = reso;
}
/**
* @return thres
*/
public Set<AsseKnowStatThre> getThres() {
return thres;
}
/**
* @param threats
* 关联静态威胁集
*/
public void setThres(Set<AsseKnowStatThre> threats) {
this.thres = threats;
}
/**
* @return secuElems
*/
public Set<AsseKnowStatSecuElem> getSecuElems() {
return secuElems;
}
/**
* @param secuelems
* 关联安全要素集
*/
public void setSecuElems(Set<AsseKnowStatSecuElem> secuelems) {
this.secuElems = secuelems;
}
/**
* 比较是否相等
* @param o
* 静态脆弱点实例
* @return true/false
*/
public boolean equals(Object o) {
if (!(o instanceof AsseKnowStatVulnPoin)) {
return false;
}
AsseKnowStatVulnPoin another = (AsseKnowStatVulnPoin) o;
return new EqualsBuilder().append(id, another.id)
.isEquals();
}
/**
* 获取哈希值
* @return 哈希值
*/
public int hashCode() {
return new HashCodeBuilder().append(id).hashCode();
}
/**
* 静态脆弱点实例属性查看
* @return 属性字符串
*/
public String toString() {
return new ToStringBuilder(this).append(id).append(describe).append(
source).append(resolve).toString();
}
}