package net.jsunit.model; import net.jsunit.XmlRenderable; import net.jsunit.utility.SystemUtility; import org.jdom.Element; import java.net.URL; import java.util.ArrayList; import java.util.List; public class TestRunResult extends AbstractResult implements XmlRenderable, Comparable<TestRunResult> { private List<BrowserResult> browserResults = new ArrayList<BrowserResult>(); private URL url; private String osString; private String ipAddress; private String hostname; private boolean unresponsive = false; public TestRunResult() { this(null); } public TestRunResult(URL url) { this.url = url; } public void addBrowserResult(BrowserResult browserResult) { browserResults.add(browserResult); } public Element asXml() { Element root = new Element("testRunResult"); root.setAttribute("type", getResultType().name()); if (url != null) root.setAttribute("url", url.toString()); if (hasProperties()) { Element properties = new Element("properties"); addProperties(properties); root.addContent(properties); } for (BrowserResult browserResult : browserResults) root.addContent(browserResult.asXml()); return root; } private boolean hasProperties() { return osString != null || ipAddress != null || hostname != null; } private void addProperties(Element element) { if (osString != null) addProperty(element, "os", osString); if (ipAddress != null) addProperty(element, "ipAddress", ipAddress); if (hostname != null) addProperty(element, "hostname", hostname); } private void addProperty(Element element, String name, String value) { Element property = new Element("property"); property.setAttribute("name", name); property.setAttribute("value", value); element.addContent(property); } protected List<? extends Result> getChildren() { return browserResults; } public void setUnresponsive() { unresponsive = true; } public boolean wasUnresponsive() { return unresponsive; } public URL getUrl() { return url; } public ResultType getResultType() { if (unresponsive) return ResultType.UNRESPONSIVE; else return super.getResultType(); } public void setOsString(String osString) { this.osString = osString; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } public void setHostname(String hostname) { this.hostname = hostname; } public void setURL(URL url) { this.url = url; } public String getOsString() { return osString; } public String getIpAddress() { return ipAddress; } public String getHostname() { return hostname; } public int compareTo(TestRunResult other) { if (url == null | other.getUrl() == null) return 0; return url.toString().compareTo(other.getUrl().toString()); } public void initializeProperties() { setOsString(SystemUtility.osString()); setHostname(SystemUtility.hostname()); setIpAddress(SystemUtility.ipAddress()); } }