X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Fmodel%2FUpdateTree.java;h=aa6d7a3f65226a63344c9884bef9a481ab08a50f;hb=8a95085e54a10c15f40ccb2c2b434d30e1c5fda1;hp=a2066f4108c33e35a92d10b28ab9314c2153c34f;hpb=6653e4a7d79b9766b6037111681d92f914c161b0;p=simantics%2Finterop.git diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateTree.java b/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateTree.java index a2066f4..aa6d7a3 100644 --- a/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateTree.java +++ b/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateTree.java @@ -51,7 +51,13 @@ public class UpdateTree { private UpdateNode createNode(ReadGraph g, Resource r1, Resource r2) throws DatabaseException { UpdateNode node = null; if (r1 != null && r2 != null) { - node = createNode(g, UpdateStatus.EXIST, r1); + UpdateOp op = updateOps.getUpdateOp(r1); + if (op == null) + op = updateOps.getUpdateOp(r2); + if (op == null) + node = createNode(g, UpdateStatus.EXIST, r1); + else + node = createNode(g, UpdateStatus.EXIST, op); nodes.put(r1, node); nodes.put(r2, node); } else if (r1 != null) { @@ -65,9 +71,6 @@ public class UpdateTree { } public UpdateNode addNode(ReadGraph g, Resource r1, Resource r2) throws DatabaseException { - if (r1 != null && r2 != null) { - return null; - } if (nodes.containsKey(r1)) return nodes.get(r1); if (nodes.containsKey(r2)) @@ -130,8 +133,12 @@ public class UpdateTree { if (!handleCustom(g, op)) { if (op.isAdd()) { addNode(g, null,op.getResource()); - } else { + } else if (op.isDelete()){ addNode(g, op.getResource(), null); + } else if (op.isChange()) { + Resource l = getChanges().getComparable().containsLeft(op.getResource()) ? op.getResource() :getChanges().getComparable().getLeft(op.getResource()); + Resource r = getChanges().getComparable().containsRight(op.getResource()) ? op.getResource() :getChanges().getComparable().getRight(op.getResource()); + addNode(g, l, r); } } }