]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/report/evaluator/Or.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / report / evaluator / Or.java
1 package org.simantics.document.linking.report.evaluator;\r
2 \r
3 import java.util.Collections;\r
4 import java.util.List;\r
5 import java.util.Map;\r
6 \r
7 import org.eclipse.jface.resource.ImageDescriptor;\r
8 import org.simantics.db.ReadGraph;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.db.layer0.variable.Variable;\r
11 import org.simantics.document.linking.Activator;\r
12 import org.simantics.document.linking.ontology.DocumentLink;\r
13 import org.simantics.document.linking.report.DocumentLine;\r
14 import org.simantics.objmap.graph.annotations.OrderedSetType;\r
15 \r
16 \r
17 /**\r
18  * Or node returns the first non null value of children.\r
19  * \r
20  * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
21  *\r
22  */\r
23 \r
24 @OrderedSetType(DocumentLink.URIs.EvaluatorTree_Or)\r
25 public class Or extends EvaluatorNode{\r
26         \r
27         \r
28         \r
29         @Override\r
30         public String getValue(ReadGraph graph, Variable variable, Map<Object, Object> context) throws DatabaseException {\r
31                 \r
32                 for (int i = 0 ; i < children.size(); i++) {\r
33                         String s =  children.get(i).getValue(graph, variable, context);\r
34                         if (s != null && s.length() > 0)\r
35                                 return s;\r
36                 }\r
37                 \r
38                 return null;\r
39         }\r
40         \r
41         @Override\r
42         public List<DocumentLine> getLines(ReadGraph graph,     Variable variable, Map<Object, Object> context) throws DatabaseException {\r
43                 for (int i = 0 ; i < children.size(); i++) {\r
44                         List<DocumentLine> list = children.get(i).getLines(graph, variable, context);\r
45                         if (list.size() > 0)\r
46                                 return list;\r
47                 }\r
48                 return Collections.emptyList();\r
49         }\r
50         \r
51         @Override\r
52         public String toString() {\r
53                 return "or";\r
54         }\r
55         \r
56         @Override\r
57         public EvaluatorItem copy() {\r
58                 Or or = new Or();\r
59                 copyChildren(or);\r
60                 return or;\r
61         }\r
62         \r
63         @Override\r
64         public ImageDescriptor getImage() {\r
65                 return Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/text_list_numbers.png");\r
66         }\r
67         \r
68         \r
69 \r
70 }\r