/** * Deletes a duplicated entry * * @param duplicateNameEntry the duplicated entry to delete */ public void deleteInDuplicateEntry(DuplicateNameEntry duplicateNameEntry) { duplicateEntryRepository.delete(duplicateNameEntry); }
/** * Duplicates all the name entry plus the duplicates */ public void deleteAllAndDuplicates() { nameEntryRepository.deleteAll(); duplicateEntryRepository.deleteAll(); //TODO introduce an event that all names have been deleted }
/** * Used to retrieve the duplicate entries for the given name string * * @param name the name * @return a list of {@link org.oruko.dictionary.model.DuplicateNameEntry} */ public List<DuplicateNameEntry> loadNameDuplicates(String name) { return duplicateEntryRepository.findByName(name); }
/** * /** * Updates the properties with values from another {@link org.oruko.dictionary.model.NameEntry} * * @param oldEntry the entry to be updated * @param newEntry the entry with the new value * @return the updated entry */ public NameEntry updateName(NameEntry oldEntry, NameEntry newEntry) { String oldEntryName = oldEntry.getName(); // update main entry oldEntry.update(newEntry); List<DuplicateNameEntry> oldDuplicateNames = duplicateEntryRepository.findByName(oldEntryName); // update all duplicate entries oldDuplicateNames.forEach(duplicateNameEntry -> { duplicateNameEntry.setName(newEntry.getName()); duplicateEntryRepository.save(duplicateNameEntry); }); return nameEntryRepository.save(oldEntry); }
duplicateEntryRepository.save(new DuplicateNameEntry(nameEntry)); status.incrementNumberOfNames(); } else {
/** * Deletes multiple name entries and their duplicates * @param names a list of names to delete their entries and their duplicates */ public void batchDeleteNameEntryAndDuplicates(List<String> names) { int i = 0; for (String name: names ) { this.deleteNameEntryAndDuplicates(name); i++; if (i == BATCH_SIZE) { nameEntryRepository.flush(); duplicateEntryRepository.flush(); i = 0; } } }
/** * Adds a new name if not present. If already present, adds the name to the * duplicate table. * * @param entry */ public void insertTakingCareOfDuplicates(NameEntry entry) { String name = entry.getName(); if (!namePresentAsVariant(name)) { if (alreadyExists(name)) { duplicateEntryRepository.save(new DuplicateNameEntry(entry)); } else { nameEntryRepository.save(entry); } } else { throw new RepositoryAccessError("Given name already exists as a variant entry"); } }
/** * Updates the properties of a list of names with values from another list of name entries * * @param nameEntries the new entries * @return the updated entries */ public List<NameEntry> bulkUpdateNames(List<NameEntry> nameEntries) { List<NameEntry> updated = new ArrayList<>(); int i = 0; for (NameEntry nameEntry : nameEntries) { NameEntry oldEntry = this.loadName(nameEntry.getName()); updated.add(this.updateName(oldEntry, nameEntry)); i++; if (i == BATCH_SIZE) { nameEntryRepository.flush(); duplicateEntryRepository.flush(); i = 0; } } return updated; }
/** * Duplicates a name entry plus its duplicates * @param name the name to delete */ public void deleteNameEntryAndDuplicates(String name) { NameEntry nameEntry = nameEntryRepository.findByName(name); nameEntryRepository.delete(nameEntry); duplicateEntryRepository.delete(new DuplicateNameEntry(nameEntry)); }