From 01fd913c1da1a081ab9a7748f5eacc4ccafb8138 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Tue, 9 Nov 2021 11:28:03 +0100 Subject: [PATCH] force is_similar to clone duplicate --- .../organizations/utils/DatabaseUtils.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java index 4002421d..bc13b26f 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/utils/DatabaseUtils.java @@ -17,6 +17,7 @@ import java.util.stream.Collectors; import javax.transaction.Transactional; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -159,7 +160,7 @@ public class DatabaseUtils { final List dups = openaireDuplicateRepository.findByLocalId(oldId) .stream() - .map(d -> new OpenaireDuplicate(newId, d.getOaOriginalId(), SimilarityType.suggested.toString(), d.getOaCollectedFrom())) + .map(d -> prepareNewDuplicate(newId, oldId, d)) .collect(Collectors.toList()); openaireDuplicateRepository.saveAll(dups); @@ -209,6 +210,25 @@ public class DatabaseUtils { return newId; } + private OpenaireDuplicate prepareNewDuplicate(final String newId, final String oldId, final OpenaireDuplicate old) { + final OpenaireDuplicate d = new OpenaireDuplicate(); + + d.setLocalId(newId); + d.setOaOriginalId(old.getOaOriginalId()); + d.setOaCollectedFrom(old.getOaCollectedFrom()); + + if (oldId != null + && newId.startsWith(OpenOrgsConstants.OPENORGS_PREFIX) + && oldId.startsWith(OpenOrgsConstants.OPENORGS_PENDING_PREFIX) + && StringUtils.substringAfter(oldId, OpenOrgsConstants.OPENORGS_PENDING_PREFIX).equalsIgnoreCase(DigestUtils.md5Hex(d.getOaOriginalId()))) { + d.setRelType(SimilarityType.is_similar.toString()); + } else { + d.setRelType(SimilarityType.suggested.toString()); + } + return d; + + } + @Transactional public void saveDuplicates(final List simrels, final String user) { final OffsetDateTime now = OffsetDateTime.now();