diff --git a/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/GroupLeader.java b/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/GroupLeader.java index 3d1b4a10e..46588096c 100644 --- a/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/GroupLeader.java +++ b/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/GroupLeader.java @@ -21,6 +21,7 @@ import java.util.Set; import cz.cuni.mff.d3s.deeco.annotations.In; +import cz.cuni.mff.d3s.deeco.annotations.InOut; import cz.cuni.mff.d3s.deeco.annotations.Out; import cz.cuni.mff.d3s.deeco.annotations.PeriodicScheduling; import cz.cuni.mff.d3s.deeco.annotations.Process; @@ -81,17 +82,20 @@ public GroupLeader(String id, String team_id, boolean isSiteLeader) { @PeriodicScheduling(5000) public static void processSensorData( @In("temperatures") Map temperatures, - @In("temperatureThreshold") Float temperatureThreshold - // @Out("GMsInDangerInTeam") Set GMsInDangerInTeam - ) { + @In("temperatures") Map positions, + @In("temperatureThreshold") Float temperatureThreshold, + @InOut("GMsInDangerInTeam") Set GMsInDangerInTeam) { System.out.println("GL: Processing sensor data..."); System.out.println("Temperatures map holds " + temperatures.keySet().size() + " items"); for (String id : temperatures.keySet()) { System.out.println("[" + id + ", " + temperatures.get(id) + "]"); - // if (temperatures.get(id) > temperatureThreshold) { - // GMsInDangerInTeam.add(id); - // } + if (temperatures.get(id) > temperatureThreshold) { + GMsInDangerInTeam.add(id); + } + } + for (String id : positions.keySet()) { + System.out.println("Position: " + positions.get(id)); } } diff --git a/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/SensorDataEnsemble.java b/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/SensorDataEnsemble.java index a81e69ea0..525236dd4 100644 --- a/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/SensorDataEnsemble.java +++ b/jdeeco-demo/src/cz/cuni/mff/d3s/deeco/demo/firefighters/SensorDataEnsemble.java @@ -18,6 +18,7 @@ import java.util.Map; import cz.cuni.mff.d3s.deeco.annotations.In; +import cz.cuni.mff.d3s.deeco.annotations.InOut; import cz.cuni.mff.d3s.deeco.annotations.KnowledgeExchange; import cz.cuni.mff.d3s.deeco.annotations.Membership; import cz.cuni.mff.d3s.deeco.annotations.Out; @@ -39,27 +40,25 @@ public class SensorDataEnsemble extends Ensemble { public static boolean membership(@In("member.teamId") String mteamId, @In("member.temperature") Float temperature, @In("coord.temperatures") Map temperatures, - // @In("member.position") Position position, - // @In("coord.positions") Map positions, + @In("member.position") Position position, + @In("coord.positions") Map positions, @In("coord.teamId") String cteamId) { return mteamId.equals(cteamId) && temperature != null - && temperatures != null; + && temperatures != null && position != null + && positions != null; } @KnowledgeExchange @PeriodicScheduling(2000) - public static void map( - @In("member.id") String mId, + public static void map(@In("member.id") String mId, @In("coord.id") String cId, - // @In("member.position") Position newPosition, - // @Out("coord.positions.[member.id]") Position position, + @In("member.position") Position newPosition, + @InOut("coord.positions") Map positions, @In("member.temperature") Float newTemperature, - @Out("coord.temperatures") Map temperatures) { + @InOut("coord.temperatures") Map temperatures) { System.out.println("Copying sensor data from " + mId + " to " + cId); temperatures.put(mId, newTemperature); - for (String id : temperatures.keySet()) { - System.out.println("[" + id + ", " + temperatures.get(id) + "]"); - } + positions.put(mId, newPosition); } }