[577700] fixed search direction for watching subapp pins With that also ? when watching subapp pins that are connected on the outside with subapps is working correctly. Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=577700 Change-Id: I80789f97bbb28638d8013e990e51ddafc8b00bb8
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java index fd8ef68..9fe8384 100644 --- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java +++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/DeviceMonitoringHandler.java
@@ -135,10 +135,12 @@ private void checkSubappGroups(final HashMap<String, SubappGroup> collectedGroups, final Port port, String portString, final MonitoringBaseElement element) { List<MonitoringElement> subappPins = systemMonData.getSubappElements().get(portString); - final Entry<String, List<MonitoringElement>> subappEntry = systemMonData.getSubappElements(element); - if (element != null && subappPins == null && subappEntry != null) { - subappPins = subappEntry.getValue(); - portString = subappEntry.getKey(); + if (element != null && subappPins == null) { + final Entry<String, List<MonitoringElement>> subappEntry = systemMonData.getSubappElements(element); + if (subappEntry != null) { + subappPins = subappEntry.getValue(); + portString = subappEntry.getKey(); + } } if (subappPins != null) { @@ -225,7 +227,7 @@ .equals(monitoringElement.getCurrentValue()); } - public static boolean isEventPin(final MonitoringElement monitoringElement) { + public static boolean isEventPin(final MonitoringBaseElement monitoringElement) { return monitoringElement.getPort().getInterfaceElement() instanceof Event; }
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java index ac626b2..6e72163 100644 --- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java +++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/SystemMonitoringData.java
@@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -175,12 +174,12 @@ public void removeSubappElement(final MonitoringBaseElement element, final String portString) { - if (subappElements.containsKey(portString)) { - final List<MonitoringElement> subappPins = subappElements.get(portString); + if (getSubappElements().containsKey(portString)) { + final List<MonitoringElement> subappPins = getSubappElements().get(portString); final boolean remove = subappPins.remove(element); Assert.isTrue(remove); if (subappPins.isEmpty()) { - subappElements.remove(portString); + getSubappElements().remove(portString); } } } @@ -191,7 +190,7 @@ if (port instanceof SubAppPortElement) { final String portString = SubAppPortHelper - .findConnectedMonitoredSubappPort(port.getInterfaceElement(), subappElements); + .findConnectedMonitoredSubappPort(port.getInterfaceElement(), getSubappElements()); if (portString != null) { addToSubappGroup(element, portString); } @@ -222,8 +221,8 @@ } public boolean addToSubappGroup(final MonitoringBaseElement element, final String portString) { - if (subappElements.containsKey(portString)) { - final List<MonitoringElement> subappPins = subappElements.get(portString); + if (getSubappElements().containsKey(portString)) { + final List<MonitoringElement> subappPins = getSubappElements().get(portString); subappPins.add((MonitoringElement) element); return true; } @@ -234,7 +233,7 @@ public void createNewSubappGroup(final MonitoringBaseElement element, final String portString) { final List<MonitoringElement> l = new ArrayList<>(); l.add((SubappMonitoringElement) element); - subappElements.put(portString, l); + getSubappElements().put(portString, l); addExistingElementToSubappGroup(portString, l); } @@ -254,7 +253,7 @@ final IInterfaceElement interfaceElement = element.getPort().getInterfaceElement(); final String findConnectedMonitoredSubappPort = SubAppPortHelper - .findConnectedMonitoredSubappPort(interfaceElement, subappElements); + .findConnectedMonitoredSubappPort(interfaceElement, getSubappElements()); if (findConnectedMonitoredSubappPort != null) { final List<MonitoringElement> list = subappElements.get(findConnectedMonitoredSubappPort); @@ -270,13 +269,9 @@ return monitoredElements.get(port); } - public Entry<String, List<MonitoringElement>> getSubappElements(final MonitoringBaseElement m) - { - final Iterator<Entry<String, List<MonitoringElement>>> entries = getSubappElements().entrySet().iterator(); - while (entries.hasNext()) { - final Entry<String, List<MonitoringElement>> e = entries.next(); - final List<MonitoringElement> l = e.getValue(); - for (final MonitoringElement me : l) { + public Entry<String, List<MonitoringElement>> getSubappElements(final MonitoringBaseElement m) { + for (final Entry<String, List<MonitoringElement>> e : getSubappElements().entrySet()) { + for (final MonitoringElement me : e.getValue()) { if (me.equals(m)) { return e; }
diff --git a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java index a81c1ca..aed9311 100644 --- a/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java +++ b/plugins/org.eclipse.fordiac.ide.monitoring/src/org/eclipse/fordiac/ide/monitoring/model/SubAppPortHelper.java
@@ -55,7 +55,7 @@ public static String findConnectedMonitoredSubappPort(final IInterfaceElement interfaceElement, final Map<String, List<MonitoringElement>> subappElements) { - final boolean searchDirection = !interfaceElement.isIsInput(); + final boolean searchDirection = interfaceElement.isIsInput(); IInterfaceElement currentIe = interfaceElement; do {