diff --git a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java index a0cf218178..e5e4b222ee 100644 --- a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java +++ b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/geometry/GeoKanteGeometryServiceImpl.java @@ -37,6 +37,7 @@ import java.util.stream.StreamSupport; import org.eclipse.e4.core.services.events.IEventBroker; +import org.eclipse.set.basis.IModelSession; import org.eclipse.set.basis.Pair; import org.eclipse.set.basis.constants.ContainerType; import org.eclipse.set.basis.constants.Events; @@ -181,7 +182,9 @@ public GeoKanteGeometryServiceImpl() { public void handleEvent(final Event event) { final String topic = event.getTopic(); if (topic.equals(Events.TOPMODEL_CHANGED) && event.getProperty( - IEventBroker.DATA) instanceof final PlanPro_Schnittstelle schnitstelle) { + IEventBroker.DATA) instanceof final IModelSession modelSession) { + final PlanPro_Schnittstelle schnitstelle = modelSession + .getPlanProSchnittstelle(); // Only clear geometry data when main session change final GeoKanteGeometrySessionData sessionData = getSessionData( schnitstelle); diff --git a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/BankServiceImpl.java b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/BankServiceImpl.java index c82c4169a5..62c1492ca8 100644 --- a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/BankServiceImpl.java +++ b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/BankServiceImpl.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import org.eclipse.e4.core.services.events.IEventBroker; +import org.eclipse.set.basis.IModelSession; import org.eclipse.set.basis.constants.ContainerType; import org.eclipse.set.basis.constants.Events; import org.eclipse.set.basis.constants.ToolboxConstants; @@ -107,9 +108,10 @@ public Map> getBankingInformati @Override public void handleEvent(final Event event) { final String topic = event.getTopic(); - if (topic.equals(Events.TOPMODEL_CHANGED)) { - final PlanPro_Schnittstelle planProSchnittstelle = (PlanPro_Schnittstelle) event - .getProperty(IEventBroker.DATA); + if (topic.equals(Events.TOPMODEL_CHANGED) && event.getProperty( + IEventBroker.DATA) instanceof final IModelSession modelSession) { + final PlanPro_Schnittstelle planProSchnittstelle = modelSession + .getPlanProSchnittstelle(); final BankingInformationSession collection = getBankingSession( planProSchnittstelle); collection.getBankingInformations().clear(); @@ -138,6 +140,7 @@ public void run() { final HashMap properties = new HashMap<>(); properties.put(EventConstants.EVENT_TOPIC, Events.BANKING_PROCESS_DONE); + properties.put(IEventBroker.DATA, modelSession); eventAdmin.sendEvent(new Event( Events.BANKING_PROCESS_DONE, properties)); } catch (final InterruptedException e) { diff --git a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/TopologicalGraphServiceImpl.java b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/TopologicalGraphServiceImpl.java index a1cbf140e6..574f1c0414 100644 --- a/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/TopologicalGraphServiceImpl.java +++ b/java/bundles/org.eclipse.set.application/src/org/eclipse/set/application/graph/TopologicalGraphServiceImpl.java @@ -107,7 +107,7 @@ public void handleEvent(final Event event) { // Notify that the top model changed final Map properties = new HashMap<>(); - properties.put("org.eclipse.e4.data", planProSchnittstelle); //$NON-NLS-1$ + properties.put(IEventBroker.DATA, modelsession); eventAdmin.sendEvent(new Event(Events.TOPMODEL_CHANGED, properties)); } diff --git a/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/PlazModelPart.java b/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/PlazModelPart.java index 1a71c10e78..7681663d4d 100644 --- a/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/PlazModelPart.java +++ b/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/PlazModelPart.java @@ -9,6 +9,7 @@ package org.eclipse.set.feature.plazmodel; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; import org.eclipse.e4.core.services.events.IEventBroker; @@ -44,8 +45,6 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; -import org.osgi.service.event.Event; -import org.osgi.service.event.EventHandler; import jakarta.annotation.PostConstruct; import jakarta.inject.Inject; @@ -83,40 +82,39 @@ public class PlazModelPart extends AbstractEmfFormsPart { @SuppressWarnings("unchecked") @PostConstruct private void postConstruct() { - getBroker().subscribe(Events.DO_PLAZ_CHECK, new EventHandler() { - - @Override - public void handleEvent(final Event event) { - final Object property = event.getProperty(IEventBroker.DATA); - if (property instanceof final Class clazz - && PlazCheck.class.isAssignableFrom(clazz)) { - final PlazReport newReport = plazModelService.runPlazModel( - getModelSession(), - (Class) clazz); - if (plazReport == null - || plazReport.getEntries().isEmpty()) { - tableView.updateView(newReport); - return; - } - - final List objectArts = newReport.getEntries() - .stream() - .map(ValidationProblem::getObjectArt) - .distinct() - .toList(); - final List oldReports = plazReport - .getEntries() - .stream() - .filter(entry -> objectArts - .contains(entry.getObjectArt())) - .toList(); - plazReport.getEntries().removeAll(oldReports); - plazReport.getEntries().addAll(newReport.getEntries()); - PlazModelService - .sortAndIndexedProblems(plazReport.getEntries()); - tableView.updateView(plazReport); + getBroker().subscribe(Events.DO_PLAZ_CHECK, event -> { + final Object property = event.getProperty(IEventBroker.DATA); + if (property instanceof final Class clazz + && PlazCheck.class.isAssignableFrom(clazz)) { + final PlazReport newReport = plazModelService.runPlazModel( + getModelSession(), (Class) clazz); + if (plazReport == null || plazReport.getEntries().isEmpty()) { + tableView.updateView(newReport); + return; } - + // The PlazReport#Entries is a unique EList, therefore by sorted + // later is will be throw Exception + final LinkedList entriesClone = new LinkedList<>( + plazReport.getEntries()); + plazReport.getEntries().clear(); + final List objectArts = newReport.getEntries() + .stream() + .map(ValidationProblem::getObjectArt) + .distinct() + .toList(); + + final List oldReports = plazReport + .getEntries() + .stream() + .filter(entry -> objectArts + .contains(entry.getObjectArt())) + .toList(); + entriesClone.removeAll(oldReports); + entriesClone.addAll(newReport.getEntries()); + + PlazModelService.sortAndIndexedProblems(entriesClone); + plazReport.getEntries().addAll(entriesClone); + tableView.updateView(plazReport); } }); } diff --git a/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/check/BankValues.xtend b/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/check/BankValues.xtend index 7a6aa2c9d5..a25356da60 100644 --- a/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/check/BankValues.xtend +++ b/java/bundles/org.eclipse.set.feature.plazmodel/src/org/eclipse/set/feature/plazmodel/check/BankValues.xtend @@ -29,6 +29,9 @@ import org.osgi.service.event.Event import org.osgi.service.event.EventAdmin import org.osgi.service.event.EventConstants import org.osgi.service.event.EventHandler +import org.eclipse.e4.core.services.events.IEventBroker +import org.eclipse.set.basis.IModelSession +import org.eclipse.set.basis.files.ToolboxFileRole /** * Validates that there's a valid top path for each bank line @@ -144,9 +147,18 @@ class BankValues extends AbstractPlazContainerCheck implements PlazCheck, EventH } override handleEvent(Event event) { - val properties = newHashMap; - properties.put("org.eclipse.e4.data", this.class); // $NON-NLS-1$ - eventAdmin.sendEvent(new Event(Events.DO_PLAZ_CHECK, properties)); + if (event.getProperty(IEventBroker.DATA) instanceof IModelSession) { + val role = (event.getProperty(IEventBroker.DATA) as IModelSession). + toolboxFile.role + // Only do PlazCheck by main session + if (role === ToolboxFileRole.SESSION) { + val properties = newHashMap; + properties.put(IEventBroker.DATA, this.class); // $NON-NLS-1$ + eventAdmin.sendEvent( + new Event(Events.DO_PLAZ_CHECK, properties)); + } + } + } }