]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/utils/VariableReferences.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / utils / VariableReferences.java
1 package org.simantics.modeling.utils;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import org.simantics.databoard.type.Datatype;\r
7 import org.simantics.databoard.util.ObjectUtils;\r
8 import org.simantics.db.ReadGraph;\r
9 import org.simantics.db.Resource;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.db.layer0.variable.RVI;\r
12 import org.simantics.db.layer0.variable.Variable;\r
13 import org.simantics.db.layer0.variable.VariableReference;\r
14 import org.simantics.db.layer0.variable.Variables;\r
15 import org.simantics.db.request.Read;\r
16 import org.simantics.modeling.PropertyVariables;\r
17 \r
18 /**\r
19  * A intermediate hack solution for converting variables to variable references.\r
20  * {@link NodeReference}s and {@link Datatype}s for subscription and charting\r
21  * purposes.\r
22  * \r
23  * @author Tuukka Lehtonen\r
24  */\r
25 public final class VariableReferences {\r
26 \r
27     public static Read<List<VariableReference>> toReferences(final List<PropertyVariables> vars) {\r
28         return toReferences(null, vars);\r
29     }\r
30 \r
31     public static Read<List<VariableReference>> toReferences(final Resource expectedModel, final List<PropertyVariables> vars) {\r
32         return new Read<List<VariableReference>>() {\r
33             @Override\r
34             public List<VariableReference> perform(ReadGraph graph) throws DatabaseException {\r
35                 List<VariableReference> result = new ArrayList<VariableReference>();\r
36                 for (PropertyVariables v : vars) {\r
37                     if (expectedModel != null) {\r
38                         // Check that the model of the variable matches the target model.\r
39                         Resource model = Variables.getModel(graph, v.getContainer());\r
40                         if (!ObjectUtils.objectEquals(expectedModel, model))\r
41                             continue;\r
42                     }\r
43 \r
44                     Datatype datatype = v.getVisualVariable().getPossibleDatatype(graph);\r
45 \r
46 //                    System.out.println("URI1: " + v.getContainer().getURI(graph));\r
47 //                    System.out.println("URI2: " + v.getExperiment().getURI(graph));\r
48 //                    System.out.println("URI3: " + v.getProperty().getURI(graph));\r
49 //                    System.out.println("RVI: " + Variables.getRVI(graph, v.getProperty()));\r
50                     RVI rvi = Variables.getRVI2(graph, v.getVisualVariable());\r
51 //                    String rvi = Variables.getRVI(graph, v.getVisualVariable());\r
52 //                    String nodeReference = rvi.replaceFirst("/", "");\r
53 //                    System.out.println("NODEREF: " + nodeReference);\r
54 //                    System.out.println("DATATYPE: " + datatype);\r
55                     result.add( VariableReference.of( rvi, datatype, null ) );\r
56                 }\r
57                 return result;\r
58             }\r
59         };\r
60     }\r
61 \r
62     public static Read<List<VariableReference>> variablesToReferences(final List<Variable> vars) {\r
63         return variablesToReferences((Resource) null, vars);\r
64     }\r
65 \r
66     public static Read<List<VariableReference>> variablesToReferences(final Resource expectedModel, final List<Variable> vars) {\r
67         return new Read<List<VariableReference>>() {\r
68             @Override\r
69             public List<VariableReference> perform(ReadGraph graph) throws DatabaseException {\r
70                 List<VariableReference> result = new ArrayList<VariableReference>();\r
71                 for (Variable v : vars) {\r
72                     if (expectedModel != null) {\r
73                         // Check that the model of the variable matches the target model.\r
74                         Resource model = Variables.getModel(graph, v);\r
75                         if (!ObjectUtils.objectEquals(expectedModel, model))\r
76                             continue;\r
77                     }\r
78                     Datatype datatype = v.getPossibleDatatype(graph);\r
79                     RVI rvi = Variables.getRVI2(graph, v);\r
80 //                    String rvi = Variables.getRVI(graph, v);\r
81 //                    String nodeReference = rvi.replaceFirst("/", "");\r
82                     result.add( VariableReference.of( rvi, datatype, null ) );\r
83                 }\r
84                 return result;\r
85             }\r
86         };\r
87     }\r
88 \r
89 }\r