]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/rules/ValueRule.java
Fix change comparison expressions in mapping rules
[simantics/platform.git] / bundles / org.simantics.objmap2 / src / org / simantics / objmap / graph / rules / ValueRule.java
index d40c44f2b3287975c1d9c12a2e791048a83be1d7..2e2b81b191abe792826df445f55e548357df888c 100644 (file)
@@ -13,6 +13,9 @@ package org.simantics.objmap.graph.rules;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import java.util.Objects;
+
 import org.simantics.db.ReadGraph;
 import org.simantics.db.WriteGraph;
 import org.simantics.objmap.backward.IBackwardMapping;
@@ -45,7 +48,7 @@ public class ValueRule<Domain, Range> implements IBidirectionalMappingRule<Domai
        public boolean updateDomain(WriteGraph g, IBackwardMapping<Domain, Range> map,
                        Domain domainElement, Range rangeElement)
                        throws MappingException {
-        LOGGER.info("    ValueRule.updateDomain");         
+        LOGGER.trace("    ValueRule.updateDomain");        
                Object value = rangeAccessor.get(rangeElement);
                return domainAccessor.set(g, domainElement, value);
        }
@@ -54,10 +57,17 @@ public class ValueRule<Domain, Range> implements IBidirectionalMappingRule<Domai
        public boolean updateRange(ReadGraph g, IForwardMapping<Domain, Range> map,
                        Domain domainElement, Range rangeElement)
                        throws MappingException {
-        LOGGER.info("    ValueRule.updateRange");
+        LOGGER.trace("    ValueRule.updateRange");
                Object value = domainAccessor.get(g, domainElement);
                return rangeAccessor.set(rangeElement, value);
-       }       
+       }
+       
+       @Override
+       public boolean checkChanges(ReadGraph g, IForwardMapping<Domain, Range> map, Domain domainElement,
+                       Range rangeElement) throws MappingException {
+               Object value = rangeAccessor.get(rangeElement);
+               return !Objects.equals(value, domainAccessor.get(g, domainElement));
+       }
        
        public void createDomain(WriteGraph g, IBackwardMapping<Domain,Range> map, Domain domainElement, Range rangeElement) throws MappingException {
                updateDomain(g, map, domainElement, rangeElement);