| .. | .. |
|---|
| 2 | 2 | |
|---|
| 3 | 3 | import java.util.Collections; |
|---|
| 4 | 4 | import java.util.List; |
|---|
| 5 | | - |
|---|
| 6 | | -import net.curisit.securis.SeCurisException; |
|---|
| 7 | | -import net.curisit.securis.utils.JsonUtils; |
|---|
| 5 | +import java.util.Objects; |
|---|
| 8 | 6 | |
|---|
| 9 | 7 | import com.fasterxml.jackson.annotation.JsonAutoDetect; |
|---|
| 10 | 8 | import com.fasterxml.jackson.annotation.JsonInclude; |
|---|
| .. | .. |
|---|
| 14 | 12 | @JsonAutoDetect |
|---|
| 15 | 13 | @JsonInclude(Include.NON_NULL) |
|---|
| 16 | 14 | @JsonPropertyOrder({ |
|---|
| 17 | | - "licenseTypeCode", "packCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo" |
|---|
| 15 | + "appCode", "activationCode", "licenseTypeCode", "packCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo" |
|---|
| 18 | 16 | }) |
|---|
| 19 | 17 | public class RequestBean { |
|---|
| 18 | + private String appCode; |
|---|
| 19 | + private String activationCode; |
|---|
| 20 | 20 | private String customerCode; |
|---|
| 21 | 21 | private String crcLogo; |
|---|
| 22 | 22 | private String licenseTypeCode; |
|---|
| .. | .. |
|---|
| 24 | 24 | private List<String> macAddresses; |
|---|
| 25 | 25 | private String osName; |
|---|
| 26 | 26 | private String arch; |
|---|
| 27 | + |
|---|
| 28 | + public String getActivationCode() { |
|---|
| 29 | + return activationCode; |
|---|
| 30 | + } |
|---|
| 31 | + |
|---|
| 32 | + public void setActivationCode(String activationCode) { |
|---|
| 33 | + this.activationCode = activationCode; |
|---|
| 34 | + } |
|---|
| 27 | 35 | |
|---|
| 28 | 36 | public String getCustomerCode() { |
|---|
| 29 | 37 | return customerCode; |
|---|
| .. | .. |
|---|
| 48 | 56 | public void setMacAddresses(List<String> macAddresses) { |
|---|
| 49 | 57 | // We need to be sure that the same mac addresses are always shown in |
|---|
| 50 | 58 | // the same order, to generate a valid hash |
|---|
| 51 | | - if (macAddresses != null) { |
|---|
| 52 | | - Collections.<String> sort(macAddresses); |
|---|
| 53 | | - } |
|---|
| 59 | + if (macAddresses != null) { |
|---|
| 60 | + Collections.<String> sort(macAddresses); |
|---|
| 61 | + } |
|---|
| 54 | 62 | this.macAddresses = macAddresses; |
|---|
| 55 | 63 | } |
|---|
| 56 | 64 | |
|---|
| .. | .. |
|---|
| 71 | 79 | } |
|---|
| 72 | 80 | |
|---|
| 73 | 81 | public boolean match(RequestBean rb) { |
|---|
| 82 | + boolean result = true; |
|---|
| 83 | + if (activationCode != null) { |
|---|
| 84 | + result = result && activationCode.equals(rb.activationCode); |
|---|
| 85 | + // appCode is optional |
|---|
| 86 | + result = result && (appCode == null || appCode.equals(rb.appCode)); |
|---|
| 87 | + } else { |
|---|
| 88 | + // If activationCode exists then we ignore other license identifiers |
|---|
| 89 | + result = result && licenseTypeCode != null && licenseTypeCode.equals(rb.licenseTypeCode); |
|---|
| 90 | + result = result && (customerCode != null && customerCode.equals(rb.customerCode)); |
|---|
| 91 | + result = result && (packCode != null && packCode.equals(rb.packCode)); |
|---|
| 92 | + } |
|---|
| 74 | 93 | |
|---|
| 75 | | - boolean result = licenseTypeCode != null && licenseTypeCode.equals(rb.licenseTypeCode); |
|---|
| 76 | | - result = result && (packCode != null && packCode.equals(rb.packCode)); |
|---|
| 77 | 94 | result = result && (arch != null && arch.equals(rb.arch)); |
|---|
| 78 | 95 | // CRC Logo validation is optional, only if request file contains it |
|---|
| 79 | 96 | result = result && (crcLogo == null || crcLogo.equals(rb.crcLogo)); |
|---|
| 80 | | - result = result && (customerCode != null && customerCode.equals(rb.customerCode)); |
|---|
| 81 | 97 | result = result && (osName != null && osName.equals(rb.osName)); |
|---|
| 82 | 98 | result = result && (macAddresses != null && rb.macAddresses != null) && anyMacIsIncluded(rb.getMacAddresses()); |
|---|
| 83 | 99 | |
|---|
| .. | .. |
|---|
| 95 | 111 | @Override |
|---|
| 96 | 112 | public int hashCode() { |
|---|
| 97 | 113 | int code = 0; |
|---|
| 114 | + code += appCode != null ? appCode.hashCode() : 0; |
|---|
| 115 | + code += activationCode != null ? activationCode.hashCode() : 0; |
|---|
| 98 | 116 | code += licenseTypeCode != null ? licenseTypeCode.hashCode() : 0; |
|---|
| 99 | 117 | code += arch != null ? arch.hashCode() : 0; |
|---|
| 100 | 118 | code += crcLogo != null ? crcLogo.hashCode() : 0; |
|---|
| .. | .. |
|---|
| 111 | 129 | if (!(obj instanceof RequestBean)) |
|---|
| 112 | 130 | return false; |
|---|
| 113 | 131 | RequestBean rb = (RequestBean) obj; |
|---|
| 114 | | - boolean result = (rb.licenseTypeCode == null && licenseTypeCode == null) |
|---|
| 115 | | - || (licenseTypeCode != null && licenseTypeCode.equals(rb.licenseTypeCode)); |
|---|
| 116 | | - result = result && ((rb.packCode == null && packCode == null) || (packCode != null && packCode.equals(rb.arch))); |
|---|
| 117 | | - result = result && ((rb.arch == null && arch == null) || (arch != null && arch.equals(rb.arch))); |
|---|
| 118 | | - result = result && ((rb.crcLogo == null && crcLogo == null) || (crcLogo != null && crcLogo.equals(rb.crcLogo))); |
|---|
| 119 | | - result = result && ((rb.customerCode == null && customerCode == null) || (customerCode != null && customerCode.equals(rb.customerCode))); |
|---|
| 120 | | - result = result && ((rb.osName == null && osName == null) || (osName != null && osName.equals(rb.osName))); |
|---|
| 121 | | - result = result && ((rb.macAddresses == null && macAddresses == null) || (macAddresses != null && macAddresses.equals(rb.macAddresses))); |
|---|
| 132 | + |
|---|
| 133 | + boolean result = true; |
|---|
| 134 | + result = result && Objects.equals(appCode, rb.appCode); |
|---|
| 135 | + result = result && Objects.equals(activationCode, rb.activationCode); |
|---|
| 136 | + result = result && Objects.equals(licenseTypeCode, rb.licenseTypeCode); |
|---|
| 137 | + result = result && Objects.equals(packCode, rb.packCode); |
|---|
| 138 | + result = result && Objects.equals(arch, rb.arch); |
|---|
| 139 | + result = result && Objects.equals(crcLogo, rb.crcLogo); |
|---|
| 140 | + result = result && Objects.equals(customerCode, rb.customerCode); |
|---|
| 141 | + result = result && Objects.equals(osName, rb.osName); |
|---|
| 142 | + result = result && Objects.equals(macAddresses, rb.macAddresses); |
|---|
| 122 | 143 | return result; |
|---|
| 123 | 144 | } |
|---|
| 124 | 145 | |
|---|
| .. | .. |
|---|
| 138 | 159 | this.licenseTypeCode = licenseTypeCode; |
|---|
| 139 | 160 | } |
|---|
| 140 | 161 | |
|---|
| 141 | | - public static void main(String[] args) { |
|---|
| 142 | | - String requestData = "{\n \"licenseTypeCode\": \"CI01\",\n \"packCode\": \"CIBP01\",\n \"arch\": \"amd64\",\n \"osName\": \"Windows Server 2012\",\n \"customerCode\": \"BP01\",\n \"macAddresses\": [\n \"02-71-1A-0E-5D-7C\"\n ],\n \"crcLogo\": \"153e09683eaa26d23c951f6605af5f874b533a917f73681e3e0a1f175aae3981\"\n}"; |
|---|
| 143 | | - try { |
|---|
| 144 | | - JsonUtils.json2object(requestData, RequestBean.class); |
|---|
| 145 | | - } catch (SeCurisException e) { |
|---|
| 146 | | - // TODO Auto-generated catch block |
|---|
| 147 | | - e.printStackTrace(); |
|---|
| 148 | | - } |
|---|
| 162 | + public String getAppCode() { |
|---|
| 163 | + return appCode; |
|---|
| 164 | + } |
|---|
| 165 | + |
|---|
| 166 | + public void setAppCode(String appCode) { |
|---|
| 167 | + this.appCode = appCode; |
|---|
| 149 | 168 | } |
|---|
| 150 | 169 | } |
|---|