]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.update/src/org/simantics/interop/update/model/PropertyChange.java
Applying enumeration (or SCL value) with model specific relation.
[simantics/interop.git] / org.simantics.interop.update / src / org / simantics / interop / update / model / PropertyChange.java
index d1a64afb9843a71bd5cba32edcbc815ac16ead21..772289f2478f80570a28f23cbde1adacc0b8e325 100644 (file)
@@ -110,10 +110,8 @@ public class PropertyChange {
                                value = graph.getValue(pair.second.getObject());
                        }
                        type = graph.getPossibleType(pair.second.getObject(), L0.Literal);
-                       Resource pred = pair.second.getPredicate();
-                       if (getChanges().getComparable().containsRight(pred))
-                               pred = getChanges().getComparable().getLeft(pred);
                        
+                       Resource pred = _getPredicate();
                        if (value != null) {
                                graph.deny(s, pred);
                                if (type != null) {
@@ -126,7 +124,7 @@ public class PropertyChange {
                        }
                        applied = true;
                } else if (graph.isInstanceOf(pair.second.getObject(), L0.SCLValue)) {
-                       Resource pred = pair.second.getPredicate();
+                       Resource pred = _getPredicate();
                        graph.deny(s, pred);
                        Resource valueResource = graph.newResource();
                        graph.claim(valueResource, L0.InstanceOf, graph.getSingleObject(pair.second.getObject(), L0.InstanceOf));
@@ -136,7 +134,7 @@ public class PropertyChange {
                } else {
                        Resource type = graph.getPossibleType(pair.second.getObject(), L0.Value);
                        if (type != null && graph.hasStatement(type, L0.Enumeration, type)) {
-                               Resource pred = pair.second.getPredicate();
+                               Resource pred = _getPredicate();
                                graph.deny(s, pred);
                                graph.claim(s, pred, pair.second.getObject());
                                applied = true;
@@ -146,6 +144,13 @@ public class PropertyChange {
                
        }
        
+       private Resource _getPredicate() {
+               Resource pred = pair.second.getPredicate();
+               if (getChanges().getComparable().containsRight(pred))
+                       pred = getChanges().getComparable().getLeft(pred);
+               return pred;
+       }
+       
        /**
         * Sets selected state. 
         * @param select