package pctelelog; import java.net.InetAddress; import org.codehaus.jackson.annotate.JsonIgnoreType; @JsonIgnoreType public class Device { static final public Device NO_DEVICE; static final public Device UNKNOWN_DEVICE; static { try { NO_DEVICE = new Device("NO DEVICE", InetAddress.getByName("0.0.0.0")); UNKNOWN_DEVICE = new Device("UNKNOWN DEVICE", InetAddress.getByName("0.0.0.0")); } catch(Exception e) { throw new ExceptionInInitializerError(e); } } private String m_name = null; private InetAddress m_ip = null; public Device(String name, InetAddress ip) throws InvalidDeviceException { if(name == null && ip == null) throw new InvalidDeviceException("Device must have a name OR an IP"); m_name = name; m_ip = ip; } public String getName() { return m_name; } public InetAddress getIP() { return m_ip; } @Override public String toString() { String name = ""; String ip = ""; if(m_name != null) { name = "Device: " + m_name; } if(m_ip != null) { ip = "IP: " + m_ip.toString(); } if(name != "") return name + "(" + m_ip + ")"; else return ip; } @Override public boolean equals(Object obj) { if(obj == null) { return false; } try { Device device = Device.class.cast(obj); // Compare IPs if both have one if(device.getIP() != null && this.getIP() != null) { if(! device.getIP().equals(this.getIP())) { return false; } } else if(device.getIP() != this.getIP()) { // Check if matching nulls return false; } // Compare device name if both have one if(device.getName() != null && this.getName() != null) { if(! device.getName().equals(this.getName())) { return false; } } else if(device.getName() != this.getName()) { // Check if matching nulls return false; } } catch(ClassCastException e) { return false; } return true; } @SuppressWarnings("serial") public class InvalidDeviceException extends Exception { public InvalidDeviceException(String msg) { super(msg); } } }