/** * Adds a list of names in bulk if not present. If any of the name is already present, adds the name to the * duplicate table. * * @param entries the list of names */ public void bulkInsertTakingCareOfDuplicates(List<NameEntry> entries) { int i = 0; for (NameEntry entry : entries) { this.insertTakingCareOfDuplicates(entry); i++; if (i == BATCH_SIZE) { nameEntryRepository.flush(); i = 0; } } }
/** * Saves a list {@link org.oruko.dictionary.model.NameEntry} * * @param entries the list of name entries to be saved */ public List<NameEntry> saveNames(List<NameEntry> entries) { int i = 0; List<NameEntry> savedNames = new ArrayList<>(); for (NameEntry entry : entries) { savedNames.add(this.saveName(entry)); i++; if (i == BATCH_SIZE) { nameEntryRepository.flush(); i = 0; } } return savedNames; }
/** * 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; } } }
/** * 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; }