From e72c68843c5a0c884d0fe71dd32266ae0a18f728 Mon Sep 17 00:00:00 2001 From: Viktor Seifert Date: Wed, 12 Apr 2023 18:22:53 +0200 Subject: [PATCH] RED-6467: Implemented undeletion as operation on entities --- .../persistence/EntryPersistenceService.java | 27 +++++-------------- .../repository/EntryRepository.java | 5 +--- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java index 5d69d0b3a..cc55e7899 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java @@ -4,8 +4,6 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import javax.persistence.EntityManager; -import javax.persistence.criteria.CriteriaBuilder; import javax.transaction.Transactional; import org.springframework.stereotype.Service; @@ -35,8 +33,6 @@ public class EntryPersistenceService { private final FalseRecommendationEntryRepository falseRecommendationEntryRepository; private final JDBCWriteUtils jdbcWriteUtils; - private final EntityManager entityManager; - @Transactional public void deleteEntries(String typeId, List values, long version, DictionaryEntryType dictionaryEntryType) { @@ -163,24 +159,15 @@ public class EntryPersistenceService { private List undeleteEntries(String typeId, Set entries, long version) { - CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); - var undeleteEntriesQuery = criteriaBuilder.createCriteriaUpdate(DictionaryEntryEntity.class); - var entryRoot = undeleteEntriesQuery.from(DictionaryEntryEntity.class); + List entryEntities = entryRepository.findAllByTypeIdAndValueIn(typeId, entries); + entryEntities.forEach(e -> { + e.setDeleted(false); + e.setVersion(version); + }); - var typeIdPred = criteriaBuilder.equal(entryRoot.get("typeId"), typeId); - var entriesPred = entryRoot.get("value").in(entries); - undeleteEntriesQuery.where(typeIdPred, entriesPred); - undeleteEntriesQuery.set("version", version); - undeleteEntriesQuery.set("deleted", false); + entryRepository.saveAll(entryEntities); - int updated = entityManager.createQuery(undeleteEntriesQuery).executeUpdate(); - log.debug("Updated {} entries", updated); - - var existingEntriesQuery = criteriaBuilder.createQuery(DictionaryEntryEntity.class); - entryRoot = existingEntriesQuery.from(DictionaryEntryEntity.class); - existingEntriesQuery.where(typeIdPred, criteriaBuilder.equal(entryRoot.get("deleted"), false)); - - return entityManager.createQuery(existingEntriesQuery).getResultStream().map(DictionaryEntryEntity::getValue).toList(); + return entryEntities.stream().map(DictionaryEntryEntity::getValue).toList(); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntryRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntryRepository.java index 6dc829216..142707e3c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntryRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/EntryRepository.java @@ -37,10 +37,7 @@ public interface EntryRepository extends JpaRepository undeleteEntries(String typeId, Set entries, long version); + List findAllByTypeIdAndValueIn(String typeId, Set entries); @Modifying(flushAutomatically = true, clearAutomatically = true)