package org.selectbf; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import java.util.Vector; import org.jdom.Element; import org.jdom.Namespace; public class PlayerStatsManagementBase extends SelectBfClassBase { private Vector playerstats; private RoundContext rc; private boolean persistent = false; public PlayerStatsManagementBase(RoundContext rc,Namespace ns) { super(ns); playerstats = new Vector(); this.rc = rc; } public void collectPlayerStats(Element e) throws SelectBfException { if(e.getName().equals("roundstats")) { List xmlPlayerstats = e.getChildren("playerstat",NAMESPACE); Date time = rc.calcTimeFromDiffString(e.getAttributeValue("timestamp")); for(Iterator i = xmlPlayerstats.iterator(); i.hasNext();) { Element xmlPlayerstat = (Element) i.next(); this.playerstats.add(new PlayerStat(xmlPlayerstat,NAMESPACE,time)); } } else { throw new SelectBfException(SelectBfException.XML_DATA_NOT_VALID,"Expected 'roundstats' got something else"); } } public String toString() { String str = "---No Playerstats could be found---"; if(!isEmpty()) { str = "===PlayerStats===\n"; for(Iterator i = playerstats.iterator(); i.hasNext();) { PlayerStat ps = (PlayerStat) i.next(); str += ps.toString(); } } return str; } public boolean isEmpty() { if(playerstats.size()==0) { return true; } else { return false; } } public void persist(DatabaseContext dc, int roundId, PlayerManagementBase pmb, HospitalManagementBase hmb, PitStopManagementBase psmb) throws SelectBfException, SQLException { if(!hmb.isPersistent() || !psmb.isPersistent()) { throw new SelectBfException(SelectBfException.NOT_ALL_DATA_READY,"Either the HospitalMB or the PitStopMB is not persistent. Make persistent first. Final values are needed."); } if(!persistent) { //bubble-sort the vector to find the three top-ranks for(int i = 0; i