--- /dev/null
+package org.simantics.document.linking.report.evaluator;\r
+\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.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.document.linking.report.DocumentLine;\r
+\r
+\r
+public abstract class HintNode extends EvaluatorNode{\r
+ \r
+ \r
+ public abstract Object getHintValue();\r
+ public abstract Object getHintClass();\r
+ \r
+ @Override\r
+ public String getValue(ReadGraph graph, Variable variable, Map<Object, Object> context)\r
+ throws DatabaseException {\r
+ if (children.size() > 0)\r
+ return children.get(0).getValue(graph, variable, context);\r
+ return null;\r
+ }\r
+ \r
+ @Override\r
+ public List<DocumentLine> getLines(ReadGraph graph, Variable variable, Map<Object, Object> context) throws DatabaseException {\r
+ if (children.size() > 0) {\r
+ List<DocumentLine> list = children.get(0).getLines(graph, variable, context);\r
+ for (DocumentLine line : list)\r
+ line.getHints().put(getHintClass(), getHintValue());\r
+ return list;\r
+ }\r
+ return Collections.emptyList();\r
+ }\r
+\r
+ \r
+ @Override\r
+ public List<Class<? extends EvaluatorItem>> getPossibleChildren(boolean add) {\r
+ if (add && children.size() > 0)\r
+ return Collections.emptyList();\r
+ return super.getPossibleChildren(add);\r
+ }\r
+ \r
+ @Override\r
+ public boolean acceptChild(EvaluatorItem item) {\r
+ return children.size() == 0;\r
+ }\r
+ \r
+ @Override\r
+ public boolean acceptChild(int index, EvaluatorItem item) {\r
+ return children.size() == 0;\r
+ }\r
+ \r
+\r
+}\r