This commit is contained in:
Michele Artini 2021-05-06 08:46:17 +02:00
parent 425bfe65dc
commit 17854b56d9
1 changed files with 19 additions and 11 deletions

View File

@ -225,6 +225,7 @@ public class DatabaseUtils {
if (r2.getLocalId().startsWith(OpenOrgsConstants.OPENORGS_PENDING_PREFIX)) { if (r2.getLocalId().startsWith(OpenOrgsConstants.OPENORGS_PENDING_PREFIX)) {
toDelete.add(r2); toDelete.add(r2);
} else if (!r1.getLocalId().equals(r2.getLocalId())) { } else if (!r1.getLocalId().equals(r2.getLocalId())) {
r2.setRelType(SimilarityType.is_different.toString());
toSave.add(r2); toSave.add(r2);
} }
} }
@ -236,23 +237,30 @@ public class DatabaseUtils {
openaireDuplicateRepository.updateCreatedByIfMissing(d.getLocalId(), d.getOaOriginalId(), user); openaireDuplicateRepository.updateCreatedByIfMissing(d.getLocalId(), d.getOaOriginalId(), user);
openaireDuplicateRepository.updateModificationDate(d.getLocalId(), d.getOaOriginalId(), user, now); 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 // delete rels to pending orgs
openaireDuplicateRepository.deleteAll(toDelete); 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() // Updating journal
.filter(d -> d.getRelType().equals(SimilarityType.is_similar.toString())) toSave.stream().collect(Collectors.groupingBy(OpenaireDuplicate::getLocalId)).forEach((id, list) -> {
.count(), simrels.stream() 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())) .filter(d -> d.getRelType().equals(SimilarityType.is_different.toString()))
.count(), simrels.stream().filter(d -> d.getRelType().equals(SimilarityType.suggested.toString())).count()); .count();
simrels.stream() final long sugg = list.stream()
.map(OpenaireDuplicate::getLocalId) .filter(d -> d.getRelType().equals(SimilarityType.suggested.toString()))
.distinct() .count();
.map(id -> new JournalEntry(id, JournalOperations.DUPLICATES, message, user))
.forEach(journalEntryRepository::save); 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) @Scheduled(fixedRate = 300000)