From 1b6f3418bcf530fd9f871087daa28269e5cd65b3 Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Sun, 8 Jul 2018 22:50:06 +0200 Subject: [PATCH] update to collection attributes, synchronize variants --- .../src/main/jastadd/TreeNavigation.jrag | 38 ++++------ .../jastadd/queries/RouteSensorMatch.jrag | 5 +- .../jastadd/queries/SemaphoreNeighbors.jrag | 8 +-- ...ddTransformationRepairSwitchMonitored.java | 1 - .../src/main/jastadd/TreeNavigation.jrag | 69 ++++++++----------- .../jastadd/queries/RouteSensorMatch.jrag | 5 +- .../jastadd/queries/SemaphoreNeighbors.jrag | 8 +-- ...TransformationRepairSemaphoreNeighbor.java | 1 - ...ddTransformationRepairSwitchMonitored.java | 1 - .../jastadd/queries/SemaphoreNeighbors.jrag | 2 +- ...ddTransformationRepairSwitchMonitored.java | 5 +- 11 files changed, 58 insertions(+), 85 deletions(-) diff --git a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag index 6cb544888..40280413a 100644 --- a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag +++ b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/TreeNavigation.jrag @@ -1,5 +1,3 @@ -import java.util.HashSet; - aspect TreeNavigation { // collections of things @@ -132,7 +130,7 @@ aspect TreeNavigation { // more reference resolving - syn Collection<TrackElement> Sensor.monitoredElements() { + syn Collection<TrackElement> Sensor.monitors() { java.util.List<TrackElement> trackElements = new ArrayList<>(); for (TrackElementRef ref : getMonitoredElementList()) { trackElements.add(ref.getTrackElement()); @@ -170,7 +168,7 @@ aspect TreeNavigation { return getRequiredSensor(i).getSensor(); } - syn Collection<TrackElement> TrackElement.connectsTos() { + syn Collection<TrackElement> TrackElement.connectsTo() { java.util.List<TrackElement> trackElements = new ArrayList<>(); for (TrackElementRef teRef : getConnectedElementList()) { trackElements.add(teRef.getTrackElement()); @@ -189,7 +187,7 @@ aspect TreeNavigation { return segments; } - syn Collection<Sensor> Route.requiredSensors() { + syn Collection<Sensor> Route.requires() { java.util.List<Sensor> sensors = new ArrayList<>(); for (SensorRef sensorRef : getRequiredSensorList()) { sensors.add(sensorRef.getSensor()); @@ -221,7 +219,7 @@ aspect TreeNavigation { Sensor contributes this to TrackElement.monitoredBy() - for each monitoredElements(); + for each monitors(); RailwayContainer contributes { // Explicitly traverses regions, skips routes. @@ -237,26 +235,20 @@ aspect TreeNavigation { // Stop at sensor, only contains refs. } to TrackElement.monitoredBy(); - syn Collection<Route> Sensor.requiringRoutes() { - return getRoot().requiringRoutesMap().get(this.id()); - } - syn Map<Integer,Set<Route>> RailwayContainer.requiringRoutesMap() { - Map<Integer,Set<Route>> routeMap = new java.util.HashMap<>(); + coll ArrayList<Route> Sensor.requiredBy() [new ArrayList()] with add; - // fill the keys - for (Sensor sensor: sensors()) { - routeMap.put(sensor.id(), new java.util.HashSet<>()); - } + RailwayContainer contributes { + // Explicitly traverses routes, skips regions. + getRouteList().collectContributions(); + } to Sensor.requiredBy(); - // update the values - for (Route route : getRouteList()) { - for (SensorRef sensorRef : route.getRequiredSensorList()) { - routeMap.get(sensorRef.getValue()).add(route); - } - } + Route contributes this + to Sensor.requiredBy() + for each requires(); - return routeMap; - } + Route contributes { + // Stop at route, only contains refs. + } to Sensor.requiredBy(); } diff --git a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/RouteSensorMatch.jrag b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/RouteSensorMatch.jrag index e0218601c..76c0530c0 100644 --- a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/RouteSensorMatch.jrag +++ b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/RouteSensorMatch.jrag @@ -12,12 +12,11 @@ aspect Queries { java.util.List<JastaddRouteSensorMatch> matches = new java.util.ArrayList<>(); // if the route follows a switch and this switch has is monitored by a sensor - Collection<Sensor> requiredSensors = requiredSensors(); for (SwitchPosition sp : getSwitchPositionList()) { Switch sw = sp.target(); for (Sensor sensor : sw.monitoredBy()) { boolean validSensor = false; - for (Sensor sensor2 : requiredSensors) { + for (Sensor sensor2 : requires()) { if (sensor2 == sensor) { validSensor = true; break; @@ -41,7 +40,7 @@ aspect Queries { syn Collection<JastaddRouteSensorInjectMatch> Route.routeSensorInjectMatches() { java.util.List<JastaddRouteSensorInjectMatch> matches = new ArrayList<JastaddRouteSensorInjectMatch>(); - for (Sensor sensor: requiredSensors()) { + for (Sensor sensor: requires()) { matches.add(new JastaddRouteSensorInjectMatch(this, sensor)); } return matches; diff --git a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag index 48fde84b6..b7a636080 100644 --- a/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag +++ b/trainbenchmark-tool-jastadd-namelookup-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag @@ -18,11 +18,11 @@ aspect Queries { Semaphore exitSemaphore = this.exit(); // get the sensors of the route - for (Sensor sensor1 : this.requiredSensors()) { - for (TrackElement te1 : sensor1.monitoredElements()) { - for (TrackElement te2 : te1.connectsTos()) { + for (Sensor sensor1 : this.requires()) { + for (TrackElement te1 : sensor1.monitors()) { + for (TrackElement te2 : te1.connectsTo()) { for (Sensor sensor2 : te2.monitoredBy()) { - for (Route route2 : sensor2.requiringRoutes()) { + for (Route route2 : sensor2.requiredBy()) { if (this != route2) { if (!route2.hasEntry() || route2.getEntry().getValue() != exitRef.getValue()) { matches.add(new JastaddSemaphoreNeighborMatch(exitSemaphore, this, route2, sensor1, sensor2, te1, te2)); diff --git a/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java b/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java index 0e10e69a9..3621d4622 100644 --- a/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java +++ b/trainbenchmark-tool-jastadd-namelookup-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java @@ -21,7 +21,6 @@ public class JastaddTransformationRepairSwitchMonitored<TJastaddDriver extends J public void activate(final Collection<JastaddSwitchMonitoredMatch> matches) { for (final JastaddSwitchMonitoredMatch ssnm : matches) { - // gather the stuff we need to create a sensor: int id = driver.nextId(); List<TrackElementRef> refList = new List<>(); refList.add(ssnm.getSw().createRef()); diff --git a/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/TreeNavigation.jrag b/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/TreeNavigation.jrag index d4f1f8f4a..f0618c828 100644 --- a/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/TreeNavigation.jrag +++ b/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/TreeNavigation.jrag @@ -65,7 +65,7 @@ aspect TreeNavigation { // more reference resolving - syn Collection<TrackElement> Sensor.monitoredElements() { + syn Collection<TrackElement> Sensor.monitors() { java.util.List<TrackElement> trackElements = new ArrayList<>(); for (TrackElementRef ref : getMonitoredElementList()) { trackElements.add(ref.getTrackElement()); @@ -103,7 +103,7 @@ aspect TreeNavigation { return getRequiredSensor(i).getSensor(); } - syn Collection<TrackElement> TrackElement.connectsTos() { + syn Collection<TrackElement> TrackElement.connectsTo() { java.util.List<TrackElement> trackElements = new ArrayList<>(); for (TrackElementRef teRef : getConnectedElementList()) { trackElements.add(teRef.getTrackElement()); @@ -122,7 +122,7 @@ aspect TreeNavigation { return segments; } - syn Collection<Sensor> Route.requiredSensors() { + syn Collection<Sensor> Route.requires() { java.util.List<Sensor> sensors = new ArrayList<>(); for (SensorRef sensorRef : getRequiredSensorList()) { sensors.add(sensorRef.getSensor()); @@ -150,50 +150,39 @@ aspect TreeNavigation { return getTarget().getSwitch(); } - syn Collection<Sensor> TrackElement.monitoredBy() { - return getRoot().monitoredByMap().get(this.id()); - } - - syn Map<Integer,Set<Sensor>> RailwayContainer.monitoredByMap() { - Map<Integer,Set<Sensor>> sensorMap = new java.util.HashMap<>(); + coll ArrayList<Sensor> TrackElement.monitoredBy() [new ArrayList()] with add; - // fill the keys - for (Region region: getRegionList()) { - for (TrackElement trackElement: region.getTrackElementList()) { - sensorMap.put(trackElement.id(), new java.util.HashSet<>()); - } - } + Sensor contributes this + to TrackElement.monitoredBy() + for each monitors(); - // update the values - for (Sensor sensor : sensors()) { - for (TrackElementRef trackElementRef : sensor.getMonitoredElementList()) { - sensorMap.get(trackElementRef.getValue()).add(sensor); - } - } + RailwayContainer contributes { + // Explicitly traverses regions, skips routes. + getRegionList().collectContributions(); + } to TrackElement.monitoredBy(); - return sensorMap; - } + Region contributes { + // Explicitly traverses sensors, skips elements. + getSensorList().collectContributions(); + } to TrackElement.monitoredBy(); - syn Collection<Route> Sensor.requiringRoutes() { - return getRoot().requiringRoutesMap().get(this.id()); - } + Sensor contributes { + // Stop at sensor, only contains refs. + } to TrackElement.monitoredBy(); - syn Map<Integer,Set<Route>> RailwayContainer.requiringRoutesMap() { - Map<Integer,Set<Route>> routeMap = new java.util.HashMap<>(); + coll ArrayList<Route> Sensor.requiredBy() [new ArrayList()] with add; - // fill the keys - for (Sensor sensor: sensors()) { - routeMap.put(sensor.id(), new java.util.HashSet<>()); - } + RailwayContainer contributes { + // Explicitly traverses routes, skips regions. + getRouteList().collectContributions(); + } to Sensor.requiredBy(); - // update the values - for (Route route : getRouteList()) { - for (SensorRef sensorRef : route.getRequiredSensorList()) { - routeMap.get(sensorRef.getValue()).add(route); - } - } + Route contributes this + to Sensor.requiredBy() + for each requires(); - return routeMap; - } + Route contributes { + // Stop at route, only contains refs. + } to Sensor.requiredBy(); } diff --git a/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/RouteSensorMatch.jrag b/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/RouteSensorMatch.jrag index e0218601c..76c0530c0 100644 --- a/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/RouteSensorMatch.jrag +++ b/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/RouteSensorMatch.jrag @@ -12,12 +12,11 @@ aspect Queries { java.util.List<JastaddRouteSensorMatch> matches = new java.util.ArrayList<>(); // if the route follows a switch and this switch has is monitored by a sensor - Collection<Sensor> requiredSensors = requiredSensors(); for (SwitchPosition sp : getSwitchPositionList()) { Switch sw = sp.target(); for (Sensor sensor : sw.monitoredBy()) { boolean validSensor = false; - for (Sensor sensor2 : requiredSensors) { + for (Sensor sensor2 : requires()) { if (sensor2 == sensor) { validSensor = true; break; @@ -41,7 +40,7 @@ aspect Queries { syn Collection<JastaddRouteSensorInjectMatch> Route.routeSensorInjectMatches() { java.util.List<JastaddRouteSensorInjectMatch> matches = new ArrayList<JastaddRouteSensorInjectMatch>(); - for (Sensor sensor: requiredSensors()) { + for (Sensor sensor: requires()) { matches.add(new JastaddRouteSensorInjectMatch(this, sensor)); } return matches; diff --git a/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag b/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag index 48fde84b6..b7a636080 100644 --- a/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag +++ b/trainbenchmark-tool-jastadd-optimized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag @@ -18,11 +18,11 @@ aspect Queries { Semaphore exitSemaphore = this.exit(); // get the sensors of the route - for (Sensor sensor1 : this.requiredSensors()) { - for (TrackElement te1 : sensor1.monitoredElements()) { - for (TrackElement te2 : te1.connectsTos()) { + for (Sensor sensor1 : this.requires()) { + for (TrackElement te1 : sensor1.monitors()) { + for (TrackElement te2 : te1.connectsTo()) { for (Sensor sensor2 : te2.monitoredBy()) { - for (Route route2 : sensor2.requiringRoutes()) { + for (Route route2 : sensor2.requiredBy()) { if (this != route2) { if (!route2.hasEntry() || route2.getEntry().getValue() != exitRef.getValue()) { matches.add(new JastaddSemaphoreNeighborMatch(exitSemaphore, this, route2, sensor1, sensor2, te1, te2)); diff --git a/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java b/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java index 3e55f7047..35ccd29e3 100644 --- a/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java +++ b/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSemaphoreNeighbor.java @@ -1,6 +1,5 @@ package de.tudresden.inf.st.train.jastadd.transformations.repair; -import de.tudresden.inf.st.train.jastadd.ast.SemaphoreRef; import de.tudresden.inf.st.train.jastadd.driver.JastaddDriver; import de.tudresden.inf.st.train.jastadd.matches.JastaddSemaphoreNeighborMatch; import de.tudresden.inf.st.train.jastadd.transformations.JastaddTransformation; diff --git a/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java b/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java index 0e10e69a9..3621d4622 100644 --- a/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java +++ b/trainbenchmark-tool-jastadd-optimized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java @@ -21,7 +21,6 @@ public class JastaddTransformationRepairSwitchMonitored<TJastaddDriver extends J public void activate(final Collection<JastaddSwitchMonitoredMatch> matches) { for (final JastaddSwitchMonitoredMatch ssnm : matches) { - // gather the stuff we need to create a sensor: int id = driver.nextId(); List<TrackElementRef> refList = new List<>(); refList.add(ssnm.getSw().createRef()); diff --git a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag index a17fcac6c..99549d6f4 100644 --- a/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag +++ b/trainbenchmark-tool-jastadd-specialized-base/src/main/jastadd/queries/SemaphoreNeighbors.jrag @@ -22,7 +22,7 @@ aspect Queries { for (Sensor sensor2 : te2.monitoredBy()) { for (Route route2 : sensor2.requiredBy()) { if (this != route2) { - if (route2.entry() == null || route2.entry() != exitSemaphore) { + if (!route2.hasEntry() || route2.entry() != exitSemaphore) { matches.add(new JastaddSemaphoreNeighborMatch(exitSemaphore, this, route2, sensor1, sensor2, te1, te2)); } } diff --git a/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java b/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java index b1aebc944..9d73800bf 100644 --- a/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java +++ b/trainbenchmark-tool-jastadd-specialized-base/src/main/java/de/tudresden/inf/st/train/jastadd/transformations/repair/JastaddTransformationRepairSwitchMonitored.java @@ -1,7 +1,6 @@ package de.tudresden.inf.st.train.jastadd.transformations.repair; - -import de.tudresden.inf.st.train.jastadd.ast.*; +import de.tudresden.inf.st.train.jastadd.ast.Sensor; import de.tudresden.inf.st.train.jastadd.driver.JastaddDriver; import de.tudresden.inf.st.train.jastadd.matches.JastaddSwitchMonitoredMatch; import de.tudresden.inf.st.train.jastadd.transformations.JastaddTransformation; @@ -19,8 +18,6 @@ public class JastaddTransformationRepairSwitchMonitored<TJastaddDriver extends J public void activate(final Collection<JastaddSwitchMonitoredMatch> matches) { for (final JastaddSwitchMonitoredMatch ssnm : matches) { - // TODO something about the requiring routes? - Sensor sensor = new Sensor(); sensor.setId(driver.nextId()); sensor.addToMonitors(ssnm.getSw()); -- GitLab