]> 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 718bc7c2d780ec46ded879a5416cf37d6051a7a1..2e2b81b191abe792826df445f55e548357df888c 100644 (file)
  *******************************************************************************/
 package org.simantics.objmap.graph.rules;
 
-import org.apache.log4j.Logger;
+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;
@@ -29,7 +33,7 @@ import org.simantics.objmap.graph.rules.range.IRangeAccessor;
  */
 public class ValueRule<Domain, Range> implements IBidirectionalMappingRule<Domain, Range> {
     
-    static Logger LOGGER = Logger.getLogger("org.simantics.objmap");
+    static Logger LOGGER = LoggerFactory.getLogger(ValueRule.class);
     
        IDomainAccessor<Domain,Object> domainAccessor;
        IRangeAccessor<Range,Object> rangeAccessor;
@@ -44,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);
        }
@@ -53,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);