/*
* National ICT Australia - http://www.nicta.com.au - All Rights Reserved
*/
/**
*
*/
package vroom.common.modeling.dataModel;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import vroom.common.modeling.util.IRoutePool;
/**
* The class <code>ListRoutePool</code> is an implementation of {@link IRoutePool} that stores all routes in a list
* <p>
* Creation date: May 4, 2013 - 2:30:24 PM
*
* @author vpillac, <a href="http://www.nicta.com.au">National ICT Australia</a>
* @version 1.0
*/
public class ListRoutePool<V extends INodeVisit> implements IRoutePool<V> {
private final LinkedList<ImmutableRoute<V>> mPool;
public ListRoutePool() {
mPool = new LinkedList<>();
}
@Override
public void dispose() {
clear();
}
@Override
public Iterator<ImmutableRoute<V>> iterator() {
return getAllRoutes().iterator();
}
@Override
public int getCollisionsCount() {
return 0;
}
@Override
public int add(Iterable<? extends IRoute<V>> routes) {
int count = 0;
for (IRoute<V> r : routes) {
count++;
mPool.add(new ImmutableRoute<>(r, r.hashCode()));
}
return count;
}
@Override
public List<ImmutableRoute<V>> getAllRoutes() {
return Collections.unmodifiableList(mPool);
}
@Override
public void clear() {
mPool.clear();
}
@Override
public int size() {
return mPool.size();
}
@Override
public ListRoutePool<V> clone() {
ListRoutePool<V> clone = new ListRoutePool<>();
clone.mPool.addAll(this.mPool);
return clone;
}
}