Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Richard2014-02-25 08:54:33 +0000
committerAxel Richard2014-02-25 09:07:39 +0000
commite9fbfd866f648083df83174d566ee1b9d61daeca (patch)
treefe59acfce532abc48412ecdbed6f9ac75a6cfb3f
parentd023c7264684dc137e208e2e271cc1bb60923f33 (diff)
downloadorg.eclipse.emf.compare-e9fbfd866f648083df83174d566ee1b9d61daeca.tar.gz
org.eclipse.emf.compare-e9fbfd866f648083df83174d566ee1b9d61daeca.tar.xz
org.eclipse.emf.compare-e9fbfd866f648083df83174d566ee1b9d61daeca.zip
Improves updateChangedDependencies() in ProjectModelResolver
Add removeAll method in org.eclipse.emf.compare.ide.ui.internal.logical.Graph Change-Id: I95c6cd88173762e88d37323cbd528d748bf5e559
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/Graph.java14
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java13
2 files changed, 20 insertions, 7 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/Graph.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/Graph.java
index ef4b99f98..3aaccc8b3 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/Graph.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/Graph.java
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Iterators;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -103,6 +104,19 @@ public final class Graph<E> {
}
/**
+ * Removes the given elements' nodes from this graph. This will effectively break all connections to these
+ * nodes.
+ *
+ * @param elements
+ * The elements which are to be removed from this graph.
+ */
+ public void removeAll(Collection<E> elements) {
+ for (E e : elements) {
+ remove(e);
+ }
+ }
+
+ /**
* Connects the given set of elements to a given parent. Note that nodes will be created for all new
* elements if they do not exist yet.
*
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java
index 9cd45fa25..b3c2b8079 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/logical/ProjectModelResolver.java
@@ -330,15 +330,14 @@ public class ProjectModelResolver extends LogicalModelResolver {
final Set<URI> removedURIs = resourceListener.popRemovedURIs();
final Set<URI> changedURIs = Sets.difference(resourceListener.popChangedURIs(), removedURIs);
- for (URI removed : removedURIs) {
- dependencyGraph.remove(removed);
- }
+ dependencyGraph.removeAll(removedURIs);
+ dependencyGraph.removeAll(changedURIs);
for (URI changed : changedURIs) {
- dependencyGraph.remove(changed);
-
- final IFile file = getFileAt(changed);
- updateDependencies(file, monitor);
+ if (!dependencyGraph.contains(changed)) {
+ final IFile file = getFileAt(changed);
+ updateDependencies(file, monitor);
+ }
}
}

Back to the top