package net.floodlightcontroller.core; import org.projectfloodlight.openflow.protocol.OFDescStatsReply; /** * Encapsulates the switch information return from the description stats request * * @author Rob Vaterlaus <rob.vaterlaus@bigswitch.com> */ public class SwitchDescription { public static class Builder { private String manufacturerDescription; private String hardwareDescription; private String softwareDescription; private String serialNumber; private String datapathDescription; public Builder() { manufacturerDescription = ""; hardwareDescription = ""; softwareDescription = ""; serialNumber = ""; datapathDescription = ""; } public Builder setManufacturerDescription(String manufacturerDescription) { this.manufacturerDescription = manufacturerDescription; return this; } public Builder setHardwareDescription(String hardwareDescription) { this.hardwareDescription = hardwareDescription; return this; } public Builder setSoftwareDescription(String softwareDescription) { this.softwareDescription = softwareDescription; return this; } public Builder setSerialNumber(String serialNumber) { this.serialNumber = serialNumber; return this; } public Builder setDatapathDescription(String datapathDescription) { this.datapathDescription = datapathDescription; return this; } public SwitchDescription build() { return new SwitchDescription(manufacturerDescription, hardwareDescription, softwareDescription, serialNumber, datapathDescription); } } private final String manufacturerDescription; private final String hardwareDescription; private final String softwareDescription; private final String serialNumber; private final String datapathDescription; public static Builder builder() { return new Builder(); } // FIXME: Should make this private public SwitchDescription() { this("", "", "", "", ""); } // FIXME: Should make this private public SwitchDescription(String manufacturerDescription, String hardwareDescription, String softwareDescription, String serialNumber, String datapathDescription) { this.manufacturerDescription = manufacturerDescription; this.hardwareDescription = hardwareDescription; this.softwareDescription = softwareDescription; this.serialNumber = serialNumber; this.datapathDescription = datapathDescription; } public SwitchDescription(OFDescStatsReply descStatsReply) { this(descStatsReply.getMfrDesc(), descStatsReply.getHwDesc(), descStatsReply.getSwDesc(), descStatsReply.getSerialNum(), descStatsReply.getDpDesc()); } public String getManufacturerDescription() { return manufacturerDescription; } public String getHardwareDescription() { return hardwareDescription; } public String getSoftwareDescription() { return softwareDescription; } public String getSerialNumber() { return serialNumber; } public String getDatapathDescription() { return datapathDescription; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((datapathDescription == null) ? 0 : datapathDescription .hashCode()); result = prime * result + ((hardwareDescription == null) ? 0 : hardwareDescription .hashCode()); result = prime * result + ((manufacturerDescription == null) ? 0 : manufacturerDescription.hashCode()); result = prime * result + ((serialNumber == null) ? 0 : serialNumber.hashCode()); result = prime * result + ((softwareDescription == null) ? 0 : softwareDescription .hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; SwitchDescription other = (SwitchDescription) obj; if (datapathDescription == null) { if (other.datapathDescription != null) return false; } else if (!datapathDescription.equals(other.datapathDescription)) return false; if (hardwareDescription == null) { if (other.hardwareDescription != null) return false; } else if (!hardwareDescription.equals(other.hardwareDescription)) return false; if (manufacturerDescription == null) { if (other.manufacturerDescription != null) return false; } else if (!manufacturerDescription .equals(other.manufacturerDescription)) return false; if (serialNumber == null) { if (other.serialNumber != null) return false; } else if (!serialNumber.equals(other.serialNumber)) return false; if (softwareDescription == null) { if (other.softwareDescription != null) return false; } else if (!softwareDescription.equals(other.softwareDescription)) return false; return true; } @Override public String toString() { return "SwitchDescription [manufacturerDescription=" + manufacturerDescription + ", hardwareDescription=" + hardwareDescription + ", softwareDescription=" + softwareDescription + ", serialNumber=" + serialNumber + ", datapathDescription=" + datapathDescription + "]"; } }