package net.curisit.securis.beans; import java.util.List; import org.codehaus.jackson.annotate.JsonAutoDetect; import org.codehaus.jackson.map.annotate.JsonSerialize; @JsonAutoDetect @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class RequestBean { private String customerCode; private String crcLogo; private String appCode; private List macAddresses; private String osName; private String arch; public String getCustomerCode() { return customerCode; } public void setCustomerCode(String customerCode) { this.customerCode = customerCode; } public String getCrcLogo() { return crcLogo; } public void setCrcLogo(String crcLogo) { this.crcLogo = crcLogo; } public String getAppCode() { return appCode; } public void setAppCode(String appCode) { this.appCode = appCode; } public List getMacAddresses() { return macAddresses; } public void setMacAddresses(List macAddresses) { this.macAddresses = macAddresses; } public String getOsName() { return osName; } public void setOsName(String osName) { this.osName = osName; } public String getArch() { return arch; } public void setArch(String arch) { this.arch = arch; } public boolean match(RequestBean rb) { boolean result = appCode != null && appCode.equals(rb.appCode); result = result && (arch != null && arch.equals(rb.arch)); // CRC Logo validation is optional, only if request file contains it result = result && (crcLogo == null || crcLogo.equals(rb.crcLogo)); result = result && (customerCode != null && customerCode.equals(rb.customerCode)); result = result && (osName != null && osName.equals(rb.osName)); result = result && (macAddresses != null && rb.macAddresses != null) && anyMacIsIncluded(rb.getMacAddresses()); return result; } private boolean anyMacIsIncluded(List macList) { for (String mac : macList) { if (macAddresses.contains(mac)) return true; } return false; } @Override public int hashCode() { int code = 0; code += appCode != null ? appCode.hashCode() : 0; code += arch != null ? arch.hashCode() : 0; code += crcLogo != null ? crcLogo.hashCode() : 0; code += customerCode != null ? customerCode.hashCode() : 0; code += osName != null ? osName.hashCode() : 0; code += macAddresses != null ? macAddresses.hashCode() : 0; return code; }; @Override public boolean equals(Object obj) { if (!(obj instanceof RequestBean)) return false; RequestBean rb = (RequestBean) obj; boolean result = (rb.appCode == null && appCode == null) || (appCode != null && appCode.equals(rb.appCode)); result = result && ((rb.arch == null && arch == null) || (arch != null && arch.equals(rb.arch))); result = result && ((rb.crcLogo == null && crcLogo == null) || (crcLogo != null && crcLogo.equals(rb.crcLogo))); result = result && ((rb.customerCode == null && customerCode == null) || (customerCode != null && customerCode.equals(rb.customerCode))); result = result && ((rb.osName == null && osName == null) || (osName != null && osName.equals(rb.osName))); result = result && ((rb.macAddresses == null && macAddresses == null) || (macAddresses != null && macAddresses.equals(rb.macAddresses))); return result; } }