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 e0decb86..c149f849 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 @@ -225,6 +225,7 @@ public class DatabaseUtils { if (r2.getLocalId().startsWith(OpenOrgsConstants.OPENORGS_PENDING_PREFIX)) { toDelete.add(r2); } else if (!r1.getLocalId().equals(r2.getLocalId())) { + r2.setRelType(SimilarityType.is_different.toString()); toSave.add(r2); } } @@ -236,23 +237,30 @@ public class DatabaseUtils { openaireDuplicateRepository.updateCreatedByIfMissing(d.getLocalId(), d.getOaOriginalId(), user); openaireDuplicateRepository.updateModificationDate(d.getLocalId(), d.getOaOriginalId(), user, now); }); - log.info("Simrels saved (contains also the fixed rels): " + toSave.size()); + log.debug("Simrels saved (contains also the fixed rels): " + toSave.size()); // delete rels to pending orgs openaireDuplicateRepository.deleteAll(toDelete); - log.info("Simrels related to a pending orgs deleted: " + toDelete.size()); + log.debug("Simrels related to a pending orgs deleted: " + toDelete.size()); - final String message = String.format("Duplicates updated (%s similars, %s differents, %s suggested)", simrels.stream() - .filter(d -> d.getRelType().equals(SimilarityType.is_similar.toString())) - .count(), simrels.stream() + // Updating journal + toSave.stream().collect(Collectors.groupingBy(OpenaireDuplicate::getLocalId)).forEach((id, list) -> { + final long sim = list.stream() + .filter(d -> d.getRelType().equals(SimilarityType.is_similar.toString())) + .count(); + + final long diff = list.stream() .filter(d -> d.getRelType().equals(SimilarityType.is_different.toString())) - .count(), simrels.stream().filter(d -> d.getRelType().equals(SimilarityType.suggested.toString())).count()); + .count(); - simrels.stream() - .map(OpenaireDuplicate::getLocalId) - .distinct() - .map(id -> new JournalEntry(id, JournalOperations.DUPLICATES, message, user)) - .forEach(journalEntryRepository::save); + final long sugg = list.stream() + .filter(d -> d.getRelType().equals(SimilarityType.suggested.toString())) + .count(); + + final String message = String.format("Duplicates updated (%s similars, %s differents, %s suggested)", sim, diff, sugg); + + journalEntryRepository.save(new JournalEntry(id, JournalOperations.DUPLICATES, message, user)); + });; } @Scheduled(fixedRate = 300000)