import java.util.ArrayList;
import java.util.Collection;
+import java.util.Objects;
import org.simantics.db.ReadGraph;
import org.simantics.db.WriteGraph;
Domain domainElement, Range rangeElement)
throws MappingException {
LOGGER.trace(" MappedElementsRule.updateRange");
- Collection<Domain> value = domainAccessor.get(g, domainElement);
+ ArrayList<Range> mappedValue = getMappedValue(g, map, domainElement);
+ return rangeAccessor.set(rangeElement, mappedValue);
+ }
+
+ @Override
+ public boolean checkChanges(ReadGraph g, IForwardMapping<Domain, Range> map, Domain domainElement, Range rangeElement) throws MappingException {
+ LOGGER.trace(" MappedElementsRule.updateRange");
+ ArrayList<Range> mappedValue = getMappedValue(g, map, domainElement);
+ return !Objects.equals(mappedValue, rangeAccessor.get(rangeElement));
+ }
+
+ private ArrayList<Range> getMappedValue(ReadGraph g, IForwardMapping<Domain, Range> map, Domain domainElement)
+ throws MappingException {
+ Collection<Domain> value = domainAccessor.get(g, domainElement);
ArrayList<Range> mappedValue = new ArrayList<Range>(value.size());
for(Domain r : value)
mappedValue.add(map.map(g, r));//map.get(r));
- return rangeAccessor.set(rangeElement, mappedValue);
- }
+ return mappedValue;
+ }
public void createDomain(WriteGraph g, IBackwardMapping<Domain,Range> map, Domain domainElement, Range rangeElement) throws MappingException {
updateDomain(g, map, domainElement, rangeElement);