From dbfe335efffe9bbfcd9f42cadd66a159c5a356c1 Mon Sep 17 00:00:00 2001
From: "d.buechler" <d.buechler@adito.de>
Date: Fri, 20 Sep 2019 10:56:57 +0200
Subject: [PATCH] The flag if an external webservice should be used is now used
 in the code. If true, the parameterized callbackfunction gets called. See
 DuplicateScannerUtils._isUseExternalWebservice

---
 process/DuplicateScanner_lib/process.js | 49 +++++++++++++------------
 1 file changed, 26 insertions(+), 23 deletions(-)

diff --git a/process/DuplicateScanner_lib/process.js b/process/DuplicateScanner_lib/process.js
index 655259211f..7b7760625c 100644
--- a/process/DuplicateScanner_lib/process.js
+++ b/process/DuplicateScanner_lib/process.js
@@ -235,6 +235,8 @@ pQueryTargetRecords, pDuplicateFieldsConfig, pCallExternalWebserviceFunction)
     logging.log("in RebuildDuplicatesCache -> ");
     let alreadyIdentifiedIds = [];
     let targetRecordsData = db.table(pQueryTargetRecords);
+    let useExternalWebservice = DuplicateScannerUtils._isUseExternalWebservice(pFilterName, pTargetEntity);
+    logging.log("useExternalWebservice -> " + useExternalWebservice);
     logging.log("targetRecordsData -> " + JSON.stringify(targetRecordsData));
     
     //If the contact id loading query has no results, stop. 
@@ -271,7 +273,7 @@ pQueryTargetRecords, pDuplicateFieldsConfig, pCallExternalWebserviceFunction)
         logging.log("idValue -> " + idValue);
         
         let foundDuplicates = DuplicateScannerUtils.ScanForDuplicates(pFilterName, pTargetEntity,
-                                entityFieldValuesRay, resultFields, idField, idValue, pCallExternalWebserviceFunction)
+                                entityFieldValuesRay, resultFields, idField, idValue, pCallExternalWebserviceFunction, useExternalWebservice)
         
         //        logging.log("foundDuplicates -> " + JSON.stringify(foundDuplicates));
         logging.log("foundDuplicates -> " + foundDuplicates);
@@ -379,9 +381,21 @@ DuplicateScannerUtils._loadResultFields = function(pFilterName, pTargetEntity)
     return db.array(db.COLUMN, duplicateResultFields);
 }
 
+DuplicateScannerUtils._isUseExternalWebservice = function(pFilterName, pTargetEntity)
+{
+    let scannerUseExternalWebserviceQuery = SqlCondition.begin()
+        .andPrepare("DUPLICATESCANNER.FILTER_NAME", pFilterName)
+        .andPrepare("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity)
+        .buildSql("select EXTERNAL_SERVICE_USAGE_ALLOWED from DUPLICATESCANNER"
+        , "1=2");
+    
+    logging.log("scannerUseExternalWebserviceQuery -> " + scannerUseExternalWebserviceQuery);
+    let isUseWebservice = db.cell(scannerUseExternalWebserviceQuery);
+    return (isUseWebservice == 0) ? false : true;
+}
 
 DuplicateScannerUtils.ScanForDuplicates = function(pFilterName, pTargetEntity, pFilterFieldValueRays,
-pTargetEntityResultFields, pRecordIdFieldToIgnore, pRecordIdValueToIgnore, pCallExternalWebserviceFunction)
+pTargetEntityResultFields, pRecordIdFieldToIgnore, pRecordIdValueToIgnore, pCallExternalWebserviceFunction, pUseExternalWebservice)
 {
     let possibleDuplicates = [];
     let ignoredRecordFilter = _DuplicateScannerUtils._getIgnoreRecordFilter(pRecordIdFieldToIgnore, pRecordIdValueToIgnore, pTargetEntity);
@@ -398,29 +412,18 @@ pTargetEntityResultFields, pRecordIdFieldToIgnore, pRecordIdValueToIgnore, pCall
     if(preFilter == null)
         return null;
     
-    let useExternalWebservice = false;//todo
+    possibleDuplicates = DuplicateScannerUtils._callIndexSearch(pTargetEntity, preFilter, pFilterFieldValueRays, pTargetEntityResultFields, 100);
+    possibleDuplicates = possibleDuplicates[indexsearch.HITS];
     
-    if(useExternalWebservice)
-    {
-        possibleDuplicates = DuplicateScannerUtils._callIndexSearch(pTargetEntity, preFilter, pFilterFieldValueRays, pTargetEntityResultFields, 100);
-        possibleDuplicates = possibleDuplicates[indexsearch.HITS];
-        
-        if(possibleDuplicates.length > 0)
-            possibleDuplicates = pCallExternalWebserviceFunction.apply(this, [possibleDuplicates]);
-    }
-    else
-    {
-        logging.log("pTargetEntity -> " + pTargetEntity);
-        logging.log("preFilter -> " + preFilter);
-        logging.log("pFilterFieldValueRays -> " + pFilterFieldValueRays);
-        logging.log("pRecordIdFieldToIgnore -> " + pRecordIdFieldToIgnore);
-        
-        //(pTargetEntity, pPreFilterJson, pEntityFieldValueRays, pResultIndexFields, pResultFields, pResultSetRows)
-        //run actual index duplicate search
-        possibleDuplicates = DuplicateScannerUtils._callIndexSearch(pTargetEntity, preFilter, pFilterFieldValueRays, pTargetEntityResultFields, 100);
-        possibleDuplicates = possibleDuplicates[indexsearch.HITS];
-    }
+    if(pUseExternalWebservice && possibleDuplicates.length > 0 && pCallExternalWebserviceFunction != null)
+        possibleDuplicates = pCallExternalWebserviceFunction.apply(this, [possibleDuplicates]);
+
+    logging.log("pTargetEntity -> " + pTargetEntity);
+    logging.log("preFilter -> " + preFilter);
+    logging.log("pFilterFieldValueRays -> " + pFilterFieldValueRays);
+    logging.log("pRecordIdFieldToIgnore -> " + pRecordIdFieldToIgnore);
     logging.log("possibleDuplicates -> " + possibleDuplicates);
+
     return possibleDuplicates;
 }
 
-- 
GitLab