-package org.simantics.document.linking.report.templates;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.Collections;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.layer0.adapter.Instances;\r
-import org.simantics.document.DocumentResource;\r
-import org.simantics.document.linking.ontology.DocumentLink;\r
-import org.simantics.document.linking.report.Document;\r
-import org.simantics.document.linking.report.DocumentTitlePage;\r
-import org.simantics.document.linking.report.RowContentProvider;\r
-import org.simantics.document.linking.report.Table;\r
-import org.simantics.document.linking.report.TextItem;\r
-import org.simantics.document.linking.utils.SourceLinkUtil;\r
-import org.simantics.modeling.ModelingResources;\r
-\r
-public class DiagramStructureWriter extends DocumentWriter<Resource>{\r
- ReadGraph graph;\r
- Resource model;\r
- Map<Object, Object> context;\r
- DocumentLink sl;\r
- ModelingResources mod;\r
- DocumentResource doc;\r
- NestedComparator<Resource> diagramDocumentComparator;\r
- ResourceNameComparator diagramComparator;\r
- \r
- @Override\r
- public String getName() {\r
- return "Diagram structure";\r
- }\r
- \r
- @Override\r
- public void start(ReadGraph graph, Resource model, Document lineWriter, Map<Object, Object> context)\r
- throws Exception {\r
- super.start(graph, model, lineWriter, context);\r
- this.context = context;\r
- DocumentTitlePage titlePage = lineWriter.newElement(DocumentTitlePage.class);\r
- titlePage.writeTitle(graph, context);\r
- \r
- Table table = lineWriter.newElement(Table.class);\r
- table.addColumn("Name", 0.4);\r
- table.addColumn("Document", 0.6);\r
- \r
- //lineWriter.nextPage();\r
- \r
- this.graph = graph;\r
- this.sl = DocumentLink.getInstance(graph);\r
- this.mod = ModelingResources.getInstance(graph);\r
- this.doc = DocumentResource.getInstance(graph);\r
- this.model = model;\r
- \r
- diagramComparator = new SourceParentDiagramComparator(graph,model);\r
- diagramDocumentComparator = new NestedComparator<Resource>();\r
- diagramDocumentComparator.addComparator(diagramComparator);\r
- diagramDocumentComparator.addComparator(new SourceReferenceComparator(graph, model));\r
- \r
- clearProviders();\r
- addCellProvider(new HierarchyContentProvider());\r
- addCellProvider(new DocumentContentProvider());\r
- }\r
- \r
- \r
- @Override\r
- public List<Resource> getReportItems(ReadGraph graph) throws Exception {\r
- Instances instancesQuery = graph.adapt(sl.Source, Instances.class);\r
- Collection<Resource> found = instancesQuery.find(graph, model);\r
- List<Resource> list = new ArrayList<Resource>();\r
- for (Resource source : found) {\r
- Resource parent = graph.getSingleObject(source, sl.hasSource_Inverse);\r
- if (graph.hasStatement(parent, mod.CompositeToDiagram))\r
- list.add(source);\r
- }\r
- Collections.sort(list, diagramDocumentComparator);\r
- return list;\r
- \r
- }\r
-\r
- private class HierarchyContentProvider implements RowContentProvider<Resource> {\r
- @Override\r
- public void setText(Document writer, Resource previous,\r
- Resource current, Resource next, TextItem[] row) throws Exception {\r
- boolean writeHierarchy = false;\r
- if (previous == null)\r
- writeHierarchy = true;\r
- else {\r
- if (diagramComparator.compare(previous, current) != 0)\r
- writeHierarchy = true;\r
- }\r
- if (writeHierarchy) {\r
-// if (lineWriter.getCurrentLine() > 4)\r
-// lineWriter.nextPage();\r
- Resource obj = graph.getPossibleObject(current, sl.hasSource_Inverse);\r
- row[0] = writer.newItem(TextItem.class);\r
- if (obj != null) {\r
- List<Resource> path = SourceLinkUtil.getDiagramPath(graph, model, obj);\r
- if (writer.getAvailableLines() < 2)\r
- writer.nextPage();\r
- String text = "";\r
- for (int i = 0 ; i < path.size(); i++) {\r
- Resource r = path.get(i);\r
- text += diagramComparator.getText(r);\r
- if (i < path.size()-1)\r
- text += "/";\r
- }\r
- row[0].setText(text);\r
- } else {\r
- row[0].setText("Hierarchy missing");\r
- }\r
- }\r
- \r
- }\r
- }\r
- \r
- private class DocumentContentProvider implements RowContentProvider<Resource> {\r
- @Override\r
- public void setText(Document writer, Resource previous,\r
- Resource current, Resource next, TextItem[] row) throws Exception {\r
- Resource document = SourceLinkUtil.getReferredDocument(graph, current);\r
- if (document != null) {\r
- row[1] = getDocumentItem(document);\r
- } else {\r
- row[1] = getNonExistingDocumentItem();\r
- }\r
- \r
- }\r
- }\r
- \r
-\r
-}\r
+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<Resource>{
+ ReadGraph graph;
+ Resource model;
+ Map<Object, Object> context;
+ DocumentLink sl;
+ ModelingResources mod;
+ DocumentResource doc;
+ NestedComparator<Resource> diagramDocumentComparator;
+ ResourceNameComparator diagramComparator;
+
+ @Override
+ public String getName() {
+ return "Diagram structure";
+ }
+
+ @Override
+ public void start(ReadGraph graph, Resource model, Document lineWriter, Map<Object, Object> 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<Resource>();
+ diagramDocumentComparator.addComparator(diagramComparator);
+ diagramDocumentComparator.addComparator(new SourceReferenceComparator(graph, model));
+
+ clearProviders();
+ addCellProvider(new HierarchyContentProvider());
+ addCellProvider(new DocumentContentProvider());
+ }
+
+
+ @Override
+ public List<Resource> getReportItems(ReadGraph graph) throws Exception {
+ Instances instancesQuery = graph.adapt(sl.Source, Instances.class);
+ Collection<Resource> found = instancesQuery.find(graph, model);
+ List<Resource> list = new ArrayList<Resource>();
+ 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<Resource> {
+ @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<Resource> 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<Resource> {
+ @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();
+ }
+
+ }
+ }
+
+
+}