From 6b977b44f60582389e79785974e00f373c8b88a3 Mon Sep 17 00:00:00 2001 From: Bogdan Kostov Date: Mon, 15 Apr 2024 16:45:52 +0200 Subject: [PATCH] [FIX kbss-cvut/fta-fmea-ui#245] Extend FaultEvent.references field to include the fault tree of the referenced fault event --- .../cvut/kbss/analysis/dao/FaultEventDao.java | 15 ++++---- .../cvut/kbss/analysis/model/FaultEvent.java | 2 +- .../analysis/model/FaultEventReference.java | 36 +++++++++++++++++++ .../service/FaultEventRepositoryService.java | 7 ++-- 4 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 src/main/java/cz/cvut/kbss/analysis/model/FaultEventReference.java diff --git a/src/main/java/cz/cvut/kbss/analysis/dao/FaultEventDao.java b/src/main/java/cz/cvut/kbss/analysis/dao/FaultEventDao.java index 94d46795..fb2da05e 100755 --- a/src/main/java/cz/cvut/kbss/analysis/dao/FaultEventDao.java +++ b/src/main/java/cz/cvut/kbss/analysis/dao/FaultEventDao.java @@ -3,6 +3,7 @@ import cz.cvut.kbss.analysis.config.conf.PersistenceConf; import cz.cvut.kbss.analysis.exception.PersistenceException; import cz.cvut.kbss.analysis.model.FaultEvent; +import cz.cvut.kbss.analysis.model.FaultEventReference; import cz.cvut.kbss.analysis.model.diagram.Rectangle; import cz.cvut.kbss.analysis.service.IdentifierService; import cz.cvut.kbss.analysis.util.Vocabulary; @@ -73,16 +74,16 @@ public Rectangle update(Rectangle rect){ } - public List getFaultEventRootWithSupertype(URI supertype){ + public List getFaultEventRootWithSupertype(URI supertype){ try{ return em.createNativeQuery( """ - SELECT DISTINCT ?uri WHERE{ - ?uri ?derivedFrom ?supertype. - ?uri ?ftaEventTypeProp ?ftaEventType. - ?uri a ?type. - ?faultTree ?isManifestedByProp ?uri - }""", URI.class) + SELECT DISTINCT ?faultEvent ?faultTree WHERE{ + ?faultEvent ?derivedFrom ?supertype. + ?faultEvent ?ftaEventTypeProp ?ftaEventType. + ?faultEvent a ?type. + ?faultTree ?isManifestedByProp ?faultEvent + }""", "FaultEventReference") .setParameter("derivedFrom", DERIVED_FROM_PROP) .setParameter("supertype", supertype) .setParameter("ftaEventTypeProp", FTA_EVENT_TYPE_PROP) 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 afb701b7..e4a2f069 100755 --- a/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultEvent.java @@ -31,7 +31,7 @@ public static FaultEvent create(){ @Transient @OWLObjectProperty(iri = Vocabulary.s_p_is_reference_to) - private URI references; + private FaultEventReference references; @Transient @OWLDataProperty(iri = Vocabulary.s_p_is_reference) diff --git a/src/main/java/cz/cvut/kbss/analysis/model/FaultEventReference.java b/src/main/java/cz/cvut/kbss/analysis/model/FaultEventReference.java new file mode 100644 index 00000000..ac3d46ad --- /dev/null +++ b/src/main/java/cz/cvut/kbss/analysis/model/FaultEventReference.java @@ -0,0 +1,36 @@ +package cz.cvut.kbss.analysis.model; + +import cz.cvut.kbss.analysis.util.Vocabulary; +import cz.cvut.kbss.jopa.model.annotations.*; +import lombok.Getter; +import lombok.Setter; + +import java.net.URI; + +@SparqlResultSetMapping(name = "FaultEventReference", classes = +@ConstructorResult(targetClass=FaultEventReference.class, variables={ + @VariableResult(name="faultEvent"), + @VariableResult(name="faultTree") +}) +) + +@OWLClass(iri = Vocabulary.s_c_fault_event) +@Getter +@Setter +public class FaultEventReference { + + public FaultEventReference() { + } + + public FaultEventReference(URI faultEvent, URI faultTree) { + this.faultEvent = faultEvent; + this.faultTree = faultTree; + } + + @Id + protected URI faultEvent; + + @Transient + @OWLDataProperty(iri = Vocabulary.s_p_is_part_of) + protected URI faultTree; +} 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 283ff736..9a961d8b 100755 --- a/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/FaultEventRepositoryService.java @@ -4,10 +4,7 @@ import cz.cvut.kbss.analysis.dao.FaultTreeDao; import cz.cvut.kbss.analysis.dao.GenericDao; import cz.cvut.kbss.analysis.exception.LogicViolationException; -import cz.cvut.kbss.analysis.model.Event; -import cz.cvut.kbss.analysis.model.FailureMode; -import cz.cvut.kbss.analysis.model.FaultEvent; -import cz.cvut.kbss.analysis.model.Item; +import cz.cvut.kbss.analysis.model.*; import cz.cvut.kbss.analysis.model.diagram.Rectangle; import cz.cvut.kbss.analysis.model.fta.FtaEventType; import cz.cvut.kbss.analysis.service.strategy.DirectFtaEvaluation; @@ -91,7 +88,7 @@ protected void setExternalReference(URI eventUri, FaultEvent inputEvent){ .collect(Collectors.joining(","))); Event supertype = supertypes.get(0); - List referencedRoots = faultEventDao.getFaultEventRootWithSupertype(supertype.getUri()); + List referencedRoots = faultEventDao.getFaultEventRootWithSupertype(supertype.getUri()); if(referencedRoots == null || referencedRoots.isEmpty()) return;