diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java index 6071b0d4..30301239 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/repository/OrganizationRepository.java @@ -22,9 +22,10 @@ public interface OrganizationRepository extends JpaRepository persistents = views.stream().filter(v -> v.getPersistent()).collect(Collectors.toList()); + final OrganizationView masterOrg = new OrganizationView(); + if (persistents.size() > 1) { throw new RuntimeException("Too many persintent organizations"); } else if (persistents.size() == 1) { backupOrg(persistents.get(0), user); - return fixConflicts(persistents.get(0), views, user); + masterOrg.setId(persistents.get(0).getId()); + masterOrg.setStatus(OrganizationStatus.approved.toString()); } else { - // I create a new org - final OrganizationView masterOrg = new OrganizationView(); masterOrg.setId(null); masterOrg.setStatus(null); - return fixConflicts(masterOrg, views, user); } + return fixConflicts(masterOrg, views, user); } private String backupOrg(final OrganizationView org, final String user) { final String origId = org.getId(); final String backupId = origId + "::" + OffsetDateTime.now().toEpochSecond(); + organizationRepository.prepareOrgWithId(backupId); try { final OrganizationView backupOrg = (OrganizationView) BeanUtils.cloneBean(org); backupOrg.setId(backupId); - backupOrg.setStatus(OrganizationStatus.hidden.toString()); insertOrUpdateOrganization(backupOrg, user, false); + organizationRepository.updateStatus(backupId, OrganizationStatus.hidden.toString()); + journalEntryRepository .save(new JournalEntry(origId, JournalOperations.BACKUP_ORG, "Saved a backup copy: " + backupId, user)); journalEntryRepository @@ -560,7 +563,7 @@ public class DatabaseUtils { .forEach(id -> { hideConflictOrgs(masterId, id); journalEntryRepository - .save(new JournalEntry(masterId, JournalOperations.FIX_CONFLICT, "The org has been hidded and merged in " + masterId, user)); + .save(new JournalEntry(id, JournalOperations.FIX_CONFLICT, "The org has been hidded and merged in " + masterId, user)); }); // I reassign the duplicates to the new org