X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.document.linking.ui%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Flinking%2Freport%2Ftemplates%2FDiagramStructureWithDependenciesWriter.java;fp=bundles%2Forg.simantics.document.linking.ui%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Flinking%2Freport%2Ftemplates%2FDiagramStructureWithDependenciesWriter.java;h=400cb32b3e68329359d65091bd50e95030a96968;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWithDependenciesWriter.java b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWithDependenciesWriter.java new file mode 100644 index 000000000..400cb32b3 --- /dev/null +++ b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWithDependenciesWriter.java @@ -0,0 +1,45 @@ +package org.simantics.document.linking.report.templates; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.layer0.adapter.Instances; +import org.simantics.document.linking.utils.SourceLinkUtil; +import org.simantics.utils.datastructures.MapList; + + +public class DiagramStructureWithDependenciesWriter extends DiagramStructureWriter{ + + @Override + public String getName() { + return "Diagram structure with dependencies"; + } + + @Override + public List getReportItems(ReadGraph graph) throws Exception { + Instances instancesQuery = graph.adapt(sl.Source, Instances.class); + Collection found = instancesQuery.find(graph, model); + List list = new ArrayList(); + MapList diagramToReference = new MapList(); + for (Resource source : found) { + Resource parent = graph.getSingleObject(source, sl.hasSource_Inverse); + List path = SourceLinkUtil.getPath(graph, model, parent); + for (Resource r : path) { + if (graph.hasStatement(r, mod.CompositeToDiagram)){ + Resource doc = SourceLinkUtil.getReferredDocument(graph, source); + if (doc != null && !diagramToReference.contains(r, doc)) { + diagramToReference.add(r,doc); + list.add(source); + } + } + } + } + Collections.sort(list, diagramDocumentComparator); + return list; + } + +}