package net.zuckerfrei.jcfd;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.SequencedHashMap;
/**
* DOCUMENT ME!
*
* @author Davor Cengija
* @version $Revision: 1.1.1.1 $
*/
public class StrategyList {
//~ Static variables/initializers =========================================
static List list = new ArrayList();
static SequencedHashMap strMap = new SequencedHashMap();
//~ Instance variables ====================================================
/** DOCUMENT ME! */
private int position = 0;
//~ Constructors ==========================================================
/**
* Creates a new StrategyList object.
*/
StrategyList() {
; // to prevent illegal instantiation
}
//~ Methods ===============================================================
/**
* Method addDefinition.
*
* @param strategy
*/
public void addStrategy(Strategy strategy) {
list.add(strategy);
strMap.put(strategy.getCode(),
strategy);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public int count() {
return list.size();
}
/**
* DOCUMENT ME!
*
* @param code DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws IllegalArgumentException DOCUMENT ME!
*/
public static Strategy findStrategy(String code) {
Strategy str = (Strategy) strMap.get(code);
if (str == null) {
throw new IllegalArgumentException("Unknown code " + code);
}
return str;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean hasNext() {
return (position < list.size());
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Strategy next() {
return (Strategy) list.get(position++);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public int position() {
return position;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Strategy prev() {
return (Strategy) list.get(--position);
}
/**
* DOCUMENT ME!
*
* @param strategy DOCUMENT ME!
*/
public void removeStrategy(Strategy strategy) {
list.remove(strategy);
strMap.remove(strategy);
}
}