diff --git a/process/DuplicateScanner_lib/process.js b/process/DuplicateScanner_lib/process.js index 947fc3fd575f754268a3b3d0a01d081f1a00b219..1e0b5769a9ad485062aa16be4ee12958c78ecc1c 100644 --- a/process/DuplicateScanner_lib/process.js +++ b/process/DuplicateScanner_lib/process.js @@ -163,11 +163,10 @@ DuplicateScannerUtils.CreateUnrelatedDuplicateRelation = function(pSourceContact */ DuplicateScannerUtils.GetClusterId = function(pDuplicateId) { - let duplicateIdsOfClusterWithoutUnrelated = SqlCondition.begin() - .and("DUPLICATECLUSTERS.DUPLICATEID = '" + pDuplicateId + "'") - .buildSql("select CLUSTERID from DUPLICATECLUSTERS"); - - return db.cell(duplicateIdsOfClusterWithoutUnrelated); + return newSelect("CLUSTERID") + .from("DUPLICATECLUSTERS") + .where("DUPLICATECLUSTERS.DUPLICATEID", pDuplicateId) + .cell(); } /* @@ -179,12 +178,9 @@ DuplicateScannerUtils.GetClusterId = function(pDuplicateId) */ DuplicateScannerUtils.DeleteUnrelatedDuplicateRelation = function(pSourceDuplicateId, pUnrelatedDuplicateId) { - var cond = new SqlCondition(); - cond.andPrepare("UNRELATEDDUPLICATES.SOURCEDUPLICATEID", pSourceDuplicateId) - cond.andPrepare("UNRELATEDDUPLICATES.UNRELATEDDUPLICATEID", pUnrelatedDuplicateId) - let condition = db.translateCondition(cond.build()); - - return db.deleteData("UNRELATEDDUPLICATES", condition); + return newWhere("UNRELATEDDUPLICATES.SOURCEDUPLICATEID", pSourceDuplicateId) + .and("UNRELATEDDUPLICATES.UNRELATEDDUPLICATEID", pUnrelatedDuplicateId) + .deleteData(true, "UNRELATEDDUPLICATES"); } /* @@ -195,12 +191,7 @@ DuplicateScannerUtils.DeleteUnrelatedDuplicateRelation = function(pSourceDuplica */ DuplicateScannerUtils.DeleteAllUnrelatedDuplicateRelations = function(pDuplicateId) { - var cond = new SqlCondition(); - cond.orPrepare("UNRELATEDDUPLICATES.SOURCEDUPLICATEID", pDuplicateId) - cond.orPrepare("UNRELATEDDUPLICATES.UNRELATEDDUPLICATEID", pDuplicateId) - let condition = db.translateCondition(cond.build()); - - return db.deleteData("UNRELATEDDUPLICATES", condition); + DuplicateScannerUtils.DeleteUnrelatedDuplicateRelation(pDuplicateId, pDuplicateId) } /* @@ -211,14 +202,22 @@ DuplicateScannerUtils.DeleteAllUnrelatedDuplicateRelations = function(pDuplicate */ DuplicateScannerUtils.GetCachedDuplicatesForDuplicateId = function(pDuplicateId) { - let querySelectDuplicateContactIds = "select DUPLICATEID from DUPLICATECLUSTERS" - + " where CLUSTERID in (select CLUSTERID from DUPLICATECLUSTERS" - + " where DUPLICATEID = '"+ pDuplicateId +"')" - + " and DUPLICATEID != '"+ pDuplicateId +"'" - + " and DUPLICATEID not in (select UNRELATEDDUPLICATEID from UNRELATEDDUPLICATES where SOURCEDUPLICATEID = '"+ pDuplicateId +"')" - + " and DUPLICATEID not in (select SOURCEDUPLICATEID from UNRELATEDDUPLICATES where UNRELATEDDUPLICATEID = '"+ pDuplicateId +"')"; - - return db.array(db.COLUMN, querySelectDuplicateContactIds); + return newSelect("DUPLICATEID") + .from("DUPLICATECLUSTERS") + .where("DUPLICATECLUSTERS.CLUSTERID", newSelect("CLUSTERID") + .from("DUPLICATECLUSTERS") + .where("DUPLICATECLUSTERS.DUPLICATEID", pDuplicateId), + SqlBuilder.IN()) + .and("DUPLICATECLUSTERS.DUPLICATEID", pDuplicateId, "# != ?") + .and("DUPLICATECLUSTERS.DUPLICATEID", newSelect("UNRELATEDDUPLICATEID") + .from("UNRELATEDDUPLICATES") + .where("UNRELATEDDUPLICATES.SOURCEDUPLICATEID", pDuplicateId), + SqlBuilder.NOT_IN()) + .and("DUPLICATECLUSTERS.DUPLICATEID", newSelect("SOURCEDUPLICATEID") + .from("UNRELATEDDUPLICATES") + .where("UNRELATEDDUPLICATES.UNRELATEDDUPLICATEID", pDuplicateId), + SqlBuilder.NOT_IN()) + .arrayColumn(); } /* @@ -229,15 +228,12 @@ DuplicateScannerUtils.GetCachedDuplicatesForDuplicateId = function(pDuplicateId) */ DuplicateScannerUtils.GetCachedDuplicatesForClusterId = function(pClusterId) { - let clusterIdRay = []; - clusterIdRay.push(pClusterId); - - let duplicateIdsOfClusterWithoutUnrelated = SqlCondition.begin() - .and("DUPLICATEID not in (select UNRELATEDDUPLICATES.UNRELATEDDUPLICATEID from UNRELATEDDUPLICATES)") - .and("DUPLICATECLUSTERS.CLUSTERID = '" + clusterIdRay + "'") - .buildSql("select DUPLICATEID from DUPLICATECLUSTERS"); - - return db.array(db.COLUMN, duplicateIdsOfClusterWithoutUnrelated); + return newSelect("DUPLICATEID") + .from("DUPLICATECLUSTERS") + .where("DUPLICATECLUSTERS.DUPLICATEID", newSelect("UNRELATEDDUPLICATEID").from("UNRELATEDDUPLICATES"), + SqlBuilder.NOT_IN()) + .and("DUPLICATECLUSTERS.CLUSTERID", clusterIdRay) + .arrayColumn(); } /* @@ -343,7 +339,6 @@ DuplicateScannerUtils.ScanRecords = function(pTargetEntity, pTargetRecordsData, var duplicatesToInsertQueries = []; for (b = 0; b < pTargetRecordsData.length; b++) { - let entityFieldValuesRay = DuplicateScannerUtils.BuildEntityFieldConfigValueRays(pEntityFieldConfigs, pTargetRecordsData[b]); //The first field in this Array must always be the configured id field. This is ensured using onValidation-logic @@ -434,24 +429,26 @@ DuplicateScannerUtils.GetClusterWithIdenticalDuplicates = function(pDuplicateIds if(pDuplicateIds.length < 1) return RESULT_NO_CLUSTER_FOUND; - let clusterIdConditionBuilder = SqlCondition.begin(); + let clusterIdSelect = newSelect("distinct CLUSTERID") + .from("DUPLICATECLUSTERS") + .where(); for (let i = 0; i < pDuplicateIds.length; i++) { - clusterIdConditionBuilder.andSqlCondition("CLUSTERID in (select CLUSTERID from DUPLICATECLUSTERS where DUPLICATEID = '" + pDuplicateIds[i] + "')", "1=2") + clusterIdSelect.and("DUPLICATECLUSTERS.CLUSTERID", newSelect("CLUSTERID").from("DUPLICATECLUSTERS").where("DUPLICATECLUSTERS.DUPLICATEID", pDuplicateIds[i]), + SqlBuilder.IN()); } - - clusterIdCondition = clusterIdConditionBuilder.buildSql("select distinct CLUSTERID from DUPLICATECLUSTERS", "1=2"); - let foundClusterId = db.cell(clusterIdCondition); + let foundClusterId = clusterIdSelect.cell(); if(foundClusterId == null || foundClusterId == "") return RESULT_NO_CLUSTER_FOUND; - let duplicatesInClusterCondition = SqlCondition.begin() - .andPrepare("DUPLICATECLUSTERS.CLUSTERID", foundClusterId) - .buildSql("select DUPLICATEID from DUPLICATECLUSTERS"); - let duplicatesInCluster = db.array(db.COLUMN, duplicatesInClusterCondition); + let duplicatesInCluster = newSelect("DUPLICATEID") + .from("DUPLICATECLUSTERS") + .where("DUPLICATECLUSTERS.CLUSTERID", foundClusterId) + .arrayColumn(); + /* * A cluster has been searched which contains all duplicate ids as specified via parameter. * There's the possibility that this cluster contains even more duplicates than specified via the parameter. @@ -482,13 +479,12 @@ DuplicateScannerUtils.LoadEntityRecords = function(pTargetEntity, pEntityFields, */ DuplicateScannerUtils.LoadResultFields = function(pFilterName, pTargetEntity) { - let duplicateResultFields = SqlCondition.begin() - .andPrepare("DUPLICATESCANNER.FILTER_NAME", pFilterName) - .andPrepare("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity) - .buildSql("select dsrfc.ENTITY_FIELD_NAME from DUPLICATESCANNERRESULTFIELDCONFIG dsrfc join DUPLICATESCANNER on DUPLICATESCANNER.ID = dsrfc.DUPLICATESCANNER_ID" - , "1=2"); - - return db.array(db.COLUMN, duplicateResultFields); + return newSelect("dsrfc.ENTITY_FIELD_NAME") + .from("DUPLICATESCANNERRESULTFIELDCONFIG dsrfc") + .join("DUPLICATESCANNER", "DUPLICATESCANNER.ID = dsrfc.DUPLICATESCANNER_ID") + .where("DUPLICATESCANNER.FILTER_NAME", pFilterName) + .and("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity) + .arrayColumn(); } /* @@ -676,10 +672,10 @@ DuplicateScannerUtils.MergeOrganisation = function(pSourceContactId, pTargetCont let updateStatementsSystemAlias = []; let deleteStatements = []; - let querySourceOrganisationId = SqlCondition.begin() - .and("CONTACTID = '" + pSourceContactId + "'") - .buildSql("select ORGANISATION_ID from CONTACT"); - var sourceOrganisationId = db.cell(querySourceOrganisationId); + var sourceOrganisationId = newSelect("ORGANISATION_ID") + .from("CONTACT") + .where("CONTACT.CONTACTID", pSourceContactId) + .cell(); var tableInfosCurrentAlias = _DuplicateScannerUtils._getMergeUpdateTableInfosCurrentAlias(); var tableInfosSystemAlias = _DuplicateScannerUtils._getMergeUpdateTableInfosSystemAlias(); @@ -801,14 +797,12 @@ _DuplicateScannerUtils._buildUpdateResetStandardCommunications = function(pSourc */ _DuplicateScannerUtils._loadIndexPattern = function(pScannerName, pTargetEntity) { - let scanPatternQuery = SqlCondition.begin() - .and("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME = '" + pTargetEntity + "'") - .and("DUPLICATESCANNER.FILTER_NAME = '" + pScannerName + "'") - .buildSql("select SCAN_PATTERN from DUPLICATESCANNER"); - - let scanPattern = db.cell(scanPatternQuery); + let scanPattern = newSelect("SCAN_PATTERN") + .from("DUPLICATESCANNER") + .where("DUPLICATESCANNER.FILTER_NAME", pScannerName) + .and("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity) + .cell(); scanPattern = scanPattern.trim(); - return scanPattern; } @@ -835,12 +829,11 @@ _DuplicateScannerUtils._replacePlaceholderForValuesInPattern = function(pIndexPa _DuplicateScannerUtils._loadEntityIdField = function(pFilterName, pTargetEntity) { - let loadEntityIdFieldQuery = SqlCondition.begin() - .andPrepare("DUPLICATESCANNER.FILTER_NAME", pFilterName) - .andPrepare("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity) - .buildSql("select ID_FIELD_NAME from DUPLICATESCANNER", "1=2"); - - return db.cell(loadEntityIdFieldQuery); + return newSelect("ID_FIELD_NAME") + .from("DUPLICATESCANNER") + .where("DUPLICATESCANNER.FILTER_NAME", pFilterName) + .and("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity) + .cell(); } /* @@ -881,13 +874,11 @@ pResultFields, pRecordIdFieldToIgnore, pRecordIdValueToIgnore, pFormatValuesCons */ _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"); - - let isUseWebservice = db.cell(scannerUseExternalWebserviceQuery); + let isUseWebservice = newSelect("EXTERNAL_SERVICE_USAGE_ALLOWED") + .from("DUPLICATESCANNER") + .where("DUPLICATESCANNER.FILTER_NAME", pFilterName) + .and("DUPLICATESCANNER.ENTITY_TO_SCAN_NAME", pTargetEntity) + .cell(); return (isUseWebservice == 0) ? false : true; } @@ -1154,8 +1145,7 @@ _DuplicateScannerUtils._getMergeUpdateTableInfosCurrentAlias = function() tableInfos.push(["ACTIVITY", "RESPONSIBLE", ""]); tableInfos.push(["DSGVO", "CONTACT_ID", ""]); tableInfos.push(["DSGVOINFO", "CONTACT_ID", ""]); - tableInfos.push(["T\n\ -IMETRACKING", "CONTACT_ID", ""]); + tableInfos.push(["TIMETRACKING", "CONTACT_ID", ""]); tableInfos.push(["ACTIVITYLINK", "OBJECT_ROWID", ""]); tableInfos.push(["AB_ATTRIBUTERELATION", "OBJECT_ROWID", ""]);