X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Fmodel%2FModelUpdate.java;h=5f400df4c653285946551ea0f2addf8c4c81f497;hb=328e8a54d282ed4a390e6eb9eda027b3ed599bdf;hp=e736e22e8747758bf2aa640936ae788d102b4c07;hpb=fad28e2a01ee43b7448cffaef1bc6ba2eed84e39;p=simantics%2Finterop.git diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/model/ModelUpdate.java b/org.simantics.interop.update/src/org/simantics/interop/update/model/ModelUpdate.java index e736e22..5f400df 100644 --- a/org.simantics.interop.update/src/org/simantics/interop/update/model/ModelUpdate.java +++ b/org.simantics.interop.update/src/org/simantics/interop/update/model/ModelUpdate.java @@ -18,6 +18,7 @@ import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.util.Layer0Utils; import org.simantics.db.request.Read; import org.simantics.interop.test.GraphChanges; +import org.simantics.interop.test.GraphChanges.Modification; import org.simantics.interop.test.GraphComparator; import org.simantics.utils.datastructures.BijectionMap; import org.simantics.utils.datastructures.Pair; @@ -71,7 +72,7 @@ public abstract class ModelUpdate { showWarning(result2.second); comparator2.test(getSession()); changes2 = comparator2.getChanges(); - changes2 = getSession().syncRequest(new FilterChangesRead(changes2, filters)); + changes2 = getSession().syncRequest(createFilterRead(changes2, filters)); updateTree2 = getUpdateTree(changes2); updateList2 = getUpdateList(changes2); @@ -82,7 +83,7 @@ public abstract class ModelUpdate { showWarning(result3.second); comparator3.test(getSession()); changes3 = comparator3.getChanges(); - changes3 = getSession().syncRequest(new FilterChangesRead(changes3, filters)); + changes3 = getSession().syncRequest(createFilterRead(changes3, filters)); } Pair result = getChanges(oldModel,newModel); @@ -124,7 +125,7 @@ public abstract class ModelUpdate { } comparator.test(getSession()); changes = comparator.getChanges(); - changes = getSession().syncRequest(new FilterChangesRead(changes, filters)); + changes = getSession().syncRequest(createFilterRead(changes, filters)); updateTree = getUpdateTree(changes); updateList = getUpdateList(changes); if (userFilters.size() != 0) { @@ -194,7 +195,7 @@ public abstract class ModelUpdate { // Create filtered changes List combined = new ArrayList<>(filters); combined.addAll(userFilters); - GraphChanges filteredChanges = getSession().syncRequest(new FilterChangesRead(changes, combined)); + GraphChanges filteredChanges = getSession().syncRequest(createFilterRead(changes, combined)); UpdateTree updateTreeF = getUpdateTree(filteredChanges); UpdateList updateListF = getUpdateList(filteredChanges); // hide changes that are not contained within the filtered changes. @@ -240,7 +241,11 @@ public abstract class ModelUpdate { for (PropertyChange rc : r) { if (comparable.containsRight(rc)) continue; - if (lc.getFirst().equals(rc.getFirst())) { + if (lc.getFirst() != null && lc.getFirst().equals(rc.getFirst())) { + comparable.map(lc, rc); + break; + } + if (lc.getSecond() != null && lc.getSecond().equals(rc.getSecond())) { comparable.map(lc, rc); break; } @@ -339,6 +344,10 @@ public abstract class ModelUpdate { return Simantics.getSession(); } + public Read createFilterRead(GraphChanges changes, List filters) { + return new FilterChangesRead(changes, filters); + } + public static class FilterChangesRead implements Read { @@ -368,9 +377,9 @@ public abstract class ModelUpdate { protected GraphChanges filterChanges(ReadGraph g, GraphChanges changes) throws DatabaseException { - List> modifications = new ArrayList>(); + List modifications = new ArrayList(); - for (Pair mod : changes.getModifications()) { + for (Modification mod : changes.getModifications()) { boolean accept = true; for (ChangeFilter filter : filters) { @@ -389,7 +398,7 @@ public abstract class ModelUpdate { public interface ChangeFilter { - public boolean accept(ReadGraph g, Pair change) throws DatabaseException; + public boolean accept(ReadGraph g, Modification change) throws DatabaseException; } @@ -413,12 +422,12 @@ public abstract class ModelUpdate { } @Override - public boolean accept(ReadGraph g, Pair change) throws DatabaseException { + public boolean accept(ReadGraph g, Modification change) throws DatabaseException { //filter floating point values that have less than 1% difference. - if (!g.hasValue(change.first.getObject()) || !g.hasValue(change.second.getObject())) + if (!g.hasValue(change.getLeftStm().getObject()) || !g.hasValue(change.getRightStm().getObject())) return true; - Object v1 = g.getValue(change.first.getObject()); - Object v2 = g.getValue(change.second.getObject()); + Object v1 = g.getValue(change.getLeftStm().getObject()); + Object v2 = g.getValue(change.getRightStm().getObject()); if (v1 instanceof Double && v2 instanceof Double) { double d1 = (Double)v1; @@ -467,7 +476,7 @@ public abstract class ModelUpdate { if (pair.getFirst() != null) { boolean found = false; for (PropertyChange pair2 : updateList2.getChanges()) { - if (pair.getFirst().equals(pair2.getSecond())) { + if (pair.getFirst() != null && pair.getFirst().equals(pair2.getSecond())) { found = true; break; }