package ee.esutoniagodesu.pojo.test.compound; import ee.esutoniagodesu.util.JCRandom; import org.springframework.util.Assert; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public final class BallotEngine<T> implements Serializable { private static final long serialVersionUID = 7902097827237481466L; private final List<T> ballots = new ArrayList<>(); public void put(T ballot) { put(ballot, 0); } public void put(T ballot, int repetitions) { ballots.add(ballot); if (repetitions > 0) { for (int p = 0; p < repetitions; p++) { ballots.add(ballot); } } } public void put(List<T> ballots) { this.ballots.addAll(ballots); } public T draw() { Assert.isTrue(ballots.size() > 0); int key = JCRandom.between(0, ballots.size() - 1); return ballots.remove(key); } public List<T> draw(int count) { List<T> result = new ArrayList<>(); for (int p = 0; p < count; p++) { result.add(draw()); } return result; } public void clear() { ballots.clear(); } }