Merge branch 'RED-9749' into 'master'
RED-9749 - Fix various issues with component definitions Closes RED-9749 See merge request redactmanager/persistence-service!621
This commit is contained in:
commit
6e2c2dfbdc
@ -388,7 +388,7 @@ public class DossierTemplateControllerV2 implements DossierTemplateResource {
|
|||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ComponentDefinition> componentDefinitions = componentDefinitionService.createComponents(componentDefinitionAddRequests);
|
List<ComponentDefinition> componentDefinitions = componentDefinitionService.createComponents(dossierTemplateId, componentDefinitionAddRequests);
|
||||||
auditPersistenceService.audit(AuditRequest.builder()
|
auditPersistenceService.audit(AuditRequest.builder()
|
||||||
.userId(KeycloakSecurity.getUserId())
|
.userId(KeycloakSecurity.getUserId())
|
||||||
.objectId(dossierTemplateId)
|
.objectId(dossierTemplateId)
|
||||||
|
|||||||
@ -3477,15 +3477,11 @@ components:
|
|||||||
The ComponentDefinitionAddRequest object represents a request to create a component definition within a dossier template.
|
The ComponentDefinitionAddRequest object represents a request to create a component definition within a dossier template.
|
||||||
The rank will be automatically generated and does not need to be provided at creation.
|
The rank will be automatically generated and does not need to be provided at creation.
|
||||||
example:
|
example:
|
||||||
dossierTemplateId: 8cd4b482-fb49-4315-9b51-789b4ae46c57
|
|
||||||
technicalName: study_conclusion
|
technicalName: study_conclusion
|
||||||
displayName: Study conclusion
|
displayName: Study conclusion
|
||||||
description: The conclusion of the study
|
description: The conclusion of the study
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
dossierTemplateId:
|
|
||||||
description: The ID of the dossier template to which this component belongs.
|
|
||||||
type: string
|
|
||||||
technicalName:
|
technicalName:
|
||||||
description: The technical name of the component.
|
description: The technical name of the component.
|
||||||
type: string
|
type: string
|
||||||
@ -3496,7 +3492,6 @@ components:
|
|||||||
description: A brief description of the component.
|
description: A brief description of the component.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- dossierTemplateId
|
|
||||||
- technicalName
|
- technicalName
|
||||||
- displayName
|
- displayName
|
||||||
ComponentDefinitionUpdateRequest:
|
ComponentDefinitionUpdateRequest:
|
||||||
|
|||||||
@ -314,12 +314,11 @@ public class DossierTemplateImportService {
|
|||||||
if (CollectionUtils.isNotEmpty(request.getComponentDefinitions())) {
|
if (CollectionUtils.isNotEmpty(request.getComponentDefinitions())) {
|
||||||
for (ComponentDefinition componentDefinition : request.getComponentDefinitions()) {
|
for (ComponentDefinition componentDefinition : request.getComponentDefinitions()) {
|
||||||
ComponentDefinitionAddRequest componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder()
|
ComponentDefinitionAddRequest componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder()
|
||||||
.dossierTemplateId(dossierTemplateId)
|
|
||||||
.displayName(componentDefinition.getDisplayName())
|
.displayName(componentDefinition.getDisplayName())
|
||||||
.description(componentDefinition.getDescription())
|
.description(componentDefinition.getDescription())
|
||||||
.technicalName(componentDefinition.getTechnicalName())
|
.technicalName(componentDefinition.getTechnicalName())
|
||||||
.build();
|
.build();
|
||||||
componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, componentDefinition.getRank());
|
componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, componentDefinition.getRank(), dossierTemplateId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import static com.iqser.red.service.persistence.management.v1.processor.roles.Ac
|
|||||||
|
|
||||||
import java.time.OffsetDateTime;
|
import java.time.OffsetDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -16,12 +17,15 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ComponentDefinitionEntity;
|
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ComponentDefinitionEntity;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||||
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.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;
|
||||||
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
|
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
|
||||||
|
|
||||||
|
import io.micrometer.common.util.StringUtils;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.experimental.FieldDefaults;
|
import lombok.experimental.FieldDefaults;
|
||||||
@ -32,28 +36,30 @@ import lombok.experimental.FieldDefaults;
|
|||||||
public class ComponentDefinitionService {
|
public class ComponentDefinitionService {
|
||||||
|
|
||||||
ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
||||||
|
DossierTemplateRepository dossierTemplateRepository;
|
||||||
|
|
||||||
|
|
||||||
@PreAuthorize("hasAuthority('" + ADD_UPDATE_DICTIONARY_TYPE + "')")
|
@PreAuthorize("hasAuthority('" + ADD_UPDATE_DICTIONARY_TYPE + "')")
|
||||||
@Transactional
|
@Transactional
|
||||||
public List<ComponentDefinition> createComponents(List<ComponentDefinitionAddRequest> componentDefinitionAddRequests) {
|
public List<ComponentDefinition> createComponents(String dossierTemplateId, List<ComponentDefinitionAddRequest> componentDefinitionAddRequests) {
|
||||||
|
|
||||||
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
validateAddRequest(componentDefinitionAddRequests);
|
||||||
|
|
||||||
validateComponentRequest(componentDefinitionAddRequests);
|
|
||||||
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
||||||
componentDefinitionAddRequests.forEach(componentDefinitionAddRequest -> componentEntities.add(componentDefinitionPersistenceService.insert(componentDefinitionAddRequest)));
|
componentDefinitionAddRequests.forEach(componentDefinitionAddRequest -> componentEntities.add(componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, dossierTemplateId)));
|
||||||
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))
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void validateComponentRequest(List<ComponentDefinitionAddRequest> componentDefinitionAddRequests) {
|
private void validateAddRequest(List<ComponentDefinitionAddRequest> componentDefinitionAddRequests) {
|
||||||
|
|
||||||
String firstDossierTemplateId = componentDefinitionAddRequests.get(0).getDossierTemplateId();
|
long nrOfComponentsWithEmptyTechnicalName = componentDefinitionAddRequests.stream().filter(c -> StringUtils.isEmpty(c.getTechnicalName())).count();
|
||||||
boolean allMatch = componentDefinitionAddRequests.stream()
|
if (nrOfComponentsWithEmptyTechnicalName != 0) {
|
||||||
.allMatch(request -> request.getDossierTemplateId().equals(firstDossierTemplateId));
|
throw new BadRequestException("Technical name can not be empty for a component.");
|
||||||
if (!allMatch) {
|
|
||||||
throw new BadRequestException("All components must have the same dossierTemplateId.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,6 +67,8 @@ public class ComponentDefinitionService {
|
|||||||
@PreAuthorize("hasAuthority('" + READ_DICTIONARY_TYPES + "')")
|
@PreAuthorize("hasAuthority('" + READ_DICTIONARY_TYPES + "')")
|
||||||
public ComponentDefinition getComponentByDossierTemplateIdAndComponentId(String dossierTemplateId, String componentId) {
|
public ComponentDefinition getComponentByDossierTemplateIdAndComponentId(String dossierTemplateId, String componentId) {
|
||||||
|
|
||||||
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
|
||||||
return MagicConverter.convert(componentDefinitionPersistenceService.findComponentByDossierTemplateIdAndComponentId(dossierTemplateId, componentId),
|
return MagicConverter.convert(componentDefinitionPersistenceService.findComponentByDossierTemplateIdAndComponentId(dossierTemplateId, componentId),
|
||||||
ComponentDefinition.class);
|
ComponentDefinition.class);
|
||||||
}
|
}
|
||||||
@ -69,16 +77,19 @@ public class ComponentDefinitionService {
|
|||||||
@PreAuthorize("hasAuthority('" + READ_DICTIONARY_TYPES + "')")
|
@PreAuthorize("hasAuthority('" + READ_DICTIONARY_TYPES + "')")
|
||||||
public List<ComponentDefinition> getComponentsByDossierTemplateId(String dossierTemplateId, boolean includeSoftDeleted) {
|
public List<ComponentDefinition> getComponentsByDossierTemplateId(String dossierTemplateId, boolean includeSoftDeleted) {
|
||||||
|
|
||||||
List<ComponentDefinitionEntity> entities;
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
|
||||||
|
List<ComponentDefinitionEntity> componentDefinitionEntities;
|
||||||
|
|
||||||
if (includeSoftDeleted) {
|
if (includeSoftDeleted) {
|
||||||
entities = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId);
|
componentDefinitionEntities = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId);
|
||||||
} else {
|
} else {
|
||||||
entities = componentDefinitionPersistenceService.findComponentsByDossierTemplateIdExcludeSoftDeleted(dossierTemplateId);
|
componentDefinitionEntities = componentDefinitionPersistenceService.findComponentsByDossierTemplateIdExcludeSoftDeleted(dossierTemplateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return entities.stream()
|
return componentDefinitionEntities.stream()
|
||||||
.map(entity -> MagicConverter.convert(entity, ComponentDefinition.class))
|
.map(entity -> MagicConverter.convert(entity, ComponentDefinition.class))
|
||||||
|
.sorted(Comparator.comparingInt(ComponentDefinition::getRank))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,6 +98,15 @@ public class ComponentDefinitionService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public List<ComponentDefinition> updateComponents(String dossierTemplateId, List<ComponentDefinitionUpdateRequest> componentDefinitionUpdateRequests) {
|
public List<ComponentDefinition> updateComponents(String dossierTemplateId, List<ComponentDefinitionUpdateRequest> componentDefinitionUpdateRequests) {
|
||||||
|
|
||||||
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
|
||||||
|
long nrOfComponentUpdateRequestsWithEmptyDisplayName = componentDefinitionUpdateRequests.stream()
|
||||||
|
.filter(componentDefinitionUpdateRequest -> StringUtils.isEmpty(componentDefinitionUpdateRequest.getDisplayName()))
|
||||||
|
.count();
|
||||||
|
if (nrOfComponentUpdateRequestsWithEmptyDisplayName != 0) {
|
||||||
|
throw new BadRequestException("Component display name can not be empty");
|
||||||
|
}
|
||||||
|
|
||||||
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
||||||
componentDefinitionUpdateRequests.forEach(componentDefinitionUpdateRequest -> {
|
componentDefinitionUpdateRequests.forEach(componentDefinitionUpdateRequest -> {
|
||||||
ComponentDefinitionEntity componentDefinitionEntity = componentDefinitionPersistenceService.findComponent(dossierTemplateId, componentDefinitionUpdateRequest.getId());
|
ComponentDefinitionEntity componentDefinitionEntity = componentDefinitionPersistenceService.findComponent(dossierTemplateId, componentDefinitionUpdateRequest.getId());
|
||||||
@ -96,6 +116,7 @@ public class ComponentDefinitionService {
|
|||||||
});
|
});
|
||||||
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))
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,8 +125,8 @@ public class ComponentDefinitionService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public List<ComponentDefinitionEntity> deleteComponents(String dossierTemplateId, List<String> componentIds) {
|
public List<ComponentDefinitionEntity> deleteComponents(String dossierTemplateId, List<String> componentIds) {
|
||||||
|
|
||||||
OffsetDateTime now = OffsetDateTime.now();
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
return componentDefinitionPersistenceService.softDeleteComponents(dossierTemplateId, componentIds, now);
|
return componentDefinitionPersistenceService.softDeleteComponents(dossierTemplateId, componentIds, OffsetDateTime.now());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -113,6 +134,7 @@ public class ComponentDefinitionService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public List<ComponentDefinition> restoreComponents(String dossierTemplateId, List<String> componentIds) {
|
public List<ComponentDefinition> restoreComponents(String dossierTemplateId, List<String> componentIds) {
|
||||||
|
|
||||||
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
|
||||||
List<ComponentDefinitionEntity> componentDefinitionEntities = componentDefinitionPersistenceService.restoreComponents(dossierTemplateId, componentIds);
|
List<ComponentDefinitionEntity> componentDefinitionEntities = componentDefinitionPersistenceService.restoreComponents(dossierTemplateId, componentIds);
|
||||||
int rank = componentDefinitionPersistenceService.countByDossierTemplateId(dossierTemplateId);
|
int rank = componentDefinitionPersistenceService.countByDossierTemplateId(dossierTemplateId);
|
||||||
@ -122,6 +144,7 @@ public class ComponentDefinitionService {
|
|||||||
}
|
}
|
||||||
return componentDefinitionEntities.stream()
|
return componentDefinitionEntities.stream()
|
||||||
.map(componentDefinitionEntity -> MagicConverter.convert(componentDefinitionEntity, ComponentDefinition.class))
|
.map(componentDefinitionEntity -> MagicConverter.convert(componentDefinitionEntity, ComponentDefinition.class))
|
||||||
|
.sorted(Comparator.comparing(ComponentDefinition::getRank))
|
||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,12 +153,16 @@ public class ComponentDefinitionService {
|
|||||||
@Transactional
|
@Transactional
|
||||||
public List<ComponentDefinition> reorderComponents(String dossierTemplateId, List<String> componentIds) {
|
public List<ComponentDefinition> reorderComponents(String dossierTemplateId, List<String> componentIds) {
|
||||||
|
|
||||||
|
validateDossierTemplateExists(dossierTemplateId);
|
||||||
|
|
||||||
List<ComponentDefinition> orderedComponents = new ArrayList<>();
|
List<ComponentDefinition> orderedComponents = new ArrayList<>();
|
||||||
List<ComponentDefinitionEntity> existingComponents = componentDefinitionPersistenceService.findComponentsByDossierTemplateIdExcludeSoftDeleted(dossierTemplateId);
|
List<ComponentDefinitionEntity> existingComponents = componentDefinitionPersistenceService.findComponentsByDossierTemplateIdExcludeSoftDeleted(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));
|
||||||
|
|
||||||
|
List<ComponentDefinitionEntity> remainingComponents = new ArrayList<>(existingComponents);
|
||||||
|
|
||||||
int rank = 1;
|
int rank = 1;
|
||||||
for (String componentId : componentIds) {
|
for (String componentId : componentIds) {
|
||||||
ComponentDefinitionEntity component = componentMap.get(componentId);
|
ComponentDefinitionEntity component = componentMap.get(componentId);
|
||||||
@ -143,10 +170,27 @@ public class ComponentDefinitionService {
|
|||||||
component.setRank(rank++);
|
component.setRank(rank++);
|
||||||
componentDefinitionPersistenceService.update(component);
|
componentDefinitionPersistenceService.update(component);
|
||||||
orderedComponents.add(MagicConverter.convert(component, ComponentDefinition.class));
|
orderedComponents.add(MagicConverter.convert(component, ComponentDefinition.class));
|
||||||
|
remainingComponents.remove(component);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Continue updating ranks for remaining components
|
||||||
|
for (ComponentDefinitionEntity component : remainingComponents) {
|
||||||
|
component.setRank(rank++);
|
||||||
|
componentDefinitionPersistenceService.update(component);
|
||||||
|
orderedComponents.add(MagicConverter.convert(component, ComponentDefinition.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
orderedComponents.sort(Comparator.comparing(ComponentDefinition::getRank));
|
||||||
|
|
||||||
return orderedComponents;
|
return orderedComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void validateDossierTemplateExists(String dossierTemplateId) {
|
||||||
|
|
||||||
|
if (!dossierTemplateRepository.existsByIdAndNotDeleted(dossierTemplateId)) {
|
||||||
|
throw new NotFoundException(String.format("DossierTemplate with Id %s not found.", dossierTemplateId));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,9 @@ package com.iqser.red.service.persistence.management.v1.processor.service;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -15,6 +17,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotAl
|
|||||||
import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles;
|
import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService;
|
||||||
|
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User;
|
import com.iqser.red.service.persistence.management.v1.processor.service.users.model.User;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory;
|
||||||
@ -28,9 +31,11 @@ import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
|
|||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.experimental.FieldDefaults;
|
import lombok.experimental.FieldDefaults;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class ComponentLogService {
|
public class ComponentLogService {
|
||||||
|
|
||||||
private final FileManagementStorageService fileManagementStorageService;
|
private final FileManagementStorageService fileManagementStorageService;
|
||||||
@ -38,11 +43,16 @@ public class ComponentLogService {
|
|||||||
private final AuditPersistenceService auditPersistenceService;
|
private final AuditPersistenceService auditPersistenceService;
|
||||||
private final ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
private final ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
|
private final DossierRepository dossierRepository;
|
||||||
|
|
||||||
|
|
||||||
public ComponentLog getComponentLog(String dossierId, String fileId, boolean includeOverrides) {
|
public ComponentLog getComponentLog(String dossierId, String fileId, boolean includeOverrides) {
|
||||||
|
|
||||||
List<ComponentDefinitionEntity> orderedEntities = componentDefinitionPersistenceService.findByDossierTemplateIdAndNotSoftDeleted(dossierId);
|
List<ComponentDefinitionEntity> orderedEntities = componentDefinitionPersistenceService.findByDossierTemplateIdAndNotSoftDeleted(dossierRepository.findDossierTemplateId(dossierId))
|
||||||
|
.stream()
|
||||||
|
.sorted(Comparator.comparing(ComponentDefinitionEntity::getRank))
|
||||||
|
.toList();
|
||||||
|
orderedEntities.forEach(o -> log.info("Name: {} Rank: {}", o.getTechnicalName(), o.getRank()));
|
||||||
List<String> orderedNames = orderedEntities.stream()
|
List<String> orderedNames = orderedEntities.stream()
|
||||||
.map(ComponentDefinitionEntity::getTechnicalName)
|
.map(ComponentDefinitionEntity::getTechnicalName)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
@ -81,17 +91,22 @@ public class ComponentLogService {
|
|||||||
|
|
||||||
List<ComponentLogEntry> componentLogEntries = componentLog.getComponentLogEntries();
|
List<ComponentLogEntry> componentLogEntries = componentLog.getComponentLogEntries();
|
||||||
|
|
||||||
List<ComponentLogEntry> sortedLogEntries = new ArrayList<>();
|
Map<String, ComponentLogEntry> entryMap = new HashMap<>();
|
||||||
List<ComponentLogEntry> nonOrderedLogEntries = new ArrayList<>();
|
|
||||||
|
|
||||||
for (ComponentLogEntry entry : componentLogEntries) {
|
for (ComponentLogEntry entry : componentLogEntries) {
|
||||||
if (orderedNames.contains(entry.getName())) {
|
entryMap.put(entry.getName().toLowerCase(Locale.getDefault()), entry);
|
||||||
sortedLogEntries.add(entry);
|
|
||||||
} else {
|
|
||||||
nonOrderedLogEntries.add(entry);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<ComponentLogEntry> sortedLogEntries = new ArrayList<>();
|
||||||
|
|
||||||
|
orderedNames.forEach(name -> {
|
||||||
|
ComponentLogEntry entry = entryMap.get(name);
|
||||||
|
if (entry != null) {
|
||||||
|
entryMap.remove(name);
|
||||||
|
sortedLogEntries.add(entry);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
List<ComponentLogEntry> nonOrderedLogEntries = new ArrayList<>(entryMap.values());
|
||||||
nonOrderedLogEntries.sort(new ComponentOrderComparator(orderedNames));
|
nonOrderedLogEntries.sort(new ComponentOrderComparator(orderedNames));
|
||||||
sortedLogEntries.addAll(nonOrderedLogEntries);
|
sortedLogEntries.addAll(nonOrderedLogEntries);
|
||||||
|
|
||||||
|
|||||||
@ -159,9 +159,8 @@ public class DossierTemplateCloneService {
|
|||||||
.description(componentDefinitionEntity.getDescription())
|
.description(componentDefinitionEntity.getDescription())
|
||||||
.technicalName(componentDefinitionEntity.getTechnicalName())
|
.technicalName(componentDefinitionEntity.getTechnicalName())
|
||||||
.displayName(componentDefinitionEntity.getDisplayName())
|
.displayName(componentDefinitionEntity.getDisplayName())
|
||||||
.dossierTemplateId(clonedDossierTemplateId)
|
|
||||||
.build();
|
.build();
|
||||||
componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, componentDefinitionEntity.getRank());
|
componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, componentDefinitionEntity.getRank(), clonedDossierTemplateId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,9 +24,9 @@ public class ComponentDefinitionPersistenceService {
|
|||||||
private final ComponentDefinitionRepository componentDefinitionRepository;
|
private final ComponentDefinitionRepository componentDefinitionRepository;
|
||||||
|
|
||||||
|
|
||||||
public ComponentDefinitionEntity insert(ComponentDefinitionAddRequest component) {
|
public ComponentDefinitionEntity insert(ComponentDefinitionAddRequest component, String dossierTemplateId) {
|
||||||
|
|
||||||
return insert(component, countByDossierTemplateId(component.getDossierTemplateId()) + 1);
|
return insert(component, countByDossierTemplateId(dossierTemplateId) + 1, dossierTemplateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -35,13 +35,13 @@ public class ComponentDefinitionPersistenceService {
|
|||||||
return componentDefinitionRepository.saveAndFlush(componentDefinition);
|
return componentDefinitionRepository.saveAndFlush(componentDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ComponentDefinitionEntity insert(ComponentDefinitionAddRequest component, int rank) {
|
public ComponentDefinitionEntity insert(ComponentDefinitionAddRequest component, int rank, String dossierTemplateId) {
|
||||||
|
|
||||||
ComponentDefinitionEntity componentDefinitionEntity = new ComponentDefinitionEntity();
|
ComponentDefinitionEntity componentDefinitionEntity = new ComponentDefinitionEntity();
|
||||||
componentDefinitionEntity.setId(UUID.randomUUID().toString());
|
componentDefinitionEntity.setId(UUID.randomUUID().toString());
|
||||||
componentDefinitionEntity.setDossierTemplateId(component.getDossierTemplateId());
|
componentDefinitionEntity.setDossierTemplateId(dossierTemplateId);
|
||||||
componentDefinitionEntity.setTechnicalName(SnakeCaseUtils.toSnakeCase(component.getTechnicalName()));
|
componentDefinitionEntity.setTechnicalName(SnakeCaseUtils.toSnakeCase(component.getTechnicalName()));
|
||||||
componentDefinitionEntity.setDisplayName(component.getDisplayName());
|
componentDefinitionEntity.setDisplayName(component.getDisplayName().isEmpty() ? component.getTechnicalName() : component.getDisplayName());
|
||||||
componentDefinitionEntity.setDescription(component.getDescription());
|
componentDefinitionEntity.setDescription(component.getDescription());
|
||||||
componentDefinitionEntity.setRank(rank);
|
componentDefinitionEntity.setRank(rank);
|
||||||
return componentDefinitionRepository.saveAndFlush(componentDefinitionEntity);
|
return componentDefinitionRepository.saveAndFlush(componentDefinitionEntity);
|
||||||
|
|||||||
@ -43,17 +43,20 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
assertEquals(response.get(0).getDisplayName(), componentDefinitionAddRequest.getDisplayName());
|
assertEquals(response.get(0).getDisplayName(), componentDefinitionAddRequest.getDisplayName());
|
||||||
assertEquals(response.get(0).getTechnicalName(), componentDefinitionAddRequest.getTechnicalName());
|
assertEquals(response.get(0).getTechnicalName(), componentDefinitionAddRequest.getTechnicalName());
|
||||||
assertNull(response.get(0).getSoftDeleteTime());
|
assertNull(response.get(0).getSoftDeleteTime());
|
||||||
|
|
||||||
|
var noDisplayNameComponent = ComponentDefinitionAddRequest.builder().displayName("").technicalName("component_2").description("Description").build();
|
||||||
|
var result1 = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(noDisplayNameComponent));
|
||||||
|
assertTrue(result1.get(0).getDisplayName().equals("component_2"));
|
||||||
|
|
||||||
|
var noTechnicalNameComponent = ComponentDefinitionAddRequest.builder().technicalName("").displayName("Component 1").description("Description").build();
|
||||||
|
var result = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(noTechnicalNameComponent)));
|
||||||
|
assertTrue(result.getMessage().contains("Technical name can not be empty for a component."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private ComponentDefinitionAddRequest buildComponentDefinitionAddRequest(DossierTemplateModel dossierTemplate) {
|
private ComponentDefinitionAddRequest buildComponentDefinitionAddRequest(DossierTemplateModel dossierTemplate) {
|
||||||
|
|
||||||
return ComponentDefinitionAddRequest.builder()
|
return ComponentDefinitionAddRequest.builder().technicalName("component_1").displayName("Component 1").description("Description").build();
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("component_1")
|
|
||||||
.displayName("Component 1")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -73,12 +76,7 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
assertEquals(component.getTechnicalName(), componentDefinitionAddRequest.getTechnicalName());
|
assertEquals(component.getTechnicalName(), componentDefinitionAddRequest.getTechnicalName());
|
||||||
assertNull(component.getSoftDeleteTime());
|
assertNull(component.getSoftDeleteTime());
|
||||||
|
|
||||||
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder()
|
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder().technicalName("component_2").displayName("Component 2").description("Description").build();
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("component_2")
|
|
||||||
.displayName("Component 2")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest2));
|
response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest2));
|
||||||
assertEquals(response.size(), 1);
|
assertEquals(response.size(), 1);
|
||||||
@ -93,6 +91,12 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
|
|
||||||
components = dossierTemplateExternalClient.getComponents(dossierTemplate.getId(), false);
|
components = dossierTemplateExternalClient.getComponents(dossierTemplate.getId(), false);
|
||||||
assertEquals(components.size(), 1);
|
assertEquals(components.size(), 1);
|
||||||
|
|
||||||
|
var componentsError = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.getComponents("123", false));
|
||||||
|
assertTrue(componentsError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
|
|
||||||
|
var componentError = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.getComponent("123", "321"));
|
||||||
|
assertTrue(componentError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -117,6 +121,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
assertEquals(updatedComponents.get(0).getDisplayName(), componentDefinitionUpdateRequest.getDisplayName());
|
assertEquals(updatedComponents.get(0).getDisplayName(), componentDefinitionUpdateRequest.getDisplayName());
|
||||||
assertEquals(updatedComponents.get(0).getTechnicalName(), componentDefinitionAddRequest.getTechnicalName());
|
assertEquals(updatedComponents.get(0).getTechnicalName(), componentDefinitionAddRequest.getTechnicalName());
|
||||||
assertNull(updatedComponents.get(0).getSoftDeleteTime());
|
assertNull(updatedComponents.get(0).getSoftDeleteTime());
|
||||||
|
|
||||||
|
var unknownDossierError = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.updateComponents("123", List.of(componentDefinitionUpdateRequest)));
|
||||||
|
assertTrue(unknownDossierError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -133,6 +140,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
|
|
||||||
var softDeletedComponent = dossierTemplateExternalClient.getComponent(dossierTemplate.getId(), response.get(0).getId());
|
var softDeletedComponent = dossierTemplateExternalClient.getComponent(dossierTemplate.getId(), response.get(0).getId());
|
||||||
assertNotNull(softDeletedComponent.getSoftDeleteTime());
|
assertNotNull(softDeletedComponent.getSoftDeleteTime());
|
||||||
|
|
||||||
|
var unknownDossierError = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.deleteComponents("123", List.of(response.get(0).getId())));
|
||||||
|
assertTrue(unknownDossierError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -140,24 +150,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
public void testRestoreDeletedComponentDefinitions() {
|
public void testRestoreDeletedComponentDefinitions() {
|
||||||
|
|
||||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||||
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder()
|
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder().technicalName("Component 1").displayName("Component 1").description("Description").build();
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder().technicalName("Component 2").displayName("Component 2").description("Description").build();
|
||||||
.technicalName("Component 1")
|
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder().technicalName("Component 3").displayName("Component 3").description("Description").build();
|
||||||
.displayName("Component 1")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder()
|
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 2")
|
|
||||||
.displayName("Component 2")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder()
|
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 3")
|
|
||||||
.displayName("Component 3")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
||||||
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
||||||
@ -173,21 +168,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
assertEquals(restoredComponents.get(0).getId(), response.get(0).getId());
|
assertEquals(restoredComponents.get(0).getId(), response.get(0).getId());
|
||||||
assertEquals(restoredComponents.get(0).getRank(), 4);
|
assertEquals(restoredComponents.get(0).getRank(), 4);
|
||||||
assertNull(restoredComponents.get(0).getSoftDeleteTime());
|
assertNull(restoredComponents.get(0).getSoftDeleteTime());
|
||||||
}
|
|
||||||
|
|
||||||
|
var unknownDossierError = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.restoreComponents("123", List.of(response.get(0).getId())));
|
||||||
@Test
|
assertTrue(unknownDossierError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
public void createComponentDefinitionsWithDifferentDossierTemplateIds() {
|
|
||||||
|
|
||||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
|
||||||
var dossierTemplate2 = dossierTemplateTesterAndProvider.provideTestTemplate("dossier2");
|
|
||||||
var componentDefinitionAddRequest = buildComponentDefinitionAddRequest(dossierTemplate);
|
|
||||||
var componentDefinitionAddRequest2 = buildComponentDefinitionAddRequest(dossierTemplate2);
|
|
||||||
|
|
||||||
var error = assertThrows(FeignException.class,
|
|
||||||
() -> dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
|
||||||
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2)));
|
|
||||||
assertTrue(error.getMessage().contains("All components must have the same dossierTemplateId."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -195,12 +178,7 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
public void testSnakeCaseTechnicalName() {
|
public void testSnakeCaseTechnicalName() {
|
||||||
|
|
||||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
||||||
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder()
|
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder().technicalName("Component 1").displayName("Component 1").description("Description").build();
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 1")
|
|
||||||
.displayName("Component 1")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest));
|
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest));
|
||||||
assertEquals(response.size(), 1);
|
assertEquals(response.size(), 1);
|
||||||
@ -212,24 +190,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
public void testGetAllComponentsForADossierTemplate() {
|
public void testGetAllComponentsForADossierTemplate() {
|
||||||
|
|
||||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
||||||
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder()
|
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder().technicalName("Component 1").displayName("Component 1").description("Description").build();
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder().technicalName("Component 2").displayName("Component 2").description("Description").build();
|
||||||
.technicalName("Component 1")
|
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder().technicalName("Component 3").displayName("Component 3").description("Description").build();
|
||||||
.displayName("Component 1")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder()
|
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 2")
|
|
||||||
.displayName("Component 2")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder()
|
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 3")
|
|
||||||
.displayName("Component 3")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
||||||
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
||||||
@ -250,24 +213,9 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
public void testReorderComponentDefinitions() {
|
public void testReorderComponentDefinitions() {
|
||||||
|
|
||||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
||||||
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder()
|
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder().technicalName("Component 1").displayName("Component 1").description("Description").build();
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder().technicalName("Component 2").displayName("Component 2").description("Description").build();
|
||||||
.technicalName("Component 1")
|
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder().technicalName("Component 3").displayName("Component 3").description("Description").build();
|
||||||
.displayName("Component 1")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder()
|
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 2")
|
|
||||||
.displayName("Component 2")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder()
|
|
||||||
.dossierTemplateId(dossierTemplate.getId())
|
|
||||||
.technicalName("Component 3")
|
|
||||||
.displayName("Component 3")
|
|
||||||
.description("Description")
|
|
||||||
.build();
|
|
||||||
|
|
||||||
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
||||||
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
||||||
@ -284,6 +232,35 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
|||||||
assertEquals(newOrder.get(1).getRank(), 2);
|
assertEquals(newOrder.get(1).getRank(), 2);
|
||||||
assertEquals(newOrder.get(2).getId(), firstComponentId);
|
assertEquals(newOrder.get(2).getId(), firstComponentId);
|
||||||
assertEquals(newOrder.get(2).getRank(), 3);
|
assertEquals(newOrder.get(2).getRank(), 3);
|
||||||
|
|
||||||
|
var unknownDossierError = assertThrows(FeignException.class, () -> dossierTemplateExternalClient.reorderComponents("123", List.of(secondComponentId, thirdComponentId, firstComponentId)));
|
||||||
|
assertTrue(unknownDossierError.getMessage().contains("DossierTemplate with Id 123 not found."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReorderComponentDefinitionsWithShiftingRanks() {
|
||||||
|
|
||||||
|
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate("dossier1");
|
||||||
|
var componentDefinitionAddRequest = ComponentDefinitionAddRequest.builder().technicalName("Component 1").displayName("Component 1").description("Description").build();
|
||||||
|
var componentDefinitionAddRequest2 = ComponentDefinitionAddRequest.builder().technicalName("Component 2").displayName("Component 2").description("Description").build();
|
||||||
|
var componentDefinitionAddRequest3 = ComponentDefinitionAddRequest.builder().technicalName("Component 3").displayName("Component 3").description("Description").build();
|
||||||
|
|
||||||
|
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(),
|
||||||
|
List.of(componentDefinitionAddRequest, componentDefinitionAddRequest2, componentDefinitionAddRequest3));
|
||||||
|
assertEquals(response.size(), 3);
|
||||||
|
String firstComponentId = response.get(0).getId();
|
||||||
|
String secondComponentId = response.get(1).getId();
|
||||||
|
String thirdComponentId = response.get(2).getId();
|
||||||
|
|
||||||
|
var newOrder = dossierTemplateExternalClient.reorderComponents(dossierTemplate.getId(), List.of(secondComponentId));
|
||||||
|
assertEquals(newOrder.size(), 3);
|
||||||
|
assertEquals(newOrder.get(0).getId(), secondComponentId);
|
||||||
|
assertEquals(newOrder.get(0).getRank(), 1);
|
||||||
|
assertEquals(newOrder.get(1).getId(), firstComponentId);
|
||||||
|
assertEquals(newOrder.get(1).getRank(), 2);
|
||||||
|
assertEquals(newOrder.get(2).getId(), thirdComponentId);
|
||||||
|
assertEquals(newOrder.get(2).getRank(), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTes
|
|||||||
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
||||||
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.peristence.v1.server.integration.utils.TokenService;
|
import com.iqser.red.service.peristence.v1.server.integration.utils.TokenService;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionAddRequest;
|
||||||
|
|
||||||
import feign.FeignException;
|
import feign.FeignException;
|
||||||
|
|
||||||
|
|||||||
@ -14,10 +14,6 @@ import lombok.NonNull;
|
|||||||
@Schema(description = "Object containing information about a component.")
|
@Schema(description = "Object containing information about a component.")
|
||||||
public class ComponentDefinitionAddRequest {
|
public class ComponentDefinitionAddRequest {
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Schema(description = "The dossierTemplateId for this component.")
|
|
||||||
private String dossierTemplateId;
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Schema(description = "The technical name of the component in snake case. Must be unique within the same dossier template.")
|
@Schema(description = "The technical name of the component in snake case. Must be unique within the same dossier template.")
|
||||||
private String technicalName;
|
private String technicalName;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user