package hudson.plugins.pxe; import org.apache.commons.codec.binary.Hex; import java.text.ParseException; /** * MAC address, formatted like "0A:00:B3:12:34:56". * * @author Kohsuke Kawaguchi */ public final class MacAddress { private final String id; public MacAddress(byte[] adrs) { String hex = new String(Hex.encodeHex(adrs)).substring(0, 12); id = reformat(hex); } private String reformat(String hex) { StringBuilder buf = new StringBuilder(); for (int i=0; i<6; i++) { if (buf.length()>0) buf.append(':'); buf.append(hex.substring(i*2,i*2+2)); } return buf.toString().toUpperCase(); } public MacAddress(String adrs) throws ParseException { StringBuilder buf = new StringBuilder(); for (int i=0; i<adrs.length(); i++) { char ch = Character.toUpperCase(adrs.charAt(i)); if (('0'<=ch && ch<='9') || ('A'<=ch && ch<='F')) buf.append(ch); } if (buf.length()!=12) throw new ParseException("Not a valid MAC address: "+adrs,0); id = reformat(buf.toString()); } @Override public String toString() { return id; } @Override public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; MacAddress that = (MacAddress) o; return id.equals(that.id); } @Override public int hashCode() { return id.hashCode(); } }