/* Marcus Daniels swarm-support July 26, 2001 TW> I can't figure out how to set the collection for an Averager in Java. Usually an Averager is created via an EZGraph, but it can be used directly, as well. An Averager is just a special kind of MessageProbe. The main thing is it requires the more-complicated phase switching idioms. */ import swarm.analysis.Averager; import swarm.analysis.AveragerC; import swarm.analysis.AveragerCImpl; import swarm.analysis.AveragerImpl; import swarm.defobj.Zone; import swarm.Globals; import swarm.Selector; import java.util.List; import java.util.LinkedList; class Agent { public double value; Agent (double value) { this.value = value; } public double getAgentValue () { return value; } } public class TestAverager { TestAverager (Zone aZone) { List l = new LinkedList (); l.add (new Agent (1.0)); l.add (new Agent (2.0)); l.add (new Agent (3.0)); l.add (new Agent (4.0)); AveragerC averagerC = new AveragerCImpl (new AveragerImpl ()); averagerC.createBegin (aZone); try { Selector sel = new Selector (Agent.class, "getAgentValue", false); averagerC.setProbedSelector (sel); } catch (Exception e) { e.printStackTrace (System.err); System.exit (1); } averagerC.setCollection (l); Averager averager = (Averager) averagerC.createEnd (); averager.update (); System.out.println (averager.getAverage ()); } static void main (String args[]) { Globals.env.initSwarm ("TestAverager", "0.0", "bug-swarm@swarm.org", args); new TestAverager (Globals.env.globalZone); } }