RED-10723: early stopping for migrations as they need to be re-run for DM 1.2.x
This commit is contained in:
parent
3574fe6a9b
commit
01c7d1a389
@ -25,7 +25,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.mongo.document.ComponentDocument;
|
||||
import com.iqser.red.storage.commons.exception.StorageException;
|
||||
import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
@ -76,8 +75,15 @@ public class StorageToMongoCopyService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void copyEntityLogs(DossierFile dossierFile) {
|
||||
|
||||
if (fileManagementStorageService.entityLogExists(dossierFile.dossierId, dossierFile.fileId)) {
|
||||
log.info("EntityLog already exists in Mongo for dossierId={}, fileId={}.",
|
||||
dossierFile.dossierId, dossierFile.fileId);
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("Reading dossier {} file {} from storage", dossierFile.dossierId, dossierFile.fileId);
|
||||
Optional<EntityLog> entityLogFromStorage = getEntityLogFromStorageForMigration(dossierFile.dossierId, dossierFile.fileId);
|
||||
if (entityLogFromStorage.isPresent()) {
|
||||
@ -139,6 +145,9 @@ public class StorageToMongoCopyService {
|
||||
if (optionalComponentsOverrides.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
if(!componentLogService.getOverrides(file.dossierId(), file.fileId()).isEmpty()) {
|
||||
return;
|
||||
}
|
||||
ComponentsOverrides oldComponentsOverrides = optionalComponentsOverrides.get();
|
||||
oldComponentsOverrides.getComponentOverrides()
|
||||
.forEach((componentName, componentValue) -> {
|
||||
|
||||
@ -9,7 +9,9 @@ import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@ -47,22 +49,28 @@ public class ComponentDefinitionService {
|
||||
validateDossierTemplateExists(dossierTemplateId);
|
||||
validateAddRequest(componentDefinitionAddRequests);
|
||||
|
||||
List<ComponentDefinitionEntity> componentEntities = new ArrayList<>();
|
||||
componentDefinitionAddRequests.forEach(componentDefinitionAddRequest -> {
|
||||
Optional<String> optionalIdOfSoftDeleted = componentDefinitionPersistenceService.findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(dossierTemplateId,
|
||||
componentDefinitionAddRequest.getTechnicalName());
|
||||
ComponentDefinitionEntity entity;
|
||||
if (optionalIdOfSoftDeleted.isEmpty()) {
|
||||
entity = componentDefinitionPersistenceService.insert(componentDefinitionAddRequest, dossierTemplateId);
|
||||
} else {
|
||||
int rank = componentDefinitionPersistenceService.maxRankByDossierTemplateId(dossierTemplateId) + 1;
|
||||
entity = componentDefinitionPersistenceService.restoreComponent(dossierTemplateId, optionalIdOfSoftDeleted.get());
|
||||
entity.setDescription(componentDefinitionAddRequest.getDescription());
|
||||
entity.setRank(rank);
|
||||
entity = componentDefinitionPersistenceService.update(entity);
|
||||
}
|
||||
componentEntities.add(entity);
|
||||
});
|
||||
List<ComponentDefinitionEntity> componentEntities = componentDefinitionAddRequests.stream()
|
||||
.map(request -> {
|
||||
Optional<ComponentDefinitionEntity> optionalComponentDefinition = componentDefinitionPersistenceService.findIdByDossierTemplateIdAndTechnicalName(
|
||||
dossierTemplateId,
|
||||
request.getTechnicalName());
|
||||
|
||||
return optionalComponentDefinition.map(componentDefinition -> {
|
||||
if (componentDefinition.getSoftDeleteTime() != null) {
|
||||
int rank = componentDefinitionPersistenceService.maxRankByDossierTemplateId(dossierTemplateId) + 1;
|
||||
ComponentDefinitionEntity restored = componentDefinitionPersistenceService.restoreComponent(dossierTemplateId, componentDefinition.getId());
|
||||
restored.setDescription(request.getDescription());
|
||||
restored.setRank(rank);
|
||||
return componentDefinitionPersistenceService.update(restored);
|
||||
}
|
||||
// return unchanged
|
||||
return componentDefinition;
|
||||
})
|
||||
.orElseGet(() -> componentDefinitionPersistenceService.insert(request, dossierTemplateId));
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
|
||||
return componentEntities.stream()
|
||||
.map(componentDefinitionEntity -> MagicConverter.convert(componentDefinitionEntity, ComponentDefinition.class))
|
||||
.sorted(Comparator.comparing(ComponentDefinition::getRank))
|
||||
@ -72,11 +80,11 @@ public class ComponentDefinitionService {
|
||||
|
||||
@Transactional
|
||||
public List<ComponentDefinition> createComponentsInternal(String dossierTemplateId, List<ComponentDefinitionAddRequest> componentDefinitionAddRequests) {
|
||||
|
||||
return createComponents(dossierTemplateId, componentDefinitionAddRequests);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void validateAddRequest(List<ComponentDefinitionAddRequest> componentDefinitionAddRequests) {
|
||||
|
||||
long nrOfComponentsWithEmptyTechnicalName = componentDefinitionAddRequests.stream()
|
||||
|
||||
@ -121,9 +121,9 @@ public class ComponentDefinitionPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
public Optional<String> findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(String dossierTemplateId, String technicalName) {
|
||||
public Optional<ComponentDefinitionEntity> findIdByDossierTemplateIdAndTechnicalName(String dossierTemplateId, String technicalName) {
|
||||
|
||||
return componentDefinitionRepository.findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(dossierTemplateId, technicalName);
|
||||
return componentDefinitionRepository.findIdByDossierTemplateIdAndTechnicalName(dossierTemplateId, technicalName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -37,8 +37,7 @@ public interface ComponentDefinitionRepository extends JpaRepository<ComponentDe
|
||||
@Query("SELECT COALESCE(MAX(c.rank), 0) from ComponentDefinitionEntity c WHERE c.dossierTemplateId = :dossierTemplateId AND c.softDeleteTime IS NULL")
|
||||
int maxRankByDossierTemplateId(@Param("dossierTemplateId") String dossierTemplateId);
|
||||
|
||||
@Query("SELECT c.id FROM ComponentDefinitionEntity c WHERE c.dossierTemplateId = :dossierTemplateId AND c.technicalName = :technicalName AND c.softDeleteTime IS NOT NULL")
|
||||
Optional<String> findIdByDossierTemplateIdAndTechnicalNameAndIsSoftDeleted(@Param("dossierTemplateId") String dossierTemplateId, @Param("technicalName") String technicalName);
|
||||
Optional<ComponentDefinitionEntity> findIdByDossierTemplateIdAndTechnicalName(String dossierTemplateId, String technicalName);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -162,7 +162,7 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
||||
var componentDefinitionAddRequest = buildComponentDefinitionAddRequest(dossierTemplate);
|
||||
|
||||
var response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest));
|
||||
assertEquals(response.size(), 1);
|
||||
assertEquals(1, response.size());
|
||||
|
||||
dossierTemplateExternalClient.deleteComponents(dossierTemplate.getId(), List.of(response.get(0).getId()));
|
||||
|
||||
@ -176,7 +176,7 @@ public class ComponentDefinitionTests extends AbstractPersistenceServerServiceTe
|
||||
componentDefinitionAddRequest.setDescription(changedDescription);
|
||||
int count = componentDefinitionPersistenceService.maxRankByDossierTemplateId(dossierTemplate.getId());
|
||||
response = dossierTemplateExternalClient.createComponents(dossierTemplate.getId(), List.of(componentDefinitionAddRequest));
|
||||
assertEquals(response.size(), 1);
|
||||
assertEquals(1, response.size());
|
||||
assertEquals(response.get(0).getDescription(), changedDescription);
|
||||
assertEquals(response.get(0).getRank(), count + 1);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user