package cryodex.modules.armada;
import java.util.ArrayList;
import java.util.List;
import cryodex.xml.XMLObject;
import cryodex.xml.XMLUtils;
import cryodex.xml.XMLUtils.Element;
public class ArmadaRound implements XMLObject {
private List<ArmadaMatch> matches;
private ArmadaRoundPanel panel;
private Boolean isSingleElimination = false;
public ArmadaRound(Element roundElement, ArmadaTournament t) {
this.isSingleElimination = roundElement
.getBooleanFromChild("ISSINGLEELIMINATION");
Element matchElement = roundElement.getChild("MATCHES");
if (matchElement != null) {
matches = new ArrayList<ArmadaMatch>();
for (Element e : matchElement.getChildren()) {
matches.add(new ArmadaMatch(e));
}
}
this.panel = new ArmadaRoundPanel(t, matches);
}
public ArmadaRound(List<ArmadaMatch> matches, ArmadaTournament t,
Integer roundNumber) {
this.matches = matches;
this.panel = new ArmadaRoundPanel(t, matches);
}
public List<ArmadaMatch> getMatches() {
return matches;
}
public void setMatches(List<ArmadaMatch> matches) {
this.matches = matches;
}
public ArmadaRoundPanel getPanel() {
return panel;
}
public void setPanel(ArmadaRoundPanel panel) {
this.panel = panel;
}
public void setSingleElimination(boolean isSingleElimination) {
this.isSingleElimination = isSingleElimination;
}
public boolean isSingleElimination() {
return isSingleElimination == null ? false : isSingleElimination;
}
@Override
public StringBuilder appendXML(StringBuilder sb) {
XMLUtils.appendObject(sb, "ISSINGLEELIMINATION", isSingleElimination());
XMLUtils.appendList(sb, "MATCHES", "MATCH", getMatches());
return sb;
}
public boolean isComplete() {
for (ArmadaMatch m : getMatches()) {
if (m.isMatchComplete() == false) {
return false;
}
}
return true;
}
public boolean isValid() {
boolean result = true;
for (ArmadaMatch m : getMatches()) {
if (m.isValidResult() == false) {
result = false;
break;
}
}
panel.markInvalid();
return result;
}
}