rsanchez
2014-12-01 e9297cfa6b7b86ffdfa1d10609295771c9b00e18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package net.curisit.securis.beans;
import java.util.Collections;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonAutoDetect
@JsonInclude(Include.NON_NULL)
@JsonPropertyOrder({
        "appName", "licenseTypeCode", "packCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo"
})
public class RequestBean {
    private String customerCode;
    private String crcLogo;
    private String licenseTypeCode;
    private String packCode;
    private List<String> 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<String> getMacAddresses() {
        return macAddresses;
    }
    public void setMacAddresses(List<String> macAddresses) {
        // We need to be sure that the same mac addresses are always shown in
        // the same order, to generate a valid hash
        Collections.<String> sort(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<String> 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;
    }
}