[531720] Optimize DesignServices.getDisplayedEClasses and related Bug: 531720 Change-Id: I4dafb814d49b240ebdb34d9eb952d9f7a6dcb8b9 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
diff --git a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java index c56674b..fbbab68 100644 --- a/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java +++ b/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/DesignServices.java
@@ -69,6 +69,7 @@ import org.eclipse.sirius.diagram.EdgeTarget; import org.eclipse.sirius.diagram.business.api.query.DDiagramQuery; import org.eclipse.sirius.diagram.business.internal.helper.task.operations.CreateViewTask; +import org.eclipse.sirius.diagram.business.internal.query.DDiagramInternalQuery; import org.eclipse.sirius.diagram.description.AbstractNodeMapping; import org.eclipse.sirius.diagram.description.DiagramElementMapping; import org.eclipse.sirius.diagram.description.tool.CreateView; @@ -250,7 +251,7 @@ public Set<EClass> getDisplayedEClasses(DSemanticDiagram diagram) { Set<EClass> result = Sets.newLinkedHashSet(); - Iterator<DNodeList> it = Iterators.filter(new DDiagramQuery(diagram).getAllDiagramElements().iterator(), + Iterator<DNodeList> it = Iterators.filter(new DDiagramInternalQuery(diagram).getContainers().iterator(), DNodeList.class); while (it.hasNext()) { DNodeList dec = it.next(); @@ -263,9 +264,9 @@ public Set<EClassifier> getDisplayedEClassifiers(DSemanticDiagram diagram) { Set<EClassifier> result = Sets.newLinkedHashSet(); - Iterator<DNodeList> it = Iterators.filter(new DDiagramQuery(diagram).getAllDiagramElements().iterator(), - DNodeList.class); - while (it.hasNext()) { + Iterator<DNodeList> it = Iterators.filter(new DDiagramInternalQuery(diagram).getContainers().iterator(), + DNodeList.class); + while (it.hasNext()) { DNodeList dec = it.next(); if (dec.getTarget() instanceof EClassifier && dec.isVisible()) { result.add((EClassifier) dec.getTarget()); @@ -276,8 +277,8 @@ private Set<EClass> getInternalEClasses(DSemanticDiagram diagram) { Set<EClass> result = Sets.newLinkedHashSet(); - Iterator<DNodeList> it = Iterators.filter(new DDiagramQuery(diagram).getAllDiagramElements().iterator(), - DNodeList.class); + Iterator<DNodeList> it = Iterators.filter(new DDiagramInternalQuery(diagram).getContainers().iterator(), + DNodeList.class); while (it.hasNext()) { DNodeList dec = it.next(); if (dec.getTarget() instanceof EClass) {