From 2de9ca9c20cbb4dca4ae274547d65ec6f1cbc893 Mon Sep 17 00:00:00 2001 From: Marko Luukkainen Date: Fri, 24 Feb 2017 13:15:04 +0200 Subject: [PATCH] Refactoring update dependency tree calculation refs #7045 Change-Id: If298ffbcc83520c12683252ca9eaa4243e3addd3 --- .../update/editor/UpdateEditorInput.java | 8 +++++ .../interop/update/model/UpdateTree.java | 29 +++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/editor/UpdateEditorInput.java b/org.simantics.interop.update/src/org/simantics/interop/update/editor/UpdateEditorInput.java index f91f659..3c0a025 100644 --- a/org.simantics.interop.update/src/org/simantics/interop/update/editor/UpdateEditorInput.java +++ b/org.simantics.interop.update/src/org/simantics/interop/update/editor/UpdateEditorInput.java @@ -1,8 +1,10 @@ package org.simantics.interop.update.editor; +import org.eclipse.ui.PartInitException; import org.simantics.db.Resource; import org.simantics.db.layer0.variable.RVI; import org.simantics.ui.workbench.ResourceEditorInput2; +import org.simantics.utils.ui.workbench.WorkbenchUtils; /** * Editor input for ModelUpdateEditor @@ -12,6 +14,7 @@ import org.simantics.ui.workbench.ResourceEditorInput2; */ public class UpdateEditorInput extends ResourceEditorInput2{ + private String editorID; private Resource r1; private Resource r2; @@ -19,6 +22,7 @@ public class UpdateEditorInput extends ResourceEditorInput2{ super(editorID, r1, model, rvi); this.r1 = r1; this.r2 = r2; + this.editorID = editorID; } public Resource getR1() { @@ -30,4 +34,8 @@ public class UpdateEditorInput extends ResourceEditorInput2{ } + public void openEditor() throws PartInitException { + WorkbenchUtils.openEditor(editorID, this); + } + } 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 d06d706..de5ea90 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 @@ -75,19 +75,19 @@ public class UpdateTree { return node; } + protected UpdateNode getNode(Resource r) { + return nodes.get(r); + } + protected boolean connectParent(ReadGraph g, UpdateNode node) throws DatabaseException { UpdateNode parent = null; while (true) { Resource parentResource = node.getParentResource(g); parent = nodes.get(parentResource); if (parent == null) { - if (changes.getComparable().containsLeft(parentResource)) { - parent = createNode(parentResource, changes.getComparable().getRight(parentResource)); - } else if (changes.getComparable().containsRight(parentResource)) { - parent = createNode(changes.getComparable().getLeft(parentResource) ,parentResource); - } else { + parent = getOrCreate(g, parentResource); + if (parent == null) return false; - } //parent.setStatus(Status.CONTAINS); parent.addChild(node); node = parent; @@ -100,6 +100,23 @@ public class UpdateTree { } } + protected UpdateNode getOrCreate(ReadGraph g, Resource parentResource) throws DatabaseException { + UpdateNode parent = nodes.get(parentResource); + if (parent == null) { + if (changes.getComparable().containsLeft(parentResource)) { + parent = createNode(parentResource, changes.getComparable().getRight(parentResource)); + } else if (changes.getComparable().containsRight(parentResource)) { + parent = createNode(changes.getComparable().getLeft(parentResource) ,parentResource); + } else { + return null; + } + //parent.setStatus(Status.CONTAINS + } + return parent; + } + + + protected boolean handleCustom(ReadGraph g, UpdateOp op) throws DatabaseException { return false; } -- 2.45.2