From 75e0b08f87460ee8093fcf729632ad8fcd60cd33 Mon Sep 17 00:00:00 2001 From: Bogdan Kostov Date: Wed, 19 Jun 2024 09:23:44 +0200 Subject: [PATCH] Fix problems caused by unmanaged references when updating fault event --- .../cvut/kbss/analysis/model/FaultEvent.java | 2 +- .../service/FaultEventRepositoryService.java | 25 ++++++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java b/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java index b3c0a98d..d1ab5da6 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java @@ -52,7 +52,7 @@ public static FaultEvent create(){ private Double probability; @OWLObjectProperty(iri = Vocabulary.s_p_has_selected_estimation, fetch = FetchType.EAGER) - private FailureRateEstimate selectedEstimate; + private URI selectedEstimate; @OWLObjectProperty(iri = Vocabulary.s_p_has_child, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set children = new HashSet<>(); diff --git a/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java b/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java index be7b29f2..c1cd1c4e 100755 --- a/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java @@ -19,10 +19,7 @@ import org.springframework.validation.Validator; import java.net.URI; -import java.util.Date; -import java.util.List; -import java.util.Optional; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -171,6 +168,26 @@ public void updateChildrenSequence(URI faultEventUri, List childrenSequence log.info("< updateChildrenSequence"); } + @Transactional + @Override + public FaultEvent update(FaultEvent instance) { + Objects.requireNonNull(instance); + preUpdate(instance); + FaultEvent managedInstance = faultEventDao.find(instance.getUri()).orElse( null); + assert managedInstance != null; + managedInstance.setName(instance.getName()); + managedInstance.setGateType(instance.getGateType()); + managedInstance.setEventType(instance.getEventType()); + managedInstance.setProbability(instance.getProbability()); + managedInstance.setSupertypes(instance.getSupertypes()); + managedInstance.setChildrenSequence(instance.getChildrenSequence()); + managedInstance.setSelectedEstimate(instance.getSelectedEstimate()); + faultEventDao.getContext(managedInstance); + faultEventDao.update(managedInstance); + postUpdate(managedInstance); + return managedInstance; + } + @Override protected void preUpdate(FaultEvent instance) { if(instance.getSupertypes() != null && !instance.getSupertypes().isEmpty())