]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/templates/DocumentStructureWriter.java
Externalize org.simantics.document.linking.ui
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / report / templates / DocumentStructureWriter.java
index 8f9491a008ec2612875cce295de045d93687aa21..fffc16b23ebefe49ba2cbac2ed8d51eea0d6a157 100644 (file)
-package org.simantics.document.linking.report.templates;\r
-\r
-import java.util.Collections;\r
-import java.util.Comparator;\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.common.utils.NameUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.document.linking.ontology.DocumentLink;\r
-import org.simantics.document.linking.report.Document;\r
-import org.simantics.document.linking.report.Document.TextSize;\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.TableOfContents;\r
-import org.simantics.document.linking.report.TextItem;\r
-import org.simantics.document.linking.utils.SourceLinkUtil;\r
-\r
-/**\r
- * Model information\r
- * ? Document 1 rev1\r
- *    \95 Link1: Diagram, module, attribute information\r
- *    \95 Link2: Diagram, module, attribute information\r
- * ? Document 1 rev2\r
- *    \95 Link3: Diagram, module, attribute information\r
- * ? Document 1 rev3\r
- *    \95 Link4: Diagram, module, attribute information\r
- * ? Document 2\r
- *    \95 Link5: Diagram, module, attribute information\r
- *   \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public class DocumentStructureWriter extends IndexQueryReport {\r
-       ReadGraph graph;\r
-       Resource model;\r
-       Map<Object, Object> context;\r
-       DocumentLink sl;\r
-       Comparator<Resource> referenceComparator;\r
-       Comparator<Resource> parentComparator;\r
-       SourceParentDiagramComparator diagramComparator;\r
-       @Override\r
-       public void sort(List<Resource> list) throws DatabaseException{\r
-               NestedComparator<Resource> comp = new NestedComparator<Resource>();\r
-               comp.addComparator(referenceComparator);\r
-               comp.addComparator(parentComparator);\r
-               Collections.sort(list, comp);\r
-       }\r
-       \r
-       @Override\r
-       public String getName() {\r
-               return "Document Structure";\r
-       }\r
-       \r
-       @Override\r
-       public void start(ReadGraph graph, Resource model,Document writer, Map<Object, Object> context) throws Exception{\r
-               super.start(graph, model, writer, context);\r
-               this.context = context;\r
-               DocumentTitlePage titlePage = writer.newElement(DocumentTitlePage.class);\r
-               titlePage.writeTitle(graph, context);\r
-               writer.newElement(TableOfContents.class);\r
-               Table table = writer.newElement(Table.class,Document.TOC);\r
-               table.addColumn("Name", 0.2);\r
-               table.addColumn("Attribute", 0.35);\r
-               table.addColumn("Value", 0.15);\r
-               table.addColumn("Comment", 0.3);\r
-               \r
-               //lineWriter.nextPage();\r
-               this.graph = graph;\r
-               this.sl = DocumentLink.getInstance(graph);\r
-               this.model = model;\r
-               referenceComparator = new SourceReferenceComparator(graph,model);\r
-               parentComparator = new SourceParentHierarchyComparator(graph,model);\r
-               diagramComparator = new SourceParentDiagramComparator(graph, model);\r
-               clearProviders();\r
-               LinkContentProvider linkContentProvider = new LinkContentProvider();\r
-               HierarchyContentProvider hierarchyContentProvider = new HierarchyContentProvider(linkContentProvider);\r
-               addLineProvider(hierarchyContentProvider);\r
-               addCellProvider(linkContentProvider);\r
-       }\r
-\r
-       private class HierarchyContentProvider implements RowContentProvider<Resource> {\r
-               \r
-               private LinkContentProvider linkContentProvider;\r
-               \r
-               \r
-               \r
-               public HierarchyContentProvider(LinkContentProvider linkContentProvider) {\r
-                       super();\r
-                       this.linkContentProvider = linkContentProvider;\r
-               }\r
-\r
-\r
-\r
-               @Override\r
-               public void setText(Document writer, Resource previous,\r
-                                       Resource current, Resource next, TextItem[] row) throws Exception {\r
-                       boolean writeDoc = false;\r
-                       boolean writeDiag = false;\r
-                       boolean writeToc = false;\r
-                       Table table = writer.getCurrentElement(Table.class);\r
-                       if (previous == null) {\r
-                               writeDoc = true;\r
-                               writeDiag = true;\r
-                               writeToc = true;\r
-                       } else if (writer.getCurrentLine() == 1) {\r
-                               writeDoc = true;\r
-                               writeDiag = true;\r
-                               writeToc = referenceComparator.compare(previous, current) != 0;\r
-                       } else  {\r
-                               if (referenceComparator.compare(previous, current) != 0) {\r
-                                       writeDoc = true;\r
-                                       writeDiag = true;\r
-                                       writeToc = true;\r
-                                       linkContentProvider.forceLabel = true;\r
-                               } else {\r
-                                       if (diagramComparator.compare(previous, current) != 0) {\r
-                                               writeDiag = true;\r
-                                               linkContentProvider.forceLabel = true;\r
-                                       }\r
-                               }\r
-                       }\r
-                       \r
-                       \r
-                       if (writeDoc) {\r
-                               if (writer.getAvailableLines() < 8) {\r
-                                       writer.nextPage();\r
-                                       table = writer.nextElement(Table.class,Document.TOC);\r
-                               }\r
-                               else if (writer.getCurrentLine() > 2)\r
-                                       table = writer.nextElement(Table.class,Document.TOC);\r
-                               \r
-                               \r
-                               Resource doc2 = SourceLinkUtil.getReferredDocument(graph, current);\r
-//                             TextSize size = table.getTextSize();\r
-//                             table.setTextSize(TextSize.MEDIUM);\r
-                               TextItem label = null;\r
-                               if (doc2 != null) {\r
-                                       label = getDocumentItem(doc2);\r
-                               } else {\r
-                                       label = getNonExistingDocumentItem();\r
-                               }\r
-                               if (writeToc) {\r
-                                       TableOfContents toc = writer.getCurrentElement(TableOfContents.class);\r
-                                       toc.addTocElement(label.getText(), table);\r
-                               }\r
-                               //table.writeRow(label);\r
-                               table.setTitle(label);\r
-//                             table.setTextSize(size);\r
-                       }\r
-                       if (writeDiag) {\r
-                               if (writer.getAvailableLines() < 3)\r
-                                       writer.nextPage();\r
-                               Resource parent = graph.getSingleObject(current, sl.hasSource_Inverse);\r
-                               List<Resource> path = SourceLinkUtil.getDiagramPath(graph, model, parent);\r
-                               if (path != null) {\r
-                                       TextSize size = table.getTextSize();\r
-                                       table.setTextSize(TextSize.MEDIUM);\r
-                                       table.writeRow("  " + diagramComparator.getText(path.get(path.size()-1)));\r
-                                       table.setTextSize(size);\r
-                               }\r
-                       }\r
-                               \r
-               }\r
-       }\r
-       \r
-       \r
-       private class LinkContentProvider implements RowContentProvider<Resource> {\r
-               \r
-               private boolean forceLabel = false;\r
-               \r
-               @Override\r
-               public void setText(Document writer, Resource previous,\r
-                               Resource source, Resource next, TextItem[] text) throws Exception {\r
-                       Resource holder = graph.getSingleObject(source, sl.hasSource_Inverse);\r
-                       if (forceLabel || previous == null || !graph.getSingleObject(previous, sl.hasSource_Inverse).equals(graph.getSingleObject(source, sl.hasSource_Inverse))) {\r
-                               String holderName = NameUtils.getSafeLabel(graph, holder);\r
-                               if (holderName.length() == 0)\r
-                                       holderName = NameUtils.getSafeName(graph, holder);\r
-                               text[0] = writer.newItem(TextItem.class);\r
-                               text[0].setText(holderName);\r
-                               forceLabel = false;\r
-                       }\r
-                       if (graph.isInstanceOf(source, sl.FunctionalSource)) {\r
-                               Resource relation = graph.getPossibleObject(source, sl.consernsRelation);\r
-                               text[1] = writer.newItem(TextItem.class);\r
-                               if (relation != null) {\r
-                                       String relationName = NameUtils.getSafeLabel(graph, relation);\r
-                                       if (relationName.length() == 0)\r
-                                               relationName = NameUtils.getSafeName(graph, relation);\r
-                                       Object value = graph.getPossibleRelatedValue(holder, relation);\r
-                                       text[1].setText(relationName);\r
-                                       if (value != null) {\r
-                                               text[2] = writer.newItem(TextItem.class);\r
-                                               text[2].setText(SourceLinkUtil.getValueString(value));\r
-                                       }\r
-                               } else {\r
-                                       text[1].setText("Error in property reference ");\r
-                               }\r
-                       }\r
-                       \r
-                       String comment = graph.getPossibleRelatedValue(source, sl.hasSourceComment);\r
-                       if (comment != null) {\r
-                               text[3] = writer.newItem(TextItem.class);\r
-                               text[3].setText(comment);\r
-                       }\r
-                       \r
-               }\r
-               \r
-       }\r
+package org.simantics.document.linking.report.templates;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.document.linking.ontology.DocumentLink;
+import org.simantics.document.linking.report.Document;
+import org.simantics.document.linking.report.Document.TextSize;
+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.TableOfContents;
+import org.simantics.document.linking.report.TextItem;
+import org.simantics.document.linking.utils.SourceLinkUtil;
+
+/**
+ * Model information
+ * ? Document 1 rev1
+ *    \95 Link1: Diagram, module, attribute information
+ *    \95 Link2: Diagram, module, attribute information
+ * ? Document 1 rev2
+ *    \95 Link3: Diagram, module, attribute information
+ * ? Document 1 rev3
+ *    \95 Link4: Diagram, module, attribute information
+ * ? Document 2
+ *    \95 Link5: Diagram, module, attribute information
+ *   
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public class DocumentStructureWriter extends IndexQueryReport {
+       ReadGraph graph;
+       Resource model;
+       Map<Object, Object> context;
+       DocumentLink sl;
+       Comparator<Resource> referenceComparator;
+       Comparator<Resource> parentComparator;
+       SourceParentDiagramComparator diagramComparator;
+       @Override
+       public void sort(List<Resource> list) throws DatabaseException{
+               NestedComparator<Resource> comp = new NestedComparator<Resource>();
+               comp.addComparator(referenceComparator);
+               comp.addComparator(parentComparator);
+               Collections.sort(list, comp);
+       }
+       
+       @Override
+       public String getName() {
+               return "Document Structure"; //$NON-NLS-1$
+       }
+       
+       @Override
+       public void start(ReadGraph graph, Resource model,Document writer, Map<Object, Object> context) throws Exception{
+               super.start(graph, model, writer, context);
+               this.context = context;
+               DocumentTitlePage titlePage = writer.newElement(DocumentTitlePage.class);
+               titlePage.writeTitle(graph, context);
+               writer.newElement(TableOfContents.class);
+               Table table = writer.newElement(Table.class,Document.TOC);
+               table.addColumn("Name", 0.2); //$NON-NLS-1$
+               table.addColumn("Attribute", 0.35); //$NON-NLS-1$
+               table.addColumn("Value", 0.15); //$NON-NLS-1$
+               table.addColumn("Comment", 0.3); //$NON-NLS-1$
+               
+               //lineWriter.nextPage();
+               this.graph = graph;
+               this.sl = DocumentLink.getInstance(graph);
+               this.model = model;
+               referenceComparator = new SourceReferenceComparator(graph,model);
+               parentComparator = new SourceParentHierarchyComparator(graph,model);
+               diagramComparator = new SourceParentDiagramComparator(graph, model);
+               clearProviders();
+               LinkContentProvider linkContentProvider = new LinkContentProvider();
+               HierarchyContentProvider hierarchyContentProvider = new HierarchyContentProvider(linkContentProvider);
+               addLineProvider(hierarchyContentProvider);
+               addCellProvider(linkContentProvider);
+       }
+
+       private class HierarchyContentProvider implements RowContentProvider<Resource> {
+               
+               private LinkContentProvider linkContentProvider;
+               
+               
+               
+               public HierarchyContentProvider(LinkContentProvider linkContentProvider) {
+                       super();
+                       this.linkContentProvider = linkContentProvider;
+               }
+
+
+
+               @Override
+               public void setText(Document writer, Resource previous,
+                                       Resource current, Resource next, TextItem[] row) throws Exception {
+                       boolean writeDoc = false;
+                       boolean writeDiag = false;
+                       boolean writeToc = false;
+                       Table table = writer.getCurrentElement(Table.class);
+                       if (previous == null) {
+                               writeDoc = true;
+                               writeDiag = true;
+                               writeToc = true;
+                       } else if (writer.getCurrentLine() == 1) {
+                               writeDoc = true;
+                               writeDiag = true;
+                               writeToc = referenceComparator.compare(previous, current) != 0;
+                       } else  {
+                               if (referenceComparator.compare(previous, current) != 0) {
+                                       writeDoc = true;
+                                       writeDiag = true;
+                                       writeToc = true;
+                                       linkContentProvider.forceLabel = true;
+                               } else {
+                                       if (diagramComparator.compare(previous, current) != 0) {
+                                               writeDiag = true;
+                                               linkContentProvider.forceLabel = true;
+                                       }
+                               }
+                       }
+                       
+                       
+                       if (writeDoc) {
+                               if (writer.getAvailableLines() < 8) {
+                                       writer.nextPage();
+                                       table = writer.nextElement(Table.class,Document.TOC);
+                               }
+                               else if (writer.getCurrentLine() > 2)
+                                       table = writer.nextElement(Table.class,Document.TOC);
+                               
+                               
+                               Resource doc2 = SourceLinkUtil.getReferredDocument(graph, current);
+//                             TextSize size = table.getTextSize();
+//                             table.setTextSize(TextSize.MEDIUM);
+                               TextItem label = null;
+                               if (doc2 != null) {
+                                       label = getDocumentItem(doc2);
+                               } else {
+                                       label = getNonExistingDocumentItem();
+                               }
+                               if (writeToc) {
+                                       TableOfContents toc = writer.getCurrentElement(TableOfContents.class);
+                                       toc.addTocElement(label.getText(), table);
+                               }
+                               //table.writeRow(label);
+                               table.setTitle(label);
+//                             table.setTextSize(size);
+                       }
+                       if (writeDiag) {
+                               if (writer.getAvailableLines() < 3)
+                                       writer.nextPage();
+                               Resource parent = graph.getSingleObject(current, sl.hasSource_Inverse);
+                               List<Resource> path = SourceLinkUtil.getDiagramPath(graph, model, parent);
+                               if (path != null) {
+                                       TextSize size = table.getTextSize();
+                                       table.setTextSize(TextSize.MEDIUM);
+                                       table.writeRow("  " + diagramComparator.getText(path.get(path.size()-1))); //$NON-NLS-1$
+                                       table.setTextSize(size);
+                               }
+                       }
+                               
+               }
+       }
+       
+       
+       private class LinkContentProvider implements RowContentProvider<Resource> {
+               
+               private boolean forceLabel = false;
+               
+               @Override
+               public void setText(Document writer, Resource previous,
+                               Resource source, Resource next, TextItem[] text) throws Exception {
+                       Resource holder = graph.getSingleObject(source, sl.hasSource_Inverse);
+                       if (forceLabel || previous == null || !graph.getSingleObject(previous, sl.hasSource_Inverse).equals(graph.getSingleObject(source, sl.hasSource_Inverse))) {
+                               String holderName = NameUtils.getSafeLabel(graph, holder);
+                               if (holderName.length() == 0)
+                                       holderName = NameUtils.getSafeName(graph, holder);
+                               text[0] = writer.newItem(TextItem.class);
+                               text[0].setText(holderName);
+                               forceLabel = false;
+                       }
+                       if (graph.isInstanceOf(source, sl.FunctionalSource)) {
+                               Resource relation = graph.getPossibleObject(source, sl.consernsRelation);
+                               text[1] = writer.newItem(TextItem.class);
+                               if (relation != null) {
+                                       String relationName = NameUtils.getSafeLabel(graph, relation);
+                                       if (relationName.length() == 0)
+                                               relationName = NameUtils.getSafeName(graph, relation);
+                                       Object value = graph.getPossibleRelatedValue(holder, relation);
+                                       text[1].setText(relationName);
+                                       if (value != null) {
+                                               text[2] = writer.newItem(TextItem.class);
+                                               text[2].setText(SourceLinkUtil.getValueString(value));
+                                       }
+                               } else {
+                                       text[1].setText(Messages.DocumentStructureWriter_ErrorInPropertyReference);
+                               }
+                       }
+                       
+                       String comment = graph.getPossibleRelatedValue(source, sl.hasSourceComment);
+                       if (comment != null) {
+                               text[3] = writer.newItem(TextItem.class);
+                               text[3].setText(comment);
+                       }
+                       
+               }
+               
+       }
 }
\ No newline at end of file