package org.lucci.madhoc.network.monitor.measure;

import java.util.Collection;

import org.lucci.madhoc.network.Connection;
import org.lucci.madhoc.simulation.measure.DistributionSensor;
import org.lucci.madhoc.simulation.measure.Unit;
import org.lucci.madhoc.simulation.projection.Projection;

/*
 * Created on Jul 20, 2004
 */

/**
 * @author luc.hogie
 */
public class ConnectionBandwithDistributionMeasure extends DistributionSensor
{

    /* (non-Javadoc)
     * @see org.lucci.madhoc.simulation.DistributionMeasure#getTargetedValue(org.lucci.madhoc.network.StationApplication)
     */
    public double getTargetedValue(Object object)
    {
        Connection c = (Connection) object;
        double bw = c.getMaximumBandwidth();
        bw *= 8;
        bw /= 1000;
        bw = (int) bw;
        return bw;
    }

    /* (non-Javadoc)
     * @see org.lucci.madhoc.simulation.measure.Measure#getName()
     */
    public String getName()
    {
        return "connection bandwith distribution";
    }

    /* (non-Javadoc)
     * @see org.lucci.madhoc.simulation.measure.DistributionMeasure#getYUnit()
     */
    public Unit getYUnit()
    {
        return Unit.BYTE;
    }

    /* (non-Javadoc)
     * @see org.lucci.madhoc.simulation.measure.DistributionMeasure#getTargetSet()
     */
    public Collection getTargetSet(Projection projection)
    {
        return projection.getNetwork().getConnections();
    }

    /* (non-Javadoc)
     * @see org.lucci.madhoc.simulation.measure.DistributionMeasure#getTargetSetName()
     */
    public String getTargetSetName()
    {
        return "connections";
    }
}