SampleGen.java
package ejava.projects.eleague.xml;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Random;
import ejava.projects.eleague.dto.Club;
import ejava.projects.eleague.dto.Contact;
import ejava.projects.eleague.dto.ContactRoleType;
import ejava.projects.eleague.dto.Contest;
import ejava.projects.eleague.dto.Division;
import ejava.projects.eleague.dto.ELeague;
import ejava.projects.eleague.dto.LeagueMetadata;
import ejava.projects.eleague.dto.Season;
import ejava.projects.eleague.dto.Team;
import ejava.projects.eleague.dto.TeamSeason;
import ejava.projects.eleague.dto.Venue;
/**
* This class provides the ability to generate a sample set of League
* DTOs and XML document. Of note, this is is to be used for initial
* implementation testing only. It is not the official data set required
* for submission with the project.
*/
public class SampleGen {
private int refid=0;
private long id=0;
protected String nextRefId() { return "ref-" + Integer.toString(++refid); }
protected long nextId() { return ++id; }
protected Club createClub(
ELeague league, String name, String rep, int teams) {
Club club = new Club();
club.setId(nextId());
club.setRefid(nextRefId());
club.setName(name);
Contact clubRep = new Contact();
club.setContact(clubRep);
league.getContact().add(clubRep);
clubRep.setId(nextId());
clubRep.setRefid(nextRefId());
clubRep.setName("joe " + rep);
clubRep.setEMail(rep + "@" + name + ".org");
clubRep.setLogin(rep);
Venue field1 = new Venue();
club.getVenue().add(field1);
field1.setId(nextId());
field1.setRefid(nextRefId());
field1.setName(name + " Park");
field1.setAdcPage("AA/13/5F");
field1.setDirections("get there and turn left");
field1.setStreet1("8830 " + name + " Blvd");
field1.setCity("Columbia");
field1.setState("MD");
field1.setZip("21045");
for (int i=0; i<teams; i++) {
Team team = new Team();
club.getTeam().add(team);
team.setId(nextId());
team.setRefid(nextRefId());
team.setName(name + " team# " + i);
ContactRoleType coach = new ContactRoleType();
team.getContactRole().add(coach);
coach.setRole("COACH");
Contact coachContact = new Contact();
coach.setContact(coachContact);
league.getContact().add(coachContact);
coachContact.setRefid(nextRefId());
if (i==0) {
coach.setId(clubRep.getId());
coachContact.setName(clubRep.getName());
coachContact.setEMail(clubRep.getEMail());
coachContact.setLogin(clubRep.getLogin());
}
else {
coach.setId(nextId());
coachContact.setName("coach #" + i);
coachContact.setEMail("coach." + i + "@" + name + ".org");
coachContact.setLogin(name + "_" + i);
ContactRoleType manager = new ContactRoleType();
team.getContactRole().add(manager);
Contact managerContact = new Contact();
league.getContact().add(managerContact);
manager.setContact(managerContact);
manager.setId(nextId());
manager.setRole("MANAGER");
managerContact.setRefid(nextRefId());
managerContact.setName("manage #" + i);
managerContact.setEMail("manager." + i + "@" + name + ".org");
managerContact.setLogin(name + "_m" + i);
}
}
return club;
}
protected Season createSeason(
ELeague league, int year) {
Season season = new Season();
season.setId(nextId());
season.setRefid(nextRefId());
season.setName("Spring " + Integer.toString(year));
Calendar cal = new GregorianCalendar();
cal.set(2007, Calendar.MARCH, 01);
season.setStarts(cal.getTime());
cal.set(2007, Calendar.JUNE, 01);
season.setEnds(cal.getTime());
String groups[] = { "U11", "U13", "U15"};
for (int g=0; g<groups.length; g++) {
String levels[] = new String[]{ "B", "A", "AA"};
for (int i=0; i<levels.length; i++) {
Division division = new Division();
season.getDivision().add(division);
division.setId(nextId());
division.setRefid(nextRefId());
division.setGroup(groups[g]);
division.setLevel(levels[i]);
division.setRanking(g*10 + i);
Contact coordinator = new Contact();
league.getContact().add(coordinator);
division.setContact(coordinator);
coordinator.setId(nextId());
coordinator.setRefid(nextRefId());
coordinator.setName("Mr. " + groups[g] + "-" + levels[i]);
coordinator.setLogin(groups[g] + levels[i]);
}
}
return season;
}
protected void assignTeamsToDivision(Club club, Season season) {
int divIndex = 10000;
for (Team team : club.getTeam()) {
TeamSeason divPlay = new TeamSeason();
divPlay.setId(nextId());
divPlay.setRefid(nextRefId());
divPlay.setTeam(team);
if (++divIndex >= season.getDivision().size()) {
divIndex = 0;
}
Division division = season.getDivision().get(divIndex);
division.getTeamSeason().add(divPlay);
}
}
protected Venue getField(ELeague league, Team team) {
Venue field = null;
for (Club club : league.getClub()) {
for (Team clubTeam : club.getTeam()) {
if (team.getId() == clubTeam.getId()) {
field = club.getVenue().iterator().next();
}
}
}
return field;
}
protected void scheduleSeason(ELeague league, Season season) {
for(Division division : season.getDivision()) {
int numTeams = division.getTeamSeason().size();
for (int i=0; i<numTeams; i++) {
for (int j=numTeams-1; j>= 0; j--) {
if (i!=j) {
Contest contest = new Contest();
season.getContest().add(contest);
contest.setId(nextId());
contest.setRefid(nextRefId());
Calendar cal = new GregorianCalendar();
cal.setTime(season.getStarts());
int year = cal.get(Calendar.YEAR);
cal.set(year,Calendar.MARCH,1+i,8+((j%12)*2),0, 0);
contest.setStarts(cal.getTime());
TeamSeason homeTeam = division.getTeamSeason().get(i);
TeamSeason awayTeam = division.getTeamSeason().get(j);
contest.setHomeTeam(homeTeam);
contest.setAwayTeam(awayTeam);
contest.setDuration(2*3600*1000);
contest.setLocation(
getField(league, (Team)homeTeam.getTeam()));
contest.setAwayScore(-1);
contest.setHomeScore(-1);
}
}
}
}
}
protected void reportScores(Season season) {
Random random = new Random();
for (Contest contest : season.getContest()) {
contest.setHomeScore(random.nextInt(5));
contest.setAwayScore(random.nextInt(5));
}
}
protected LeagueMetadata createLeagueMetadata(ELeague league) {
LeagueMetadata md = new LeagueMetadata();
md.setName("Everyone Doit League");
Contact coordinator = new Contact();
league.getContact().add(coordinator);
md.setContact(coordinator);
coordinator.setRefid(nextRefId());
coordinator.setId(nextId());
coordinator.setName("John Doe");
return md;
}
public ELeague createLeague() throws Exception {
ELeague league = new ELeague();
LeagueMetadata md = createLeagueMetadata(league);
league.setLeagueMetadata(md);
String club[] = new String[] {
"RockemSockem", "GoGetems", "RedRiders", "Senators", "Sailors",
"ChaChas", "Locos", "Greenhornets", "Predators", "Holsteins"
};
String rep[] = new String [] {
"smith", "jones", "klink", "schultz", "kotter",
"seaver", "sullivan", "marchabroda", "modell", "rozell"
};
for (int i=0; i<club.length; i++) {
league.getClub().add(createClub(league, club[i], rep[i], i+1));
}
for (int year : new int[] { 2005, 2006, 2007}) {
Season season = createSeason(league, year);
league.getSeason().add(season);
league.setCurrentSeason(season);
for(Club c : league.getClub()) {
assignTeamsToDivision(c, season);
}
scheduleSeason(league, season);
reportScores(season);
}
Season season = createSeason(league, 2008);
league.getSeason().add(season);
league.setCurrentSeason(season);
return league;
}
}