Merge branch 'RED-9891-bp' into 'release/2.465.x'
RED-9891: Re-creation of component-definition does not work See merge request redactmanager/persistence-service!671
This commit is contained in:
commit
c08acf46f6
@ -9,6 +9,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -47,8 +48,17 @@ public class ComponentDefinitionService {
|
|||||||
validateAddRequest(componentDefinitionAddRequests);
|
validateAddRequest(componentDefinitionAddRequests);
|
||||||
|
|
||||||
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
||||||
componentDefinitionAddRequests.forEach(componentDefinitionAddRequest -> componentEntities.add(componentDefinitionPersistenceService.insert(componentDefinitionAddRequest,
|
componentDefinitionAddRequests.forEach(componentDefinitionAddRequest -> {
|
||||||
dossierTemplateId)));
|
Optional<String> optionalIdOfSoftDeleted = componentDefinitionPersistenceService.findIdByTechnicalNameAndSoftDeleted(componentDefinitionAddRequest.getTechnicalName());
|
||||||
|
ComponentDefinitionEntity entity;
|
||||||
|
if (optionalIdOfSoftDeleted.isEmpty()) {
|
||||||
|
entity = componentDefinitionPersistenceService.insert(componentDefinitionAddRequest,
|
||||||
|
dossierTemplateId);
|
||||||
|
} else {
|
||||||
|
entity = componentDefinitionPersistenceService.restoreComponent(dossierTemplateId, optionalIdOfSoftDeleted.get());
|
||||||
|
}
|
||||||
|
componentEntities.add(entity);
|
||||||
|
});
|
||||||
return componentEntities.stream()
|
return componentEntities.stream()
|
||||||
.map(componentDefinitionEntity -> MagicConverter.convert(componentDefinitionEntity, ComponentDefinition.class))
|
.map(componentDefinitionEntity -> MagicConverter.convert(componentDefinitionEntity, ComponentDefinition.class))
|
||||||
.sorted(Comparator.comparing(ComponentDefinition::getRank))
|
.sorted(Comparator.comparing(ComponentDefinition::getRank))
|
||||||
@ -85,7 +95,7 @@ public class ComponentDefinitionService {
|
|||||||
if (includeSoftDeleted) {
|
if (includeSoftDeleted) {
|
||||||
componentDefinitionEntities = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId);
|
componentDefinitionEntities = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId);
|
||||||
} else {
|
} else {
|
||||||
componentDefinitionEntities = componentDefinitionPersistenceService.findComponentsByDossierTemplateIdExcludeSoftDeleted(dossierTemplateId);
|
componentDefinitionEntities = componentDefinitionPersistenceService.findByDossierTemplateIdAndNotSoftDeleted(dossierTemplateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return componentDefinitionEntities.stream()
|
return componentDefinitionEntities.stream()
|
||||||
@ -157,7 +167,7 @@ public class ComponentDefinitionService {
|
|||||||
validateDossierTemplateExists(dossierTemplateId);
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
|
||||||
List<ComponentDefinition> orderedComponents = new ArrayList<>();
|
List<ComponentDefinition> orderedComponents = new ArrayList<>();
|
||||||
List<ComponentDefinitionEntity> existingComponents = componentDefinitionPersistenceService.findComponentsByDossierTemplateIdExcludeSoftDeleted(dossierTemplateId);
|
List<ComponentDefinitionEntity> existingComponents = componentDefinitionPersistenceService.findByDossierTemplateIdAndNotSoftDeleted(dossierTemplateId);
|
||||||
|
|
||||||
Map<String, ComponentDefinitionEntity> componentMap = existingComponents.stream()
|
Map<String, ComponentDefinitionEntity> componentMap = existingComponents.stream()
|
||||||
.collect(Collectors.toMap(ComponentDefinitionEntity::getId, component -> component));
|
.collect(Collectors.toMap(ComponentDefinitionEntity::getId, component -> component));
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
|||||||
|
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -92,6 +93,15 @@ public class ComponentDefinitionPersistenceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public ComponentDefinitionEntity restoreComponent(String dossierTemplateId, String componentId) {
|
||||||
|
|
||||||
|
componentDefinitionRepository.updateSoftDeleteForIds(List.of(componentId), dossierTemplateId, null);
|
||||||
|
return componentDefinitionRepository.findById(componentId)
|
||||||
|
.orElseThrow(() -> new NotFoundException("Component with id: " + componentId + " not found"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public ComponentDefinitionEntity findComponentByDossierTemplateIdAndComponentId(String dossierTemplateId, String componentId) {
|
public ComponentDefinitionEntity findComponentByDossierTemplateIdAndComponentId(String dossierTemplateId, String componentId) {
|
||||||
|
|
||||||
return componentDefinitionRepository.findByIdAndDossierTemplateId(componentId, dossierTemplateId)
|
return componentDefinitionRepository.findByIdAndDossierTemplateId(componentId, dossierTemplateId)
|
||||||
@ -105,15 +115,15 @@ public class ComponentDefinitionPersistenceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<ComponentDefinitionEntity> findComponentsByDossierTemplateIdExcludeSoftDeleted(String dossierTemplateId) {
|
|
||||||
|
|
||||||
return componentDefinitionRepository.findByDossierTemplateIdAndSoftDeletedTimeIsNull(dossierTemplateId);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public List<ComponentDefinitionEntity> findByDossierTemplateIdAndNotSoftDeleted(String dossierTemplateId) {
|
public List<ComponentDefinitionEntity> findByDossierTemplateIdAndNotSoftDeleted(String dossierTemplateId) {
|
||||||
|
|
||||||
return componentDefinitionRepository.findByDossierTemplateIdAndSoftDeletedTimeIsNull(dossierTemplateId);
|
return componentDefinitionRepository.findByDossierTemplateIdAndSoftDeletedTimeIsNull(dossierTemplateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Optional<String> findIdByTechnicalNameAndSoftDeleted(String technicalName) {
|
||||||
|
|
||||||
|
return componentDefinitionRepository.findIdByTechnicalNameAndIsSoftDeleted(technicalName);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,4 +37,8 @@ public interface ComponentDefinitionRepository extends JpaRepository<ComponentDe
|
|||||||
@Query("SELECT COUNT(c) from ComponentDefinitionEntity c WHERE c.dossierTemplateId = :dossierTemplateId AND c.softDeleteTime IS NULL")
|
@Query("SELECT COUNT(c) from ComponentDefinitionEntity c WHERE c.dossierTemplateId = :dossierTemplateId AND c.softDeleteTime IS NULL")
|
||||||
int countByDossierTemplateId(@Param("dossierTemplateId") String dossierTemplateId);
|
int countByDossierTemplateId(@Param("dossierTemplateId") String dossierTemplateId);
|
||||||
|
|
||||||
|
@Query("SELECT c.id FROM ComponentDefinitionEntity c WHERE c.technicalName = :technicalName AND c.softDeleteTime IS NOT NULL")
|
||||||
|
Optional<String> findIdByTechnicalNameAndIsSoftDeleted(@Param("technicalName") String technicalName);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemp
|
|||||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinition;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionAddRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionAddRequest;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionUpdateRequest;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionUpdateRequest;
|
||||||
|
|
||||||
@ -145,6 +146,27 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
assertTrue(unknownDossierError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
assertTrue(unknownDossierError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAddComponentDefinitionAfterSoftDeletion() {
|
||||||
|
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
|
var componentDefinitionAddRequest = buildComponentDefinitionAddRequest(dossierTemplate);
|
||||||
|
|
||||||
|
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest));
|
||||||
|
assertEquals(response.size(), 1);
|
||||||
|
|
||||||
|
dossierTemplateExternalClient.deleteComponents(dossierTemplate.getId(), List.of(response.get(0).getId()));
|
||||||
|
|
||||||
|
var softDeletedComponent = dossierTemplateExternalClient.getComponent(dossierTemplate.getId(), response.get(0).getId());
|
||||||
|
assertNotNull(softDeletedComponent.getSoftDeleteTime());
|
||||||
|
List<ComponentDefinition> componentsIncludingSoftDeleted = dossierTemplateExternalClient.getComponents(dossierTemplate.getId(), true);
|
||||||
|
List<ComponentDefinition> componentsExcludingSoftDeleted = dossierTemplateExternalClient.getComponents(dossierTemplate.getId(), false);
|
||||||
|
assertEquals(componentsIncludingSoftDeleted.size(), componentsExcludingSoftDeleted.size() + 1);
|
||||||
|
|
||||||
|
response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest));
|
||||||
|
assertEquals(response.size(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRestoreDeletedComponentDefinitions() {
|
public void testRestoreDeletedComponentDefinitions() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user