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 6cb544888869d39635447756027d24020ba28bda..40280413a3f223ab92144de483974ff8e420e52a 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 e0218601c07ed21b099eb711e3d377e99f856039..76c0530c05acb848a589eab0a3c6a3bc16179032 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 48fde84b69f1af5cf55d8440ad703f64eb81ef42..b7a636080e1e447185dea0afffbcc9b642c9216b 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 0e10e69a9c011d9567b85cb4ee0cef3ac8c07675..3621d46226135736b2bf160bd12cdeded253a62e 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 d4f1f8f4a180247c2e86e76eb3cbcf01960edce3..f0618c8286b0e780e379d08313c5f1a256b89562 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 e0218601c07ed21b099eb711e3d377e99f856039..76c0530c05acb848a589eab0a3c6a3bc16179032 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 48fde84b69f1af5cf55d8440ad703f64eb81ef42..b7a636080e1e447185dea0afffbcc9b642c9216b 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 3e55f70474e284ff15abab1145223e0baedf58f8..35ccd29e3910bb69567fbbe450834d965ffdebb6 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 0e10e69a9c011d9567b85cb4ee0cef3ac8c07675..3621d46226135736b2bf160bd12cdeded253a62e 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 a17fcac6cc8de1f448361dd11607739b51f0e323..99549d6f44fbe35a8d321dae589e199756b66df3 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 b1aebc9449b7ed042a58e90a328f99586b7d1ff6..9d73800bfad58383cb5f43a9bd1c2b17b28e800e 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());