package edu.sjtu.infosec.ismp.manager.AM.model;
import java.io.Serializable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;
/**
* 完整类名:edu.sjtu.infosec.ismp.base.device.Device <br>
* 所在工程:ismp-base <br>
* 说明:
*
* @author $Author: event $
* @version $Revision: 22078 $ $Date: 2009-06-23 17:02:56 +0800 (周二, 23 六月 2009)
* $
*
*/
public class Device implements Serializable{
private static final long serialVersionUID = -3058412529773594974L;
private String type;// 设备种类
private String brand;// 设备品牌
private String model;// 设备型号
private String optionalClassifier;// 保留字段
private String ipAddress; // 设备IP地址
private String physAddress;// 设备物理地址
private String community; // SNMP需要的团体名
private Integer idFromAsset; // 资产模块的id号
public Integer getIdFromAsset() {
return idFromAsset;
}
public void setIdFromAsset(Integer idFromAsset) {
this.idFromAsset = idFromAsset;
}
private static final String REGEX = "([0-9,a-f,A-F]{2}[:,\\-]){5}[0-9,a-f,A-F]{2}";
private static final Pattern PATTERN = Pattern.compile(REGEX);
// /**
// * 构造方法
// *
// * @param vPhysAddress
// */
// public Device(String vPhysAddress) {
// if (vPhysAddress == null) {
// throw new IllegalArgumentException("null physAddress");
// }
//
// Matcher m = PATTERN.matcher(vPhysAddress);
// if (!m.matches()) {
// throw new IllegalArgumentException("malformed physAddress");
// }
// physAddress = vPhysAddress;
// }
/**
* 方法说明:
*
* @return
*/
public String getCommunity() {
return community;
}
/**
* 方法说明:
*
* @param community
*/
public void setCommunity(String community) {
this.community = community;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getOptionalClassifier() {
return optionalClassifier;
}
public void setOptionalClassifier(String optionalClassifier) {
this.optionalClassifier = optionalClassifier;
}
public String getPhysAddress() {
return physAddress;
}
public void setPhysAddress(String physAddress) {
if(physAddress!=null){
String trimmed = physAddress.trim();
this.physAddress = trimmed.replaceAll(Pattern.quote("-"), ":").toUpperCase();
}
}
/**
* Getter方法
*
* @return the ipAddress
*/
public final String getIpAddress() {
return ipAddress;
}
/**
* Setter方法
*
* @param vIpAddress
* the ipAddress to set
*/
public final void setIpAddress(String vIpAddress) {
ipAddress = vIpAddress;
}
public boolean equals(final Object other) {
if (!(other instanceof Device))
return false;
Device castOther = (Device) other;
EqualsBuilder eqb=new EqualsBuilder();
if(!("pc").equals(type)){
eqb.append(type, castOther.type).append(brand,
castOther.brand).append(model, castOther.model).append(
optionalClassifier, castOther.optionalClassifier).
append(ipAddress, castOther.ipAddress).append(community, castOther.community);
}else{
eqb.append(physAddress, castOther.physAddress);
}
return eqb.isEquals();
}
public int hashCode() {
HashCodeBuilder hcb=new HashCodeBuilder();
if(!"pc".equals(type)){
hcb.append(type).append(brand).append(model)
.append(optionalClassifier).append(ipAddress).append(idFromAsset);
}else{
hcb.append(physAddress) ;
}
return hcb.toHashCode();
}
public String toString() {
ToStringBuilder tsb= new ToStringBuilder(this);
if(!"pc".equals(type)){
tsb.append("type", type).append("brand",
brand).append("model", model).append("optionalClassifier",
optionalClassifier).append("ipAddress", ipAddress)
.append("community", community);
}else{
tsb.append(physAddress);
}
return tsb.toString();
}
}