]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/rules/MappedElementRule.java
Fix change comparison expressions in mapping rules
[simantics/platform.git] / bundles / org.simantics.objmap2 / src / org / simantics / objmap / graph / rules / MappedElementRule.java
index 9761f555568fbc6b3827eaa2d6cd7ee77e9ad884..251895ad72a1aedc7aac9966b5f51b5bc83aa08b 100644 (file)
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.simantics.objmap.graph.rules;
 
+import java.util.Objects;
+
 import org.simantics.db.ReadGraph;
 import org.simantics.db.WriteGraph;
 import org.simantics.objmap.backward.IBackwardMapping;
@@ -61,10 +63,19 @@ public class MappedElementRule<Domain, Range> implements IBidirectionalMappingRu
         return rangeAccessor.set(rangeElement, mappedValue);
        }       
        
+       @Override
+       public boolean checkChanges(ReadGraph g, IForwardMapping<Domain, Range> map, Domain domainElement, Range rangeElement) throws MappingException {
+           Domain value = domainAccessor.get(g, domainElement);
+           Range mappedValue = value == null ? null : map.map(g, value);
+           return mappedValue != rangeAccessor.get(rangeElement);
+       }
+       
+    @Override
        public void createDomain(WriteGraph g, IBackwardMapping<Domain,Range> map, Domain domainElement, Range rangeElement) throws MappingException {
                updateDomain(g, map, domainElement, rangeElement);
        };
        
+    @Override
        public void createRange(ReadGraph g, IForwardMapping<Domain,Range> map, Domain domainElement, Range rangeElement) throws MappingException {
                updateRange(g, map, domainElement, rangeElement);
        };