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)) {
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)