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%2FDiagramStructureWriter.java;h=79714ac6337f491ba8d1dd0c815e4f4cadc03494;hb=8783f9ee2b67f83160d88f43a7aef02a6b25f955;hp=3b7ac15994d3824a92accba170080e8a3886b6c1;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWriter.java b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWriter.java index 3b7ac1599..79714ac63 100644 --- a/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWriter.java +++ b/bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DiagramStructureWriter.java @@ -1,134 +1,134 @@ -package org.simantics.document.linking.report.templates; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.layer0.adapter.Instances; -import org.simantics.document.DocumentResource; -import org.simantics.document.linking.ontology.DocumentLink; -import org.simantics.document.linking.report.Document; -import org.simantics.document.linking.report.DocumentTitlePage; -import org.simantics.document.linking.report.RowContentProvider; -import org.simantics.document.linking.report.Table; -import org.simantics.document.linking.report.TextItem; -import org.simantics.document.linking.utils.SourceLinkUtil; -import org.simantics.modeling.ModelingResources; - -public class DiagramStructureWriter extends DocumentWriter{ - ReadGraph graph; - Resource model; - Map context; - DocumentLink sl; - ModelingResources mod; - DocumentResource doc; - NestedComparator diagramDocumentComparator; - ResourceNameComparator diagramComparator; - - @Override - public String getName() { - return "Diagram structure"; - } - - @Override - public void start(ReadGraph graph, Resource model, Document lineWriter, Map context) - throws Exception { - super.start(graph, model, lineWriter, context); - this.context = context; - DocumentTitlePage titlePage = lineWriter.newElement(DocumentTitlePage.class); - titlePage.writeTitle(graph, context); - - Table table = lineWriter.newElement(Table.class); - table.addColumn("Name", 0.4); - table.addColumn("Document", 0.6); - - //lineWriter.nextPage(); - - this.graph = graph; - this.sl = DocumentLink.getInstance(graph); - this.mod = ModelingResources.getInstance(graph); - this.doc = DocumentResource.getInstance(graph); - this.model = model; - - diagramComparator = new SourceParentDiagramComparator(graph,model); - diagramDocumentComparator = new NestedComparator(); - diagramDocumentComparator.addComparator(diagramComparator); - diagramDocumentComparator.addComparator(new SourceReferenceComparator(graph, model)); - - clearProviders(); - addCellProvider(new HierarchyContentProvider()); - addCellProvider(new DocumentContentProvider()); - } - - - @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(); - for (Resource source : found) { - Resource parent = graph.getSingleObject(source, sl.hasSource_Inverse); - if (graph.hasStatement(parent, mod.CompositeToDiagram)) - list.add(source); - } - Collections.sort(list, diagramDocumentComparator); - return list; - - } - - private class HierarchyContentProvider implements RowContentProvider { - @Override - public void setText(Document writer, Resource previous, - Resource current, Resource next, TextItem[] row) throws Exception { - boolean writeHierarchy = false; - if (previous == null) - writeHierarchy = true; - else { - if (diagramComparator.compare(previous, current) != 0) - writeHierarchy = true; - } - if (writeHierarchy) { -// if (lineWriter.getCurrentLine() > 4) -// lineWriter.nextPage(); - Resource obj = graph.getPossibleObject(current, sl.hasSource_Inverse); - row[0] = writer.newItem(TextItem.class); - if (obj != null) { - List path = SourceLinkUtil.getDiagramPath(graph, model, obj); - if (writer.getAvailableLines() < 2) - writer.nextPage(); - String text = ""; - for (int i = 0 ; i < path.size(); i++) { - Resource r = path.get(i); - text += diagramComparator.getText(r); - if (i < path.size()-1) - text += "/"; - } - row[0].setText(text); - } else { - row[0].setText("Hierarchy missing"); - } - } - - } - } - - private class DocumentContentProvider implements RowContentProvider { - @Override - public void setText(Document writer, Resource previous, - Resource current, Resource next, TextItem[] row) throws Exception { - Resource document = SourceLinkUtil.getReferredDocument(graph, current); - if (document != null) { - row[1] = getDocumentItem(document); - } else { - row[1] = getNonExistingDocumentItem(); - } - - } - } - - -} +package org.simantics.document.linking.report.templates; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.layer0.adapter.Instances; +import org.simantics.document.DocumentResource; +import org.simantics.document.linking.ontology.DocumentLink; +import org.simantics.document.linking.report.Document; +import org.simantics.document.linking.report.DocumentTitlePage; +import org.simantics.document.linking.report.RowContentProvider; +import org.simantics.document.linking.report.Table; +import org.simantics.document.linking.report.TextItem; +import org.simantics.document.linking.utils.SourceLinkUtil; +import org.simantics.modeling.ModelingResources; + +public class DiagramStructureWriter extends DocumentWriter{ + ReadGraph graph; + Resource model; + Map context; + DocumentLink sl; + ModelingResources mod; + DocumentResource doc; + NestedComparator diagramDocumentComparator; + ResourceNameComparator diagramComparator; + + @Override + public String getName() { + return "Diagram structure"; //$NON-NLS-1$ + } + + @Override + public void start(ReadGraph graph, Resource model, Document lineWriter, Map context) + throws Exception { + super.start(graph, model, lineWriter, context); + this.context = context; + DocumentTitlePage titlePage = lineWriter.newElement(DocumentTitlePage.class); + titlePage.writeTitle(graph, context); + + Table table = lineWriter.newElement(Table.class); + table.addColumn("Name", 0.4); //$NON-NLS-1$ + table.addColumn("Document", 0.6); //$NON-NLS-1$ + + //lineWriter.nextPage(); + + this.graph = graph; + this.sl = DocumentLink.getInstance(graph); + this.mod = ModelingResources.getInstance(graph); + this.doc = DocumentResource.getInstance(graph); + this.model = model; + + diagramComparator = new SourceParentDiagramComparator(graph,model); + diagramDocumentComparator = new NestedComparator(); + diagramDocumentComparator.addComparator(diagramComparator); + diagramDocumentComparator.addComparator(new SourceReferenceComparator(graph, model)); + + clearProviders(); + addCellProvider(new HierarchyContentProvider()); + addCellProvider(new DocumentContentProvider()); + } + + + @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(); + for (Resource source : found) { + Resource parent = graph.getSingleObject(source, sl.hasSource_Inverse); + if (graph.hasStatement(parent, mod.CompositeToDiagram)) + list.add(source); + } + Collections.sort(list, diagramDocumentComparator); + return list; + + } + + private class HierarchyContentProvider implements RowContentProvider { + @Override + public void setText(Document writer, Resource previous, + Resource current, Resource next, TextItem[] row) throws Exception { + boolean writeHierarchy = false; + if (previous == null) + writeHierarchy = true; + else { + if (diagramComparator.compare(previous, current) != 0) + writeHierarchy = true; + } + if (writeHierarchy) { +// if (lineWriter.getCurrentLine() > 4) +// lineWriter.nextPage(); + Resource obj = graph.getPossibleObject(current, sl.hasSource_Inverse); + row[0] = writer.newItem(TextItem.class); + if (obj != null) { + List path = SourceLinkUtil.getDiagramPath(graph, model, obj); + if (writer.getAvailableLines() < 2) + writer.nextPage(); + String text = ""; //$NON-NLS-1$ + for (int i = 0 ; i < path.size(); i++) { + Resource r = path.get(i); + text += diagramComparator.getText(r); + if (i < path.size()-1) + text += "/"; //$NON-NLS-1$ + } + row[0].setText(text); + } else { + row[0].setText(Messages.DiagramStructureWriter_Hierarchymissing); + } + } + + } + } + + private class DocumentContentProvider implements RowContentProvider { + @Override + public void setText(Document writer, Resource previous, + Resource current, Resource next, TextItem[] row) throws Exception { + Resource document = SourceLinkUtil.getReferredDocument(graph, current); + if (document != null) { + row[1] = getDocumentItem(document); + } else { + row[1] = getNonExistingDocumentItem(); + } + + } + } + + +}