package org.lucci.madhoc.network;

import java.util.Collection;
import java.util.List;
import java.util.Vector;

import org.lucci.madhoc.network.util.Graph;

public class OptimizeConnectivityByUsingUMTSLinks extends NetworkAlterer
{

    @Override
    public void operate(Network network)
    {
        int numberOfStations = network.getStations().size();
        Collection<Collection<Station>> partitions = Graph.getPartitions(network);
        List<Collection<Station>> partitionsToInterconnect = new Vector<Collection<Station>>();
        
        for (Collection<Station> partition : partitions)
        {
            if (partition.size() > numberOfStations / 100)
            {
                partitionsToInterconnect.add(partition);
            }
        }
        
        java.util.Collections.shuffle(partitionsToInterconnect);

        for (int i = 0; i < partitionsToInterconnect.size() - 1; ++i)
        {
            network.createBidirectionalConnection(partitionsToInterconnect.get(i).iterator().next(), partitionsToInterconnect.get(i + 1).iterator().next(), "umts");
        }
    }

}