1 package org.simantics.document.linking.report.templates;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.Collections;
\r
6 import java.util.List;
\r
8 import org.simantics.db.ReadGraph;
\r
9 import org.simantics.db.Resource;
\r
10 import org.simantics.db.layer0.adapter.Instances;
\r
11 import org.simantics.document.linking.utils.SourceLinkUtil;
\r
12 import org.simantics.utils.datastructures.MapList;
\r
15 public class DiagramStructureWithDependenciesWriter extends DiagramStructureWriter{
\r
18 public String getName() {
\r
19 return "Diagram structure with dependencies";
\r
23 public List<Resource> getReportItems(ReadGraph graph) throws Exception {
\r
24 Instances instancesQuery = graph.adapt(sl.Source, Instances.class);
\r
25 Collection<Resource> found = instancesQuery.find(graph, model);
\r
26 List<Resource> list = new ArrayList<Resource>();
\r
27 MapList<Resource, Resource> diagramToReference = new MapList<Resource, Resource>();
\r
28 for (Resource source : found) {
\r
29 Resource parent = graph.getSingleObject(source, sl.hasSource_Inverse);
\r
30 List<Resource> path = SourceLinkUtil.getPath(graph, model, parent);
\r
31 for (Resource r : path) {
\r
32 if (graph.hasStatement(r, mod.CompositeToDiagram)){
\r
33 Resource doc = SourceLinkUtil.getReferredDocument(graph, source);
\r
34 if (doc != null && !diagramToReference.contains(r, doc)) {
\r
35 diagramToReference.add(r,doc);
\r
41 Collections.sort(list, diagramDocumentComparator);
\r