]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/PartialIC.java
Sync git svn branch with SVN repository r33366.
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / PartialIC.java
1 package org.simantics.modeling;\r
2 \r
3 import java.util.Arrays;\r
4 \r
5 import org.simantics.databoard.Bindings;\r
6 import org.simantics.databoard.binding.Binding;\r
7 import org.simantics.databoard.binding.mutable.Variant;\r
8 import org.simantics.db.WriteGraph;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.db.layer0.variable.RVI;\r
11 import org.simantics.db.layer0.variable.Variable;\r
12 \r
13 public class PartialIC {\r
14 \r
15         public static Binding BINDING = Bindings.getBindingUnchecked(PartialIC.class);\r
16         \r
17         public RVI[] rvis = {};\r
18         public Variant[] variants = {};\r
19         \r
20         //public TreeMap<RVI, Variant> values = new TreeMap<RVI, Variant>(); \r
21         \r
22         public void add(RVI rvi, Variant value) {\r
23             rvis = Arrays.copyOf(rvis, rvis.length + 1);\r
24             rvis[rvis.length - 1] = rvi;\r
25             variants = Arrays.copyOf(variants, variants.length + 1);\r
26         variants[rvis.length - 1] = value;\r
27         \r
28                 //values.put(rvi, value);\r
29         }\r
30         \r
31         public void apply(WriteGraph graph, Variable base) throws DatabaseException {\r
32 //              for(Map.Entry<RVI,Variant> entry : values.entrySet()) {\r
33 //                      RVI rvi = entry.getKey();\r
34 //                      Variant variant = entry.getValue();\r
35 //                      Variable v = rvi.resolvePossible(graph, base);\r
36 //                      if(v != null) {\r
37 ////                            System.err.println("apply " + v.getURI(graph) + " => " + variant);\r
38 //                              v.setValue(graph, variant.getValue(), variant.getBinding());\r
39 //                      } else {\r
40 //                              System.err.println("failed to resolve " + rvi);\r
41 //                      }\r
42 //              }\r
43             \r
44             if (rvis.length != variants.length) {\r
45                 throw new DatabaseException("PartialIC has broken RVI and Variant data arrays. Tried to apply to " + base.getURI(graph));\r
46             }\r
47             \r
48             for (int i = 0; i < rvis.length; i++) {\r
49                 RVI rvi = rvis[i];\r
50                 Variant variant = variants[i];\r
51                 Variable v = rvi.resolvePossible(graph, base);\r
52                 if (v != null) {\r
53 //              System.err.println("apply " + v.getURI(graph) + " => " + variant);\r
54                 v.setValue(graph, variant.getValue(), variant.getBinding());\r
55             } else {\r
56                 System.err.println("failed to resolve " + rvi);\r
57             }\r
58         }\r
59             \r
60         }\r
61         \r
62 }\r