From 7d8713e88c7872b195f7e4d02ac4812536ae196b Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Tue, 22 Sep 2015 13:53:51 +0000
Subject: [PATCH] #2756 feature - Added lic activation using activationCode

---
 src/main/java/net/curisit/securis/beans/RequestBean.java |   71 ++++++++++++++++++++++-------------
 1 files changed, 45 insertions(+), 26 deletions(-)

diff --git a/src/main/java/net/curisit/securis/beans/RequestBean.java b/src/main/java/net/curisit/securis/beans/RequestBean.java
index 369a355..3b206dd 100644
--- a/src/main/java/net/curisit/securis/beans/RequestBean.java
+++ b/src/main/java/net/curisit/securis/beans/RequestBean.java
@@ -2,9 +2,7 @@
 
 import java.util.Collections;
 import java.util.List;
-
-import net.curisit.securis.SeCurisException;
-import net.curisit.securis.utils.JsonUtils;
+import java.util.Objects;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;
@@ -14,9 +12,11 @@
 @JsonAutoDetect
 @JsonInclude(Include.NON_NULL)
 @JsonPropertyOrder({
-        "licenseTypeCode", "packCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo"
+        "appCode", "activationCode", "licenseTypeCode", "packCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo"
 })
 public class RequestBean {
+    private String appCode;
+    private String activationCode;
     private String customerCode;
     private String crcLogo;
     private String licenseTypeCode;
@@ -24,6 +24,14 @@
     private List<String> macAddresses;
     private String osName;
     private String arch;
+
+    public String getActivationCode() {
+        return activationCode;
+    }
+
+    public void setActivationCode(String activationCode) {
+        this.activationCode = activationCode;
+    }
 
     public String getCustomerCode() {
         return customerCode;
@@ -48,9 +56,9 @@
     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
-    	if (macAddresses != null) {
-    		Collections.<String> sort(macAddresses);
-    	}
+        if (macAddresses != null) {
+            Collections.<String> sort(macAddresses);
+        }
         this.macAddresses = macAddresses;
     }
 
@@ -71,13 +79,21 @@
     }
 
     public boolean match(RequestBean rb) {
+        boolean result = true;
+        if (activationCode != null) {
+            result = result && activationCode.equals(rb.activationCode);
+            // appCode is optional
+            result = result && (appCode == null || appCode.equals(rb.appCode));
+        } else {
+            // If activationCode exists then we ignore other license identifiers
+            result = result && licenseTypeCode != null && licenseTypeCode.equals(rb.licenseTypeCode);
+            result = result && (customerCode != null && customerCode.equals(rb.customerCode));
+            result = result && (packCode != null && packCode.equals(rb.packCode));
+        }
 
-        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());
 
@@ -95,6 +111,8 @@
     @Override
     public int hashCode() {
         int code = 0;
+        code += appCode != null ? appCode.hashCode() : 0;
+        code += activationCode != null ? activationCode.hashCode() : 0;
         code += licenseTypeCode != null ? licenseTypeCode.hashCode() : 0;
         code += arch != null ? arch.hashCode() : 0;
         code += crcLogo != null ? crcLogo.hashCode() : 0;
@@ -111,14 +129,17 @@
         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)));
+
+        boolean result = true;
+        result = result && Objects.equals(appCode, rb.appCode);
+        result = result && Objects.equals(activationCode, rb.activationCode);
+        result = result && Objects.equals(licenseTypeCode, rb.licenseTypeCode);
+        result = result && Objects.equals(packCode, rb.packCode);
+        result = result && Objects.equals(arch, rb.arch);
+        result = result && Objects.equals(crcLogo, rb.crcLogo);
+        result = result && Objects.equals(customerCode, rb.customerCode);
+        result = result && Objects.equals(osName, rb.osName);
+        result = result && Objects.equals(macAddresses, rb.macAddresses);
         return result;
     }
 
@@ -138,13 +159,11 @@
         this.licenseTypeCode = licenseTypeCode;
     }
 
-    public static void main(String[] args) {
-        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}";
-        try {
-            JsonUtils.json2object(requestData, RequestBean.class);
-        } catch (SeCurisException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
+    public String getAppCode() {
+        return appCode;
+    }
+
+    public void setAppCode(String appCode) {
+        this.appCode = appCode;
     }
 }

--
Gitblit v1.3.2