package is.idega.idegaweb.golf.tournament.presentation; /** * Title: TournamentResults Description: Displayes the results of a tournament * Copyright: Copyright (c) 2001 Company: idega co. * * @author Laddi * @version 1.3 */ import is.idega.idegaweb.golf.entity.Dismissal; import is.idega.idegaweb.golf.entity.DismissalHome; import is.idega.idegaweb.golf.entity.Tournament; import is.idega.idegaweb.golf.entity.TournamentHome; import is.idega.idegaweb.golf.presentation.GolfBlock; import is.idega.idegaweb.golf.tournament.business.ResultComparator; import is.idega.idegaweb.golf.tournament.business.ResultDataHandler; import is.idega.idegaweb.golf.tournament.business.ResultsCollector; import java.sql.SQLException; import java.util.Collections; import java.util.Vector; import javax.ejb.FinderException; import com.idega.data.IDOLookup; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.Image; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Text; public class TournamentResults extends GolfBlock { private final static String IW_BUNDLE_IDENTIFIER = "is.idega.idegaweb.golf"; public static final int TOTALSTROKES = 1; public static final int TOTALSTROKESWITHHANDICAP = 2; public static final int TOTALPOINTS = 3; public static final int NAME = 4; public static final int ABBREVATION = 5; public static final int TOURNAMENTROUND = 6; protected IWResourceBundle iwrb; protected IWBundle iwb; private int tournamentId_ = -1; private int tournamentGroupId_ = -1; private int tournamentType_ = -1; private int[] tournamentRounds_ = null; private String gender_ = null; private int sortBy = -1; private Vector result = null; private Table myTable = null; private Tournament tournament = null; private int numberOfRounds = -1; private int numberOfColumns = -1; public void sortBy(int toSortBy) { sortBy = toSortBy; } public TournamentResults(int tournamentId, int tournamentType) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; } public TournamentResults(int tournamentId, int tournamentType, int tournamentGroupId) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; tournamentGroupId_ = tournamentGroupId; } public TournamentResults(int tournamentId, int tournamentType, String gender) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; gender_ = gender; } public TournamentResults(int tournamentId, int tournamentType, int[] tournamentRounds) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; tournamentRounds_ = tournamentRounds; } public TournamentResults(int tournamentId, int tournamentType, int tournamentGroupId, String gender) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; tournamentGroupId_ = tournamentGroupId; gender_ = gender; } public TournamentResults(int tournamentId, int tournamentType, int tournamentGroupId, int[] tournamentRounds) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; tournamentGroupId_ = tournamentGroupId; tournamentRounds_ = tournamentRounds; } public TournamentResults(int tournamentId, int tournamentType, int[] tournamentRounds, String gender) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; tournamentRounds_ = tournamentRounds; gender_ = gender; } public TournamentResults(int tournamentId, int tournamentType, int tournamentGroupId, int[] tournamentRounds, String gender) { tournamentId_ = tournamentId; tournamentType_ = tournamentType; tournamentGroupId_ = tournamentGroupId; tournamentRounds_ = tournamentRounds; gender_ = gender; } public void main(IWContext modinfo) throws SQLException { try { iwrb = getResourceBundle(modinfo); iwb = getBundle(modinfo); try { tournament = ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(tournamentId_); } catch (FinderException fe) { throw new SQLException(fe.getMessage()); } numberOfRounds = tournament.getNumberOfRounds(); getMemberVector(); if (result != null) { if (result.size() > 1) { sortMemberVector(); } } drawResultTable(); getResults(); } catch (Exception e) { e.printStackTrace(System.out); } } private void getMemberVector() { try { ResultDataHandler handler = new ResultDataHandler(tournamentId_, tournamentType_, tournamentGroupId_, tournamentRounds_, gender_); result = handler.getTournamentMembers(); } catch (Exception e) { e.printStackTrace(System.err); } } private void sortMemberVector() { ResultComparator comparator = new ResultComparator(sortBy); Collections.sort(result, comparator); } private void drawResultTable() { try { myTable = new Table(); myTable.setCellpadding(0); myTable.setCellspacing(0); myTable.setWidth("100%"); myTable.setBorder(0); String[] headers = { iwrb.getLocalizedString("tournament.position", "Position"), iwrb.getLocalizedString("tournament.golfer", "Member"), iwrb.getLocalizedString("tournament.club", "Club"), iwrb.getLocalizedString("tournament.handicap_short", "Hcp.")}; for (int a = 0; a < headers.length; a++) { if (a == 0 && (this.sortBy == ResultComparator.NAME || this.sortBy == ResultComparator.ABBREVATION)) { addHeaders("", a + 1, 1); } else { addHeaders(headers[a], a + 1, 1); } myTable.mergeCells(a + 1, 1, a + 1, 2); } getTotalHeaders(); add(myTable); } catch (Exception e) { e.printStackTrace(System.err); } } private void getResults() { try { int size = 0; if (result != null) size = result.size(); int row = 3; int zebraRow = 1; for (int a = 0; a < size; a++) { ResultsCollector collector = (ResultsCollector) result.elementAt(a); if (size <= 1) { collector.calculateCompareInfo(); } int handicap = collector.getHandicap(); int finalScore = collector.getTotalScore(); int difference = collector.getDifference(); String hole = collector.getHole(); int memberID = collector.getMemberId(); Link nameLink = getSmallLink(collector.getName()); nameLink.setWindowToOpen(HandicapScore.class); nameLink.addParameter("member_id", collector.getMemberId()); nameLink.addParameter("tournament_id", tournamentId_); nameLink.addParameter("tournament_group_id", collector.getTournamentGroupId()); Text positionText = getSmallText(Integer.toString(a + 1)); Text clubText = getSmallText(collector.getAbbrevation()); Text handicapText = getSmallText(Integer.toString(handicap)); Text holeText = getSmallText(hole); Text firstNineText = getSmallText(""); Text lastNineText = getSmallText(""); Text totalRoundScore = getSmallText(""); Text diffText = getSmallText(""); Text bruttoText = getSmallText(""); int totalScore = 0; int totalDifference = 0; int totalBrutto = 0; int roundNumber = 0; Vector roundScore = collector.getRoundScore(); if (hole.equalsIgnoreCase("f")) { int lastNine = (int) collector.getRealLastNine(); if (roundScore != null) { totalScore = ((Integer) roundScore.elementAt(roundScore.size() - 1)).intValue(); totalDifference = totalScore - collector.getFieldPar(); totalBrutto = totalScore + handicap; } int firstNine = totalScore - lastNine; if (this.tournamentType_ == ResultComparator.TOTALSTROKESWITHHANDICAP) { firstNine = totalBrutto - lastNine; } lastNineText.setText(Integer.toString(lastNine)); firstNineText.setText(Integer.toString(firstNine)); totalRoundScore.setText(Integer.toString(totalScore)); diffText.setText(Integer.toString(totalDifference)); bruttoText.setText(Integer.toString(totalBrutto)); } try { switch (tournamentType_) { case ResultComparator.TOTALSTROKES: int roundScoreColumn = 10; for (int b = 1; b <= numberOfRounds; b++) { int roundScore2 = 0; int roundIncNumber = collector.getRound(b); int position = roundScoreColumn + roundIncNumber - 1; if (roundIncNumber != -1) { roundScore2 = collector.getRoundScore(collector.getRoundNumber(b)); } Text roundScoreText = getSmallText(Integer.toString(roundScore2)); if (roundScore2 > 0) { myTable.add(roundScoreText, position, row); } } Text finalScoreText = getSmallBoldText(Integer.toString(finalScore)); Text finalDifferenceText = getSmallBoldText(Integer.toString(difference)); if (finalScore > 0) { myTable.add(finalScoreText, numberOfColumns - 1, row); myTable.add(finalDifferenceText, numberOfColumns, row); } myTable.add(totalRoundScore, 8, row); myTable.add(diffText, 9, row); break; case ResultComparator.TOTALSTROKESWITHHANDICAP: int roundScoreColumn2 = 10; for (int b = 1; b <= numberOfRounds; b++) { int roundScore2 = 0; int roundScoreBrutto = 0; int roundIncNumber = collector.getRound(b); int position2 = roundScoreColumn2 + (roundIncNumber * 2 - 1) - 1; if (roundIncNumber != -1) { roundScore2 = collector.getRoundScore(collector.getRoundNumber(b)); roundScoreBrutto = roundScore2 + handicap; } Text roundScoreText = getSmallText(Integer.toString(roundScore2)); Text roundScoreBruttoText = getSmallText(Integer.toString(roundScoreBrutto)); if (roundScore2 > 0) { myTable.add(roundScoreBruttoText, position2, row); myTable.add(roundScoreText, position2 + 1, row); } } Text finalBruttoText = getSmallBoldText(Integer.toString(collector.getTotalStrokes())); Text finalScoreText2 = getSmallBoldText(Integer.toString(finalScore)); if (finalScore > 0) { myTable.add(finalBruttoText, numberOfColumns - 1, row); myTable.add(finalScoreText2, numberOfColumns, row); } myTable.add(bruttoText, 8, row); myTable.add(totalRoundScore, 9, row); break; case ResultComparator.TOTALPOINTSWITHOUTHANDICAP: case ResultComparator.TOTALPOINTS: int roundScoreColumn3 = 9; for (int b = 1; b <= numberOfRounds; b++) { int roundScore2 = 0; int roundIncNumber = collector.getRound(b); int position = roundScoreColumn3 + roundIncNumber - 1; if (roundIncNumber != -1) { roundScore2 = collector.getRoundScore(collector.getRoundNumber(b)); } Text roundScoreText = getSmallText(Integer.toString(roundScore2)); if (roundScore2 > 0) { myTable.add(roundScoreText, position, row); } } Text finalScoreText3 = getSmallBoldText(Integer.toString(finalScore)); if (finalScore > 0) myTable.add(finalScoreText3, numberOfColumns, row); myTable.add(totalRoundScore, 8, row); break; } } catch (Exception e) { e.printStackTrace(System.err); System.err.println("MemberID: " + memberID); } myTable.add(positionText, 1, row); myTable.add(nameLink, 2, row); myTable.add(clubText, 3, row); if (finalScore > 0) { myTable.add(handicapText, 4, row); } myTable.add(holeText, 5, row); myTable.add(firstNineText, 6, row); myTable.add(lastNineText, 7, row); myTable.setHeight(row, 10); if (collector.getDismissal() > 0) { Dismissal dismissal = ((DismissalHome) IDOLookup.getHomeLegacy(Dismissal.class)).findByPrimaryKey(collector.getDismissal()); Image dismissImage = iwb.getImage("shared/red.gif"); dismissImage.setHorizontalSpacing(4); dismissImage.setAlignment("absmiddle"); String name = dismissal.getName(); if (name != null) { dismissImage.setName(name); dismissImage.setToolTip(name); dismissImage.setAlt(name); } myTable.add(dismissImage, 2, row); } myTable.setRowPadding(row, getCellpadding()); if (zebraRow % 2 != 0) { myTable.setRowStyleClass(row++, getLightRowClass()); } else { myTable.setRowStyleClass(row++, getDarkRowClass()); } zebraRow++; } for (int c = 1; c <= numberOfColumns; c++) { if (c != 2) { myTable.setColumnAlignment(c, "center"); } } myTable.setAlignment(2, 1, "center"); myTable.setRowStyleClass(1, getHeaderRowClass()); myTable.setRowStyleClass(2, getHeaderRowClass()); } catch (Exception e) { e.printStackTrace(System.err); } } private void addHeaders(String header, int column, int row) { try { Text headerText = new Text(header); myTable.add(headerText, column, row); } catch (Exception e) { e.printStackTrace(System.err); } } private void getTotalHeaders() { try { String frontNine = iwrb.getLocalizedString("tournament.front_nine", "F9"); String backNine = iwrb.getLocalizedString("tournament.back_nine", "B9"); String total = iwrb.getLocalizedString("tournament.total", "Total"); String netto = iwrb.getLocalizedString("tournament.net", "Net"); String difference = iwrb.getLocalizedString("tournament.difference", "Difference"); int firstColumn = 6; int column = firstColumn; addHeaders(frontNine, column, 2); addHeaders(backNine, column + 1, 2); String roundShort = iwrb.getLocalizedString("tournament.round_short", "R"); if (tournament.getNumberOfRounds() >= 4) { roundShort = iwrb.getLocalizedString("tournament.day_short", "D"); } String rounds = iwrb.getLocalizedString("tournament.rounds", "Rounds"); if (tournament.getNumberOfRounds() >= 4) { rounds = iwrb.getLocalizedString("tournament.days", "Days"); } switch (tournamentType_) { case ResultComparator.TOTALSTROKES: addHeaders(total, column + 2, 2); addHeaders(difference, column + 3, 2); column += 4; for (int a = 0; a < numberOfRounds; a++) { addHeaders(roundShort + Integer.toString(a + 1), column + a, 2); } myTable.mergeCells(column, 1, column + numberOfRounds - 1, 1); addHeaders(rounds, column, 1); addHeaders(total, column + numberOfRounds, 2); addHeaders(difference, column + numberOfRounds + 1, 2); myTable.mergeCells(column + numberOfRounds, 1, column + numberOfRounds + 1, 1); addHeaders(iwrb.getLocalizedString("tournament.total", "Total"), column + numberOfRounds, 1); break; case ResultComparator.TOTALSTROKESWITHHANDICAP: addHeaders(total, column + 2, 2); addHeaders(netto, column + 3, 2); column += 4; int roundColumn = column; for (int a = 0; a < numberOfRounds; a++) { myTable.mergeCells(roundColumn, 1, roundColumn + 1, 1); addHeaders(total, roundColumn, 2); addHeaders(netto, roundColumn + 1, 2); addHeaders(roundShort + Integer.toString(a + 1), roundColumn, 1); roundColumn += 2; } addHeaders(total, roundColumn, 2); addHeaders(netto, roundColumn + 1, 2); myTable.mergeCells(roundColumn, 1, roundColumn + 1, 1); addHeaders(iwrb.getLocalizedString("tournament.total", "Total"), roundColumn, 1); break; case ResultComparator.TOTALPOINTSWITHOUTHANDICAP: case ResultComparator.TOTALPOINTS: addHeaders(total, column + 2, 2); column += 3; for (int a = 0; a < numberOfRounds; a++) { addHeaders(roundShort + Integer.toString(a + 1), column + a, 2); } myTable.mergeCells(column, 1, column + numberOfRounds - 1, 1); addHeaders(rounds, column, 1); myTable.mergeCells(column + numberOfRounds, 1, column + numberOfRounds, 2); addHeaders(iwrb.getLocalizedString("tournament.total", "Total"), column + numberOfRounds, 1); break; } myTable.mergeCells(firstColumn - 1, 1, column - 1, 1); addHeaders(iwrb.getLocalizedString("tournament.hole", "Hole"), firstColumn - 1, 2); addHeaders(iwrb.getLocalizedString("tournament.last_round", "Last round"), firstColumn - 1, 1); numberOfColumns = myTable.getColumns(); } catch (Exception e) { e.printStackTrace(System.err); } } public String getBundleIdentifier() { return IW_BUNDLE_IDENTIFIER; } }