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.HashSet;
\r
7 import java.util.List;
\r
8 import java.util.Set;
\r
10 import org.simantics.db.ReadGraph;
\r
11 import org.simantics.db.Resource;
\r
12 import org.simantics.db.exception.DatabaseException;
\r
13 import org.simantics.db.layer0.adapter.Instances;
\r
14 import org.simantics.document.DocumentResource;
\r
15 import org.simantics.document.linking.ontology.DocumentLink;
\r
16 import org.simantics.document.linking.utils.SourceLinkUtil;
\r
19 * Writes report of referred documents.
\r
36 * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
\r
39 public class ReferredDocumentWriter extends ModelDocumentWriter{
\r
42 public String getName() {
\r
43 return "Referred Documents";
\r
48 public List<List<Resource>> getReportItems(ReadGraph graph) throws DatabaseException {
\r
49 DocumentResource doc = DocumentResource.getInstance(graph);
\r
50 DocumentLink sl = DocumentLink.getInstance(graph);
\r
51 Instances instancesQuery = graph.adapt(sl.Source, Instances.class);
\r
52 Collection<Resource> found = instancesQuery.find(graph, model);
\r
53 Set<Resource> referred = new HashSet<Resource>();
\r
54 for (Resource source : found) {
\r
55 Resource ref = SourceLinkUtil.getReferredDocument(graph, source);
\r
60 List<List<Resource>> result = new ArrayList<List<Resource>>();
\r
61 for (Resource ref : referred) {
\r
62 if (!graph.isInstanceOf(ref, doc.Document))
\r
64 result.add(SourceLinkUtil.getPath(graph,model,ref));
\r
67 Collections.sort(result, new PathComparator(graph));
\r