diff --git a/entity/Duplicates_entity/Duplicates_entity.aod b/entity/Duplicates_entity/Duplicates_entity.aod index 5a57d290642bc78016c2b480dd023bd23731ab48..c3fcb61abfd7f1e3b9caf6dd72baf3c69bb494cb 100644 --- a/entity/Duplicates_entity/Duplicates_entity.aod +++ b/entity/Duplicates_entity/Duplicates_entity.aod @@ -10,9 +10,12 @@ </entityProvider> <entityField> <name>CLUSTER_DESCRIPTION</name> + <title>Cluster description</title> </entityField> <entityField> <name>COUNT_DUPLICATES_IN_CLUSTER</name> + <title>Count duplicates in cluster</title> + <contentType>NUMBER</contentType> </entityField> <entityField> <name>TARGET_ENTITY</name> diff --git a/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js b/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js index adde01802a3fa49da36bebdc3c9e905ab86022ea..3626ae33b7518c37dd99f673d7375da0e0c89297 100644 --- a/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js +++ b/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js @@ -1,12 +1,59 @@ +import("system.db"); import("system.vars"); import("system.result"); +var INDEX_ID = 0; +var INDEX_CLUSTERID = 1; +var INDEX_FIRSTNAME = 2; +var INDEX_LASTNAME = 3; + let targetEntity = vars.get("$param.TargetEntity"); let duplicates = []; if(targetEntity == "Person_entity") { - duplicates.push([123, "Description of person cluster", 4, "Person_entity"]); + //duplicates.push([123, "Description of person cluster", 4, "Person_entity"]); + + let personInfosQuery = "select DUPLICATECLUSTERS.ID, CLUSTERID, FIRSTNAME, LASTNAME" + + " from DUPLICATECLUSTERS" + + " join CONTACT on CONTACT.CONTACTID = DUPLICATEID" + + " join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID" + + " ORDER BY CLUSTERID"; + let personInfos = db.table(personInfosQuery); + + let recordClusterId = ""; + let recordDescription = ""; + let recordDuplicateInClusterCount = 0; + + for (let i = 0; i < personInfos.length; i++) + { + let currentClusterId = personInfos[i][INDEX_CLUSTERID]; + let currentDescription = personInfos[i][INDEX_FIRSTNAME] + " " + personInfos[i][INDEX_LASTNAME]; + + if(i == 0) + { + recordClusterId = currentClusterId; + recordDescription = currentDescription; + recordDuplicateInClusterCount = 1; + continue; + } + + if(recordClusterId == currentClusterId) + { + recordDescription += ", " + currentDescription; + recordDuplicateInClusterCount++; + } + else + { + let currentRecordId = personInfos[i][INDEX_ID]; + duplicates.push([currentRecordId, recordDescription, recordDuplicateInClusterCount, "Person_entity"]); + + recordClusterId = currentClusterId + recordDescription = currentDescription + recordDuplicateInClusterCount = 1; + } + } + } else if(targetEntity == "Organisation_entity") { diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod index be3fc312138c898f8dcaf167cf64cffa1a9e665e..aa244f7a44f3dbd3db082b92a6b8b0a9d27b5b71 100644 --- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod +++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod @@ -11,6 +11,9 @@ <tableViewTemplate> <name>PersonDuplicatesTable</name> <entityField>#ENTITY</entityField> + <isCreatable v="false" /> + <isEditable v="false" /> + <isDeletable v="false" /> <columns> <neonTableColumn> <name>7508e984-6a0b-4126-ab49-452e2b54f76d</name>