package net.curisit.securis.beans; import java.util.List; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; @JsonAutoDetect @JsonInclude(Include.NON_NULL) public class RequestBean { private String customerCode; private String crcLogo; private String licenseTypeCode; private String packCode; 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 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 = licenseTypeCode != null && licenseTypeCode.equals(rb.licenseTypeCode); result = result && (packCode != null && packCode.equals(rb.packCode)); 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 += licenseTypeCode != null ? licenseTypeCode.hashCode() : 0; code += arch != null ? arch.hashCode() : 0; code += crcLogo != null ? crcLogo.hashCode() : 0; code += packCode != null ? packCode.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.licenseTypeCode == null && licenseTypeCode == null) || (licenseTypeCode != null && licenseTypeCode.equals(rb.licenseTypeCode)); result = result && ((rb.packCode == null && packCode == null) || (packCode != null && packCode.equals(rb.arch))); 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; } public String getPackCode() { return packCode; } public void setPackCode(String packCode) { this.packCode = packCode; } public String getLicenseTypeCode() { return licenseTypeCode; } public void setLicenseTypeCode(String licenseTypeCode) { this.licenseTypeCode = licenseTypeCode; } }