package net.jsunit.model; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class HeterogenousBrowserGroup implements Iterable<Browser> { private List<Browser> browsers = new ArrayList<Browser>(); public static List<HeterogenousBrowserGroup> createFrom(List<Browser> allBrowsers) { List<Browser> browsersLeft = new ArrayList<Browser>(allBrowsers); List<HeterogenousBrowserGroup> result = new ArrayList<HeterogenousBrowserGroup>(); while (!browsersLeft.isEmpty()) { HeterogenousBrowserGroup group = new HeterogenousBrowserGroup(); for (Browser browser : browsersLeft) { if (!group.containsBrowserOfConflictingType(browser)) group.add(browser); } browsersLeft.removeAll(group.getBrowsers()); result.add(group); } return result; } public List<Browser> getBrowsers() { return browsers; } private boolean containsBrowserOfConflictingType(Browser aBrowser) { for (Browser browser : browsers) { if (browser.conflictsWith(aBrowser)) return true; } return false; } private void add(Browser browser) { browsers.add(browser); } public Iterator<Browser> iterator() { return browsers.iterator(); } public int size() { return browsers.size(); } }