package games.strategy.engine.data;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class RepairFrontier extends DefaultNamed implements Iterable<RepairRule> {
private static final long serialVersionUID = -5148536624986056753L;
private final List<RepairRule> m_rules = new ArrayList<>();
private List<RepairRule> m_cachedRules;
/**
* Creates new RepairFrontier.
*
* @param name
* name of new repair frontier
* @param data
* game data
*/
public RepairFrontier(final String name, final GameData data) {
super(name, data);
}
public void addRule(final RepairRule rule) {
if (m_rules.contains(rule)) {
throw new IllegalStateException("Rule already added:" + rule);
}
m_rules.add(rule);
m_cachedRules = null;
}
public void removeRule(final RepairRule rule) {
if (!m_rules.contains(rule)) {
throw new IllegalStateException("Rule not present:" + rule);
}
m_rules.remove(rule);
m_cachedRules = null;
}
public List<RepairRule> getRules() {
if (m_cachedRules == null) {
m_cachedRules = Collections.unmodifiableList(m_rules);
}
return m_cachedRules;
}
@Override
public Iterator<RepairRule> iterator() {
return getRules().iterator();
}
}