1 package org.simantics.modeling;
\r
3 import java.util.Arrays;
\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
13 public class PartialIC {
\r
15 public static Binding BINDING = Bindings.getBindingUnchecked(PartialIC.class);
\r
17 public RVI[] rvis = {};
\r
18 public Variant[] variants = {};
\r
20 //public TreeMap<RVI, Variant> values = new TreeMap<RVI, Variant>();
\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
28 //values.put(rvi, value);
\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
37 //// System.err.println("apply " + v.getURI(graph) + " => " + variant);
\r
38 // v.setValue(graph, variant.getValue(), variant.getBinding());
\r
40 // System.err.println("failed to resolve " + rvi);
\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
48 for (int i = 0; i < rvis.length; i++) {
\r
50 Variant variant = variants[i];
\r
51 Variable v = rvi.resolvePossible(graph, base);
\r
53 // System.err.println("apply " + v.getURI(graph) + " => " + variant);
\r
54 v.setValue(graph, variant.getValue(), variant.getBinding());
\r
56 System.err.println("failed to resolve " + rvi);
\r