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%2FReferredDocumentWriter.java;fp=bundles%2Forg.simantics.document.linking.ui%2Fsrc%2Forg%2Fsimantics%2Fdocument%2Flinking%2Freport%2Ftemplates%2FReferredDocumentWriter.java;h=0081e9e8437a3b5b8e26f8ef3205131b418a75d4;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/ReferredDocumentWriter.java b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/ReferredDocumentWriter.java new file mode 100644 index 000000000..0081e9e84 --- /dev/null +++ b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/ReferredDocumentWriter.java @@ -0,0 +1,71 @@ +package org.simantics.document.linking.report.templates; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.Instances; +import org.simantics.document.DocumentResource; +import org.simantics.document.linking.ontology.DocumentLink; +import org.simantics.document.linking.utils.SourceLinkUtil; + +/** + * Writes report of referred documents. + * + * Model information + □ Document folder 1 + • Document 1-1 + • Document 1-2 rev1 + • Document 1-2 rev2 + • Document 1-2 rev3 + • Document 1-3 + □ Document folder 2 + • Document folder 3 + o Document 3-1 + o Document 3-2 + • Document folder 4 + o Document 4-1 + o Document 4-2 + * + * @author Marko Luukkainen + * + */ +public class ReferredDocumentWriter extends ModelDocumentWriter{ + + @Override + public String getName() { + return "Referred Documents"; + } + + + @Override + public List> getReportItems(ReadGraph graph) throws DatabaseException { + DocumentResource doc = DocumentResource.getInstance(graph); + DocumentLink sl = DocumentLink.getInstance(graph); + Instances instancesQuery = graph.adapt(sl.Source, Instances.class); + Collection found = instancesQuery.find(graph, model); + Set referred = new HashSet(); + for (Resource source : found) { + Resource ref = SourceLinkUtil.getReferredDocument(graph, source); + if (ref != null) + referred.add(ref); + } + found = null; + List> result = new ArrayList>(); + for (Resource ref : referred) { + if (!graph.isInstanceOf(ref, doc.Document)) + continue; + result.add(SourceLinkUtil.getPath(graph,model,ref)); + } + referred = null; + Collections.sort(result, new PathComparator(graph)); + return result; + } + +}