package org.lucci.madhoc.network.monitor.measure;
import java.util.Collection;
import java.util.Vector;
import org.lucci.madhoc.network.Station;
import org.lucci.madhoc.simulation.measure.NaturalNumberSensor;
import org.lucci.madhoc.simulation.measure.Unit;
import org.lucci.madhoc.simulation.projection.Projection;
import org.lucci.math.Utilities;
import org.lucci.math.relation.DefaultRelation;
import org.lucci.math.relation.Relation;
public class TimeForAllStationMeetEachOthers extends NaturalNumberSensor
{
private Relation<Station, Station> map = new DefaultRelation<Station, Station>();
@Override
public Double takeNewDoubleValue(Projection projection)
{
for (Station s : projection.getNetwork().getStations())
{
for (Station neighbor : s.getNetworkingUnit().getNeighborhood())
{
map.add(s, neighbor);
}
}
Collection<Double> numbersOfMeetings = new Vector<Double>();
for (Station s : map.getKeys())
{
numbersOfMeetings.add((double) map.getValues(s).size());
}
return Utilities.getAverage(numbersOfMeetings);
}
@Override
public Unit getUnit()
{
return Unit.SECOND;
}
@Override
public String getName()
{
return "time for all stations to meet each others";
}
}