+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.eclipse.jface.resource.ImageDescriptor;\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.Activator;\r
+import org.simantics.document.linking.ontology.DocumentLink;\r
+import org.simantics.document.linking.report.DocumentLine;\r
+import org.simantics.objmap.graph.annotations.OrderedSetType;\r
+\r
+\r
+/**\r
+ * Or node returns the first non null value of children.\r
+ * \r
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
+ *\r
+ */\r
+\r
+@OrderedSetType(DocumentLink.URIs.EvaluatorTree_Or)\r
+public class Or extends EvaluatorNode{\r
+ \r
+ \r
+ \r
+ @Override\r
+ public String getValue(ReadGraph graph, Variable variable, Map<Object, Object> context) throws DatabaseException {\r
+ \r
+ for (int i = 0 ; i < children.size(); i++) {\r
+ String s = children.get(i).getValue(graph, variable, context);\r
+ if (s != null && s.length() > 0)\r
+ return s;\r
+ }\r
+ \r
+ return null;\r
+ }\r
+ \r
+ @Override\r
+ public List<DocumentLine> getLines(ReadGraph graph, Variable variable, Map<Object, Object> context) throws DatabaseException {\r
+ for (int i = 0 ; i < children.size(); i++) {\r
+ List<DocumentLine> list = children.get(i).getLines(graph, variable, context);\r
+ if (list.size() > 0)\r
+ return list;\r
+ }\r
+ return Collections.emptyList();\r
+ }\r
+ \r
+ @Override\r
+ public String toString() {\r
+ return "or";\r
+ }\r
+ \r
+ @Override\r
+ public EvaluatorItem copy() {\r
+ Or or = new Or();\r
+ copyChildren(or);\r
+ return or;\r
+ }\r
+ \r
+ @Override\r
+ public ImageDescriptor getImage() {\r
+ return Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/text_list_numbers.png");\r
+ }\r
+ \r
+ \r
+\r
+}\r