/* * Created on 4.3.2004 */ package is.idega.idegaweb.golf.tournament.presentation; import is.idega.idegaweb.golf.entity.Member; import is.idega.idegaweb.golf.entity.MemberHome; import is.idega.idegaweb.golf.entity.Startingtime; import is.idega.idegaweb.golf.entity.Tournament; import is.idega.idegaweb.golf.entity.TournamentGroup; import is.idega.idegaweb.golf.entity.TournamentGroupHome; import is.idega.idegaweb.golf.entity.TournamentHome; import is.idega.idegaweb.golf.entity.TournamentRound; import is.idega.idegaweb.golf.entity.TournamentRoundHome; import is.idega.idegaweb.golf.moduleobject.GolfDialog; 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.Iterator; import java.util.List; import java.util.Vector; import javax.ejb.FinderException; import com.idega.data.EntityFinder; import com.idega.data.IDOLookup; import com.idega.data.SimpleQuerier; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.text.Link; import com.idega.presentation.text.Paragraph; import com.idega.presentation.text.Text; import com.idega.presentation.ui.CheckBox; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.Form; import com.idega.presentation.ui.GenericButton; import com.idega.presentation.ui.HiddenInput; import com.idega.presentation.ui.RadioButton; import com.idega.presentation.ui.SelectionBox; import com.idega.presentation.ui.SubmitButton; /** * @author gimmi */ public class TournamentStartingtimeSetup extends TournamentBlock { int howManyMembersInEachStartingGroup = 3; SubmitButton startingTimeB3; SubmitButton startingTimeB4; SubmitButton startingTimeB5; SubmitButton startingTimeB6; SubmitButton startingTimeB7; SubmitButton startingTimeB8; SubmitButton startingTimeB9; protected boolean tournamentMustBeSet() { return true; } /* * public void setTournament(ModuleInfo modinfo, Tournament tournament) { * //modinfo.setSessionAttribute("golf_setupstartingtime_tournament",tournament); } */ public Tournament getTournament(IWContext modinfo) { try { return ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(Integer.parseInt((String) modinfo.getSessionAttribute("tournament_id"))); } catch (FinderException e) { return null; } } public void main(IWContext modinfo) throws Exception { initialize(modinfo, getResourceBundle()); Tournament tournament = getTournament(modinfo); String control = modinfo.getParameter("stt_action"); if (control == null) { control = "tournRound"; // selectTournament(modinfo, iwrb); } //else { if (tournament != null) { if (control.equals("tournRound")) { selectTournamentRound(modinfo, getResourceBundle()); } else if (control.equals("tourngroups")) { if (getTournament(modinfo).getIfGroupTournament()) { selectTournamentGroups(modinfo, getResourceBundle()); } else { selectTournamentGroups(modinfo, getResourceBundle()); } } else if (control.equals("arrangement_chosen")) { useArrangement(modinfo, getResourceBundle()); } else if (control.equals("tournament_groups_chosen")) { arrangeTournamentGroups(modinfo, getResourceBundle()); } else if (control.equals("manualArrangementForMembersInGroupsChosen")) { manualArrangementForMembersInGroups(modinfo); } else if (control.equals("tournament_groups_ordered")) { selectArrangementForGroups(modinfo, getResourceBundle()); //arrangeMembersInGroups(modinfo); } else if (control.equals("arrangement_chosen_for_groups")) { arrangementChosenForGroups(modinfo, getResourceBundle()); } else if (control.equals("arrangeManualled")) { arrangeManualRegistraion(modinfo); } else if (control.equals("tournamentRoundIdChosenForArrangement")) { arrangeByPreviousScore(modinfo, getResourceBundle()); } else if (control.equals("tournamentRoundIdChosenForStartingtime")) { arrangeByPreviousStartingtime(modinfo, getResourceBundle()); } else { //add("Action \""+control+"\" is not handled"); } add(getBlockForm(tournament, modinfo)); } } private void initialize(IWContext modinfo, IWResourceBundle iwrb) { if (startingTimeB3 == null) { String goForward = iwrb.getLocalizedString("tournament.continue", "Continue"); String save = iwrb.getLocalizedString("tournament.save", "Save"); startingTimeB3 = new SubmitButton(goForward, "stt_action", "tournday"); startingTimeB4 = new SubmitButton(goForward, "stt_action", "tourngroups"); startingTimeB5 = new SubmitButton(goForward, "stt_action", "tourngroups"); ///new SubmitButton("stb5",goForward); startingTimeB6 = new SubmitButton("stb6", goForward); startingTimeB7 = new SubmitButton("stb7", save); startingTimeB8 = new SubmitButton("stb8", goForward); startingTimeB9 = new SubmitButton("stb9", goForward); } } private void selectTournament(IWContext modinfo, IWResourceBundle iwrb) throws Exception { Table table = new Table(1, 3); table.setAlignment(1, 3, "right"); Form form = new Form(); form.add(table); table.add(iwrb.getLocalizedString("tournament.choose_tournament", "Choose a tournament"), 1, 1); DropdownMenu menu = getTournamentBusiness(modinfo).getDropdownOrderedByUnion(new DropdownMenu("tournament"), modinfo); menu.setMarkupAttribute("size", "10"); table.add(menu, 1, 2); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 1, 3); table.add(new HiddenInput("stt_action", "tournRound")); add(form); } private void selectTournamentRound(IWContext modinfo, IWResourceBundle iwrb) throws Exception { Tournament tournament = getTournament(modinfo); DropdownMenu theMenu = new DropdownMenu("tournament_round"); Form form = new Form(); Table table = new Table(); table.setNoWrap(); table.setStyleClass(1, 1, getHeaderRowClass()); table.setStyleClass(3, 1, getHeaderRowClass()); table.setStyleClass(4, 1, getHeaderRowClass()); table.setStyleClass(5, 1, getHeaderRowClass()); table.setStyleClass(6, 1, getHeaderRowClass()); table.setCellspacing(0); form.add(table); table.setWidth(600); table.setBorder(0); int row = 1; try { String sub_action = modinfo.getParameter("sub_action"); if (sub_action != null) { if (sub_action.equals("changeVisibility")) { String tournament_round_id = modinfo.getParameter("tournament_round_id_to_change"); if (tournament_round_id != null) { TournamentRound tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tournament_round_id)); if (tRound.getVisibleStartingtimes()) { tRound.setVisibleStartingtimes(false); } else { tRound.setVisibleStartingtimes(true); } getTournamentBusiness(modinfo).invalidateStartingTimeCache(modinfo, tournament.getID(), String.valueOf(tournament_round_id)); tRound.update(); } } } } catch (Exception e) { } TournamentRound[] tourRounds = tournament.getTournamentRounds(); if (tournament.isDirectRegistration()) { if (tourRounds.length > 1) { for (int i = 0; i < tourRounds.length; i++) { if (i != 0) { theMenu.addMenuElement(tourRounds[i].getID(), iwrb.getLocalizedString("tournament.round", "Round") + " " + tourRounds[i].getRoundNumber() + "   " + (new com.idega.util.IWTimestamp(tourRounds[i].getRoundDate())).getISLDate(".", true)); } } add(iwrb.getLocalizedString("tournament.tee_times_for_first_round_are_chosen_in_tee_times_registration", "Tee times for the first round are arrangenged in Register player")); add("<br><br>"); add(form); } else { add(iwrb.getLocalizedString("tournament.tee_times_are_chosen_in_tee_times_registration", "Tee times in this tournament are arrangerd in Register player")); add("<br><br>"); GenericButton theEdit1 = getButton(new GenericButton(localize("tournament.edit_teetimes", "Edit Teetimes"))); theEdit1.setWindowToOpen(ModifyStartingtimeWindow.class); theEdit1.addParameterToWindow("tournament_id", tournament.getID()); theEdit1.addParameterToWindow("action", "getSearch"); add(theEdit1); } } else { theMenu = new DropdownMenu(tournament.getTournamentRounds()); add(form); } //setTournament(modinfo,tournament); Text header = getSmallHeader(iwrb.getLocalizedString("tournament.pick_a_round", "Pick a round")); table.add(header, 1, row); table.setWidth(1, "350"); table.setWidth(2, "20"); Link change = getLink(iwrb.getLocalizedString("tournament.change", "Change")); change.addParameter("sub_action", "changeVisibility"); change.addParameter("stt_action", modinfo.getParameter("stt_action")); Link print; Link changeClone; Text notVisible = getMessageText(iwrb.getLocalizedString("tournament.not_visible", "Not visible")); notVisible.setFontColor("red"); Text header2 = getSmallHeader(iwrb.getLocalizedString("tournament.tee_times", "Tee times")); table.add(header2, 3, row); table.mergeCells(3, row, 5, row); for (int i = 0; i < tourRounds.length; i++) { table.add(tourRounds[i].getName(iwrb), 3, row + i + 1); table.setWidth(3, row + i + 1, "80"); table.setWidth(4, row + i + 1, "70"); if (tourRounds[i].getVisibleStartingtimes()) { table.add(iwrb.getLocalizedString("tournament.visible", "Visible"), 4, row + i + 1); } else { table.add(notVisible, 4, row + i + 1); } change = new Link(iwrb.getLocalizedString("tournament.change", "Change")); change.addParameter("sub_action", "changeVisibility"); change.addParameter("stt_action", modinfo.getParameter("stt_action")); change.addParameter("tournament_round_id_to_change", "" + tourRounds[i].getID()); table.add(change, 5, row + i + 1); print = getLink(iwrb.getLocalizedString("tournament.print", "print")); print.addParameter(TournamentStartingtimeWindow.PARAMETER_TOURNAMENT_ID, tournament.getID()); print.addParameter(TournamentStartingtimeWindow.PARAMETER_TOURNAMENT_ROUND_ID, tourRounds[i].getID()); print.setWindowToOpen(TournamentStartingtimeWindow.class); table.add(print, 6, row + i + 1); if (i % 2 == 0) { table.setStyleClass(3, row + i + 1, getDarkRowClass()); table.setStyleClass(4, row + i + 1, getDarkRowClass()); table.setStyleClass(5, row + i + 1, getDarkRowClass()); table.setStyleClass(6, row + i + 1, getDarkRowClass()); } else { table.setStyleClass(3, row + i + 1, getLightRowClass()); table.setStyleClass(4, row + i + 1, getLightRowClass()); table.setStyleClass(5, row + i + 1, getLightRowClass()); table.setStyleClass(6, row + i + 1, getLightRowClass()); } } // table.setBorder(1); ++row; table.add(theMenu, 1, row); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 1, row); table.add(new HiddenInput("stt_action", "tourngroups")); ++row; ++row; // table.setAlignment(1,row,"center"); ++row; // table.setAlignment(1,row,"center"); table.add(iwrb.getLocalizedString("tournament.to_edit_tee_times", "To edit tee times push the button below"), 1, 4); GenericButton theEdit = getButton(new GenericButton(localize("tournament.edit_tee_times", "Edit Teetimes"))); theEdit.setWindowToOpen(ModifyStartingtimeWindow.class); theEdit.addParameter("tournament_id", tournament.getID()); theEdit.addParameter("action", "getSearch"); table.add(theEdit, 1, 5); Paragraph par = new Paragraph(); par.setAlign("center"); par.add("<br>   "); par.add(getTournamentBusiness(modinfo).getBackLink(modinfo)); add(par); } private void selectTournamentGroups(IWContext modinfo, IWResourceBundle iwrb) throws Exception { Tournament tournament = getTournament(modinfo); if (tournament.getIfGroupTournament()) { Form form = new Form(); Table table = new Table(); form.add(table); table.setBorder(0); table.mergeCells(1, 1, 2, 1); table.mergeCells(1, 2, 2, 2); table.setAlignment(1, 2, "center"); table.setAlignment(1, 3, "left"); table.setAlignment(2, 3, "right"); table.setVerticalAlignment(1, 3, "top"); table.setVerticalAlignment(2, 3, "top"); table.add(iwrb.getLocalizedString("tournament.choose_tournament_group_for_round", "Choose groups to play this round"), 1, 1); table.add(new SelectionBox(tournament.getTournamentGroups()), 1, 2); table.add(new HiddenInput("stt_action", "tournament_groups_chosen")); form.maintainParameter("tournament_round"); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 2, 3); table.add(getTournamentBusiness(modinfo).getBackLink(modinfo), 1, 3); add(form); } else { selectArrangement(modinfo, iwrb); } } private void arrangeTournamentGroups(IWContext modinfo, IWResourceBundle iwrb) throws Exception { String[] tournament_group_id = modinfo.getParameterValues("tournament_group"); if (tournament_group_id != null) { TournamentGroup tGroup; SelectionBox tournamentGroups = new SelectionBox("tournament_group"); for (int i = 0; i < tournament_group_id.length; i++) { tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tournament_group_id[i])); tournamentGroups.addMenuElement(tGroup.getID(), tGroup.getName()); } tournamentGroups.addUpAndDownMovers(); tournamentGroups.setHeight(8); tournamentGroups.selectAllOnSubmit(); Form form = new Form(); Table table = new Table(2, 3); form.add(table); table.setBorder(0); table.mergeCells(1, 1, 2, 1); table.mergeCells(1, 2, 2, 2); table.setAlignment(1, 2, "center"); table.setAlignment(1, 3, "left"); table.setAlignment(2, 3, "right"); table.setVerticalAlignment(1, 3, "top"); table.setVerticalAlignment(2, 3, "top"); table.add(iwrb.getLocalizedString("tournament.choose_order", "Select the order of the groups"), 1, 1); table.add(tournamentGroups, 1, 2); table.add(getTournamentBusiness(modinfo).getBackLink(modinfo), 1, 3); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 2, 3); form.add(new HiddenInput("stt_action", "tournament_groups_ordered")); form.maintainParameter("tournament_round"); add(form); } else { add(iwrb.getLocalizedString("tournament.must_select_groups", "You must pick at least one group")); add("<br><br>"); add(getTournamentBusiness(modinfo).getBackLink(modinfo)); } } private void selectArrangementForGroups(IWContext modinfo, IWResourceBundle iwrb) throws Exception { Tournament tournament = getTournament(modinfo); String[] tournamentGroups = modinfo.getParameterValues("tournament_group"); if (tournamentGroups.length > 0) { int row = 3; Form form = new Form(); form.maintainParameter("tournament_round"); form.maintainParameter("tournament_group"); Table table = new Table(); form.add(table); table.setBorder(0); table.mergeCells(1, 1, 3, 1); table.add(iwrb.getLocalizedString("tournament.choose_ordering_method_for_groups", "Select ordering method for groups"), 1, 1); table.add(iwrb.getLocalizedString("tournament.group", "Group"), 1, row); table.add(iwrb.getLocalizedString("tournament.order", "Order"), 3, row); table.add(iwrb.getLocalizedString("tournament.count", "Count"), 5, row); String tournament_round_id = modinfo.getParameter("tournament_round"); TournamentRound tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tournament_round_id)); DropdownMenu menu = getArrangementMenu(tournament, tRound, modinfo, iwrb); DropdownMenu menuAll = getArrangementMenuForAll(tournament, tRound, modinfo, iwrb); List members; String manyMembers[] = SimpleQuerier.executeStringQuery("Select member_id from tournament_member where tournament_id = " + tournament.getID()); TournamentGroup tGroup; for (int i = 0; i < tournamentGroups.length; i++) { ++row; tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tournamentGroups[i])); //members = // getTournamentBusiness(modinfo).getMembersInTournamentGroup(tournament,tGroup); table.add(tGroup.getName(), 1, row); table.add(new HiddenInput("tournament_group_id", "" + tGroup.getID()), 3, row); table.add(menu, 3, row); /* * if (members != null) { table.add(members.size()+"",5,row); } * else { table.add("0",5,row); } */ } ++row; ++row; table.add(iwrb.getLocalizedString("tournament.all_groups", "All groups"), 1, row); table.add(menuAll, 3, row); if (manyMembers != null) { table.add("" + manyMembers.length, 5, row); } else { table.add("0", 5, row); } ++row; Text warning1 = new Text(iwrb.getLocalizedString("tournament.all_groups_warning_1", "NB! If ordering method is chosen here it affact ALL groups,")); warning1.addToText("<br>"); warning1.addToText(iwrb.getLocalizedString("tournament.all_groups_warning_2", "even if something else has been chosen elsewhere.")); warning1.setFontColor("red"); table.add(warning1, 1, row); table.mergeCells(1, row, 5, row); ++row; ++row; table.mergeCells(1, row, 5, row); if (tRound.getStartingtees() > 1) { table.add(new HiddenInput("overwrite_startingtimes", "unspecified"), 1, row); } else { Text warning = new Text(iwrb.getLocalizedString("tournament.overwrite_startingtimes", "Overwrite previous startingtimes")); warning.addToText(" ?  "); CheckBox cBox = new CheckBox("overwrite_startingtimes"); table.add(warning, 1, row); table.add(cBox, 1, row); ++row; } ++row; table.add(new HiddenInput("stt_action", "arrangement_chosen_for_groups")); table.add(getTournamentBusiness(modinfo).getBackLink(modinfo), 1, row); table.mergeCells(3, row, 5, row); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 3, row); table.setAlignment(3, row, "right"); ++row; ++row; add(form); } } public void deleteStartingtimes(TournamentRound tRound) throws SQLException { Startingtime[] sTimes = (Startingtime[]) ((Startingtime) IDOLookup.instanciateEntity(Startingtime.class)).findAll("select s.* from startingtime s, tournament_round_startingtime trs where trs.startingtime_id = s.startingtime_id AND trs.tournament_round_id = " + tRound.getID()); for (int i = 0; i < sTimes.length; i++) { sTimes[i].removeFrom(tRound); sTimes[i].delete(); } } private void arrangementChosenForGroups(IWContext modinfo, IWResourceBundle iwrb) throws Exception { String[] tournament_group_ids = modinfo.getParameterValues("tournament_group_id"); String[] arrangements = modinfo.getParameterValues("arrangement"); String arrangementAll = modinfo.getParameter("arrangementAll"); if (arrangementAll == null) arrangementAll = "null"; String tRoundId = modinfo.getParameter("tournament_round"); TournamentRound tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tRoundId)); if (modinfo.getParameter("overwrite_startingtimes") != null) { deleteStartingtimes(tRound); } Tournament tournament = getTournament(modinfo); //checkIfNull boolean arrangementsNull = false; boolean arrangementsAllNull = true; for (int i = 0; i < arrangements.length; i++) { if (arrangements[i].equals("null")) { arrangementsNull = true; break; } } if (arrangementAll.equals("null")) { if (!arrangementsNull) { List members; Form form = new Form(); form.maintainParameter("tournament_round"); Table table = new Table(); table.setBorder(0); table.mergeCells(1, 1, 3, 1); table.setAlignment(1, 1, "center"); //table.add("<b>Handvirk r��un innan m�tsh�pa</b>",1,1); Table tabel = new Table(); tabel.setBorder(0); boolean addTabel = false; boolean addTable = false; int row = 2; int column = 0; int teljari = 0; TournamentGroup tGroup; if (tournament_group_ids.length > 0) { for (int i = 0; i < tournament_group_ids.length; i++) { tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tournament_group_ids[i])); if (!arrangements[i].equals("null")) { members = getTournamentBusiness(modinfo).getMembersInTournamentGroup(tournament, tGroup); if (members != null) { if (arrangements[i].equals("manual")) { /* * table.add(new * HiddenInput("tournament_group_id",tournament_group_ids[i]),1,row); * ++column; ++teljari; if (column == 3) { * column = 1; ++row; } table.add(" * <u>"+tGroup.getName()+ " </u> *   (h�pur "+teljari+")" * ,column,row); table.add(" <br> * ",column,row); * table.add(getArrangeManualSelectionBox(members,"member_"+tournament_group_ids[i]),column,row); * table.setAlignment(column,row,"left"); * table.setVerticalAlignment(column,row,"top"); * addTable = true; */ } else { useArrangement(modinfo, members, arrangements[i], iwrb); Text texti = new Text(iwrb.getLocalizedString("tournament.ordering_finished_for", "Ordering complete for") + " \"" + tGroup.getName() + "\""); texti.setFontColor("black"); add(texti); add("<br>"); } } } else { } } } if (addTabel) { form.add(tabel); add(form); } if (addTable) { form.add(table); ++row; table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 2, row); table.add(new HiddenInput("stt_action", "manualArrangementForMembersInGroupsChosen"), 2, row); table.setAlignment(2, row, "right"); add(form); } } else { add(iwrb.getLocalizedString("tournament.ording_method_missing_for_group", "Ordering method missing for one group or more")); add("<p>"); add(getTournamentBusiness(modinfo).getBackLink(modinfo)); } } else { arrangementsAllNull = false; List members = getTournamentBusiness(modinfo).getMembersInTournamentList(tournament); if (arrangementAll.indexOf("previousRounds") != -1) { arrangementsAllNull = true; String highLow = "high"; if (arrangementAll.equals("previousRoundsHigh")) { highLow = "high"; } else if (arrangementAll.equals("previousRoundsLow")) { highLow = "low"; } int theRow = 1; Form form = new Form(); form.maintainParameter("tournament_round"); form.maintainParameter("tournament_group_id"); Table table = new Table(); table.setBorder(0); table.mergeCells(1, theRow, 2, theRow); table.add(iwrb.getLocalizedString("tournament.select_rounds_to_use", "Select rounds for calculation")); table.add(new HiddenInput("stt_action", "tournamentRoundIdChosenForArrangement"), 1, theRow); table.add(new HiddenInput("high_low", highLow), 1, theRow); ++theRow; int roundNumber = tRound.getRoundNumber(); TournamentRound[] tRounds = tournament.getTournamentRounds(); for (int h = 0; h < roundNumber - 1; h++) { ++theRow; table.add(tRounds[h].getName(), 1, theRow); table.add(new CheckBox("arrangement_tournament_round_id", tRounds[h].getID() + ""), 2, theRow); } ++theRow; ++theRow; table.add(iwrb.getLocalizedString("tournament.order_by", "Order by") + "...", 1, theRow); DropdownMenu order = new DropdownMenu("displayScoresOrder"); order.addMenuElement(ResultComparator.TOTALSTROKES + "", iwrb.getLocalizedString("tournament.displayscore_strokes_wo_handicap", "Strokes without handicap (gross)")); order.addMenuElement(ResultComparator.TOTALSTROKESWITHHANDICAP + "", iwrb.getLocalizedString("tournament.displayscore_strokes_w_handicap", "Strokes with handicap (net)")); order.addMenuElement(ResultComparator.TOTALPOINTS + "", iwrb.getLocalizedString("tournament.displayscore_points", "Points")); table.add(order, 2, theRow); ++theRow; ++theRow; table.mergeCells(1, theRow, 2, theRow); table.setAlignment(1, theRow, "right"); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 1, theRow); form.add(table); add(form); } else if (arrangementAll.equals("previousStartingtime")) { arrangementsAllNull = true; int theRow = 1; Form form = new Form(); form.maintainParameter("tournament_round"); form.maintainParameter("tournament_group_id"); Table table = new Table(); table.setBorder(0); table.mergeCells(1, theRow, 2, theRow); table.add(iwrb.getLocalizedString("tournament.select_rounds_to_use", "Select rounds for calculation")); table.add(new HiddenInput("stt_action", "tournamentRoundIdChosenForStartingtime"), 1, theRow); ++theRow; int roundNumber = tRound.getRoundNumber(); TournamentRound[] tRounds = tournament.getTournamentRounds(); for (int h = 0; h < roundNumber - 1; h++) { ++theRow; table.add(tRounds[h].getName(), 1, theRow); table.add(new RadioButton("startingtime_tournament_round_id", tRounds[h].getID() + ""), 2, theRow); } ++theRow; ++theRow; table.mergeCells(1, theRow, 2, theRow); table.setAlignment(1, theRow, "right"); table.add(getTournamentBusiness(modinfo).getAheadButton(modinfo, "", ""), 1, theRow); form.add(table); add(form); } else { useArrangement(modinfo, members, arrangementAll, iwrb); add(iwrb.getLocalizedString("tournament.ordering_finished", "Ordering Finished")); } } if ((!arrangementsNull) || (!arrangementsAllNull)) { finalizeStartingtimes(tRound); } } public void finalizeStartingtimes(TournamentRound tRound) { if (tRound.getStartingtees() > 1) { try { String[] highestGrupNum = SimpleQuerier.executeStringQuery("Select max(grup_num) from startingtime s, tournament_round_startingtime trs where s.startingtime_id = trs.startingtime_id AND trs.tournament_round_id = " + tRound.getID()); int total = 1; try { total = Integer.parseInt(highestGrupNum[0]); } catch (NumberFormatException n) { } int half = (total / 2) + (total % 2); Startingtime[] sTimes = (Startingtime[]) ((Startingtime) IDOLookup.instanciateEntity(Startingtime.class)).findAll("Select s.* from startingtime s, tournament_round_startingtime trs where s.startingtime_id = trs.startingtime_id AND trs.tournament_round_id = " + tRound.getID() + " AND s.grup_num > " + half + " order by grup_num"); for (int i = 0; i < sTimes.length; i++) { sTimes[i].setTeeNumber(10); sTimes[i].setGroupNum(sTimes[i].getGroupNum() - half); sTimes[i].update(); } } catch (Exception e) { System.err.println("/tournament/setupstartingtime : finilizeStartingtimes : "); e.printStackTrace(System.err); } } } private void manualArrangementForMembersInGroups(IWContext modinfo) throws Exception { IWBundle bundle = getBundle(modinfo); IWResourceBundle iwrb = bundle.getResourceBundle(modinfo.getCurrentLocale()); Tournament tournament = getTournament(modinfo); try { String[] tournament_group_ids = modinfo.getParameterValues("tournament_group_id"); String[] members; String tournament_round_id = modinfo.getParameter("tournament_round"); TournamentRound tourRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tournament_round_id)); Table contentTable = new Table(1, 3); int row = 1; Table table = new Table(); table.add("<u>" + iwrb.getLocalizedString("tournament.already_registered", "Were already registered") + "</u>", 1, 1); table.setAlignment("left"); table.setAlignment(1, 1, "left"); int rowR = 1; Table tableR = new Table(); tableR.add("<u>" + iwrb.getLocalizedString("tournament.were_registered", "Were registered") + "</u>", 1, 1); tableR.setAlignment("left"); tableR.setAlignment(1, 1, "left"); Member member; int startingGroup = 1; if (tournament_group_ids != null) { for (int i = 0; i < tournament_group_ids.length; i++) { members = modinfo.getParameterValues("member_" + tournament_group_ids[i]); if (members != null) { for (int j = 0; j < members.length; j++) { member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(Integer.parseInt(members[j])); startingGroup = getTournamentBusiness(modinfo).getNextAvailableStartingGroup(tournament, tourRound); //startingGroup = // getNextAvailableStartingGroup(tournament, // tourDay, tournament.getNumberInGroup()); if (!getTournamentBusiness(modinfo).isMemberRegisteredInTournament(tournament, tourRound, tournament.getNumberInGroup(), member)) { getTournamentBusiness(modinfo).setupStartingtime(modinfo, member, tournament, tourRound.getID(), startingGroup); ++rowR; tableR.add(member.getName(), 1, rowR); tableR.add("R�sh�pur " + startingGroup, 4, rowR); tableR.setAlignment(1, rowR, "left"); tableR.setAlignment(4, rowR, "left"); } else { ++row; table.add(member.getName(), 1, row); table.setAlignment(1, row, "left"); } } } } } if (rowR > 1) { contentTable.add(tableR, 1, 1); } if (row > 1) { contentTable.add(table, 1, 3); } add(contentTable); } catch (Exception ex) { ex.printStackTrace(System.err); } } /** * @depricated */ private void selectArrangement(IWContext modinfo, IWResourceBundle iwrb) throws Exception { // selectArrangement(modinfo,-1); } private DropdownMenu getArrangementMenuForAll(Tournament tournament, TournamentRound tRound, IWContext modinfo, IWResourceBundle iwrb) throws SQLException { DropdownMenu menu = new DropdownMenu("arrangementAll"); menu.addMenuElement("null", iwrb.getLocalizedString("tournament.start_order_by_group", "Use ordering for each group")); menu.addMenuElement("random", iwrb.getLocalizedString("tournament.start_order_random", "Random")); menu.addMenuElement("handicap_low_first", iwrb.getLocalizedString("tournament.start_order_handicap_low_first", "By handicap (lowest first)")); menu.addMenuElement("handicap_high_first", iwrb.getLocalizedString("tournament.start_order_handicap_high_first", "By handicap (highest first)")); // menu.addMenuElement("manual",iwrb.getLocalizedString("tournament.start_order_manual","Manual")); menu.addMenuElement("alphabetical", iwrb.getLocalizedString("tournament.start_order_alphabetical", "Alphabetically")); int roundNumber = tRound.getRoundNumber(); if (roundNumber > 1) { menu.addMenuElement("previousRoundsLow", iwrb.getLocalizedString("tournament.start_order_previous_rounds_low", "By previous rounds results (lowest first)")); menu.addMenuElement("previousRoundsHigh", iwrb.getLocalizedString("tournament.start_order_previous_rounds_high", "By previous rounds results (highest first)")); menu.addMenuElement("previousStartingtime", iwrb.getLocalizedString("tournament.start_order_previous_start", "Unchanged ordering")); } return menu; } private DropdownMenu getArrangementMenu(Tournament tournament, TournamentRound tRound, IWContext modinfo, IWResourceBundle iwrb) throws SQLException { DropdownMenu menu = new DropdownMenu("arrangement"); menu.addMenuElement("null", iwrb.getLocalizedString("tournament.start_order_by_all_groups", "Use ordering for all groups")); menu.addMenuElement("random", iwrb.getLocalizedString("tournament.start_order_random", "Random")); menu.addMenuElement("handicap_low_first", iwrb.getLocalizedString("tournament.start_order_handicap_low_first", "By handicap (lowest first)")); menu.addMenuElement("handicap_high_first", iwrb.getLocalizedString("tournament.start_order_handicap_high_first", "By handicap (highest first)")); // menu.addMenuElement("manual",iwrb.getLocalizedString("tournament.start_order_manual","Manual")); menu.addMenuElement("alphabetical", iwrb.getLocalizedString("tournament.start_order_alphabetical", "Alphabetically")); return menu; } /* * private void selectArrangement(ModuleInfo modinfo, int * tournamentGroupId)throws Exception{ GolfDialog dialog = null; * TournamentGroup tourGroup = null; if (tournamentGroupId == -1) { dialog = * new GolfDialog("Veldu r��unarm�ta"); } else { tourGroup = new * TournamentGroup(tournamentGroupId); dialog = new GolfDialog("Veldu * r��unarm�ta fyrir \""+tourGroup.getName()+"\""); } Form form=new Form(); * add(dialog); dialog.add(form); DropdownMenu menu = getArrangementMenu(); * form.add(new HiddenInput("stt_action","arrangement_chosen")); * form.maintainParameter("tournament_day"); form.add(menu); * form.add(startingTimeB8); } */ private void useArrangement(IWContext modinfo, List members, String arrangement, IWResourceBundle iwrb) throws Exception { members = orderMembers(members, arrangement); arrangeMembers(modinfo, members, iwrb); } private void useArrangement(IWContext modinfo, String arrangement, IWResourceBundle iwrb) throws Exception { Tournament tournament = getTournament(modinfo); List members = new Vector(); if (arrangement.equals("handicap")) { members = getMembers(tournament, "handicap"); } else if (arrangement.equals("random")) { members = getMembers(tournament); } else if (arrangement.equals("alphabetical")) { members = getMembers(tournament, "name"); } else if (arrangement.equals("manual")) { members = getMembers(tournament, "name"); } arrangeMembers(modinfo, members, iwrb); } private void useArrangement(IWContext modinfo, IWResourceBundle iwrb) throws Exception { String arrangement = modinfo.getParameter("arrangement"); if (arrangement != null) { useArrangement(modinfo, arrangement, iwrb); } else { String stt_action = modinfo.getParameter("stt_action"); if (stt_action != null) { if (stt_action.equals("arrangement_chosen")) { selectArrangement(modinfo, iwrb); } else if (stt_action.equals("arrangement_chosen_for_group")) { selectArrangementForGroups(modinfo, iwrb); } } else { selectTournament(modinfo, iwrb); } } } private void arrangeManual(IWContext modinfo, List members, IWResourceBundle iwrb) { if (members != null) { Form form = new Form(); Table table = new Table(); form.add(table); form.maintainParameter("tournament_round"); SelectionBox memberDropdown = new SelectionBox(members); memberDropdown.addUpAndDownMovers(); memberDropdown.setHeight(10); memberDropdown.selectAllOnSubmit(); form.add(memberDropdown); form.add(new SubmitButton(iwrb.getLocalizedString("tournament.select", "Select"), "stt_action", "arrangeManualled")); add(form); } else { nobodyIsRegistered(iwrb); } } private SelectionBox getArrangeManualSelectionBox(List members, String name) { SelectionBox memberDropdown = new SelectionBox(members); if (name.equalsIgnoreCase("")) { memberDropdown.setName("member"); } else { memberDropdown.setName(name); } memberDropdown.addUpAndDownMovers(); memberDropdown.setHeight(10); memberDropdown.selectAllOnSubmit(); return memberDropdown; } private SelectionBox getArrangeManualSelectionBox(List members) { return getArrangeManualSelectionBox(members, ""); } private void arrangeManualRegistraion(IWContext modinfo) throws SQLException { add("KOMINN � FALL SEM �G VIL HENDA !!!!!!"); Tournament tournament = getTournament(modinfo); String[] member_ids = modinfo.getParameterValues("member"); String s_tournament_round_id = modinfo.getParameter("tournament_round"); if (member_ids != null) { Member member; for (int i = 0; i < member_ids.length; i++) { try { member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(Integer.parseInt(member_ids[i])); //setupStartingtime(member,tournament, // Integer.parseInt(s_tournament_day_id)); add("ekkert ger�ist"); } catch (Exception e) { add("Villa"); e.printStackTrace(System.err); add(e.getMessage()); } } } else { add("Enginn var valinn valinn"); } } public void removeDismissed(List members, Tournament tournament) { Member member; try { Iterator iter = members.iterator(); while (iter.hasNext()) { Object item = iter.next(); member = (Member) item; if (tournament.getDismissal(member) != 0) { System.err.println("setupstartingtime : ArrangeMembers : " + tournament.getName() + " : " + member.getName() + " radast ekki, Fravisun"); iter.remove(); } } } catch (Exception e) { } } private void arrangeMembers(IWContext modinfo, List members, IWResourceBundle iwrb) { Member member; Tournament tournament = getTournament(modinfo); String s_tournament_round_id = modinfo.getParameter("tournament_round"); boolean newTournamentGroups = false; int minimumGroupNumber = 1; if (members != null) { removeDismissed(members, tournament); TournamentRound tRound; int[] start = new int[2]; int numberInGroup = tournament.getNumberInGroup(); int modder = members.size() % numberInGroup; if (numberInGroup == 4) { switch (modder) { case 1: start[0] = 2; start[1] = 3; break; case 2: start[0] = 3; start[1] = 3; break; case 3: start = new int[1]; start[0] = 3; break; default: start = new int[0]; break; } } else if (numberInGroup == 3) { switch (modder) { case 1: start[0] = 2; start[1] = 2; break; case 2: start = new int[1]; start[0] = 2; break; default: start = new int[0]; break; } } else if (numberInGroup == 2) { switch (modder) { case 1: start = new int[1]; start[0] = 1; break; default: start = new int[0]; break; } } else { start = new int[0]; } int groupNumber = 1; int previousStartingGroup = 0; int currentStartingGroup = 0; int dismiss = 0; for (int i = 0; i < members.size(); i++) { member = (Member) members.get(i); try { newTournamentGroups = false; if (i == 0) { newTournamentGroups = true; } tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(s_tournament_round_id)); int startingGroup = getTournamentBusiness(modinfo).getNextAvailableStartingGroup(tournament, tRound, newTournamentGroups, minimumGroupNumber); if (i == 0) { previousStartingGroup = startingGroup; } currentStartingGroup = startingGroup; if (currentStartingGroup > previousStartingGroup) { ++groupNumber; ++previousStartingGroup; } else if (currentStartingGroup - previousStartingGroup == 2) { previousStartingGroup = currentStartingGroup - 1; } getTournamentBusiness(modinfo).setupStartingtime(modinfo, member, tournament, tRound.getID(), startingGroup); if (start.length > 1) { if (groupNumber <= start.length) { List theList = getTournamentBusiness(modinfo).getMembersInStartingGroup(tournament, tRound, startingGroup); if (theList != null) { if (theList.size() == start[groupNumber - 1]) { minimumGroupNumber = (startingGroup + 1); } } } } else if (start.length > 0) { if (groupNumber == 1) { List theList = getTournamentBusiness(modinfo).getMembersInStartingGroup(tournament, tRound, startingGroup); if (theList != null) { if (theList.size() == start[groupNumber - 1]) { minimumGroupNumber = (startingGroup + 1); } } } } if (newTournamentGroups) { minimumGroupNumber = startingGroup; } } catch (Exception e) { e.printStackTrace(System.err); } } } else { nobodyIsRegistered(iwrb); } } /** * �arf a� laga.... */ /* * public int getHowManyInCurrentStartingGroup(Tournament tournament, * TournamentDay tourDay, int startingGroup) throws SQLException { * com.idega.util.idegaTimestamp stamp = new * com.idega.util.idegaTimestamp(tourDay.getDate()); Startingtime[] * startingtimes = (Startingtime[]) (new Startingtime()).findAll("SELECT * * FROM STARTINGTIME WHERE STARTINGTIME_DATE = '"+stamp.toSQLString()+"' AND * field_id="+tournament.getFieldId()+" AND grup_num="+startingGroup); * return startingtimes.length; } */ private void nobodyIsRegistered(IWResourceBundle iwrb) { GolfDialog dialog = new GolfDialog(iwrb.getLocalizedString("tournament.nobody_regstered", "No one is registered in the tournament")); add(dialog); } // m�tti setja � einhvern annan klasa... public List randomList(List list) { int randomNumber = 0; int numberOfMembers = list.size(); Vector vector = new Vector(); for (int i = 0; i < numberOfMembers; i++) { randomNumber = ((int) (Math.random() * list.size())); vector.add(list.get(randomNumber)); list.remove(randomNumber); } return vector; } // setja � TournamentBusines... (whatever hann heitir); public List getMembers(Tournament theTournament) { return getMembers(theTournament, "ekkert"); } // setja � TournamentBusines... (whatever hann heitir); /** * Order by FirstName, LastName, MiddleName => String ordered = "name"; * Order by Handicap => String ordered = "handicap"; */ public List getMembers(Tournament theTournament, String ordered) { List list = null; try { if (ordered.equalsIgnoreCase("ekkert")) { list = com.idega.data.EntityFinder.findReverseRelated(theTournament, (Member) IDOLookup.instanciateEntity(Member.class)); } else if (ordered.equalsIgnoreCase("name")) { list = com.idega.data.EntityFinder.findAll((Member) IDOLookup.instanciateEntity(Member.class), "Select * from member,tournament_member where tournament_member.tournament_id=" + theTournament.getID() + " and member.member_id = tournament_member.member_id order by member.first_name,member.last_name, member.middle_name"); } else if (ordered.equalsIgnoreCase("handicap")) { list = com.idega.data.EntityFinder.findAll((Member) IDOLookup.instanciateEntity(Member.class), "Select * from member,tournament_member, member_info where member_info.member_id = member.member_id AND tournament_member.tournament_id=" + theTournament.getID() + " and member.member_id = tournament_member.member_id order by member_info.handicap"); } } catch (Exception s) { s.printStackTrace(System.err); } return list; } public List orderMembers(List members, String ordered) { try { if (ordered.equalsIgnoreCase("alphabetical")) { java.util.Collections.sort(members, new is.idega.idegaweb.golf.member.GenericMemberComparator(is.idega.idegaweb.golf.member.GenericMemberComparator.FIRSTLASTMIDDLE)); } else if (ordered.equalsIgnoreCase("handicap_low_first")) { Member member; String SQLString = "select m.* from member m, member_info mi where m.member_id = mi.member_id "; String memberString = "AND ("; for (int i = 0; i < members.size(); i++) { member = (Member) members.get(i); memberString += " mi.member_id = " + member.getID(); if (i < (members.size() - 1)) { memberString += " OR"; } } memberString += " ) "; SQLString += memberString; SQLString += " order by mi.handicap"; members = EntityFinder.findAll((Member) IDOLookup.instanciateEntity(Member.class), SQLString); } else if (ordered.equalsIgnoreCase("handicap_high_first")) { Member member; String SQLString = "select m.* from member m, member_info mi where m.member_id = mi.member_id "; String memberString = "AND ("; for (int i = 0; i < members.size(); i++) { member = (Member) members.get(i); memberString += " mi.member_id = " + member.getID(); if (i < (members.size() - 1)) { memberString += " OR"; } } memberString += " ) "; SQLString += memberString; SQLString += " order by mi.handicap desc"; members = EntityFinder.findAll((Member) IDOLookup.instanciateEntity(Member.class), SQLString); } else if (ordered.equalsIgnoreCase("random")) { members = randomList(members); } } catch (Exception s) { s.printStackTrace(System.err); } return members; } public void arrangeByPreviousScore(IWContext modinfo, IWResourceBundle iwrb) throws Exception { String[] tournament_round_id = modinfo.getParameterValues("arrangement_tournament_round_id"); if (tournament_round_id == null) { add(iwrb.getLocalizedString("tournament.must_select_rounds", "You must select at least one round")); add("<p>"); add(getTournamentBusiness(modinfo).getBackLink(modinfo)); } else { String tournament_round = modinfo.getParameter("tournament_round"); String displayScoresOrder = modinfo.getParameter("displayScoresOrder"); int tournamentTypeOrder = Integer.parseInt(displayScoresOrder); TournamentRound tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tournament_round)); Tournament tournament = tRound.getTournament(); ResultComparator comparator = new ResultComparator(tournamentTypeOrder); String highLow = modinfo.getParameter("high_low"); Vector members = null; List memberList = null; String[] tGroups = modinfo.getParameterValues("tournament_group_id"); int[] intTRoundIds = new int[tournament_round_id.length]; try { for (int i = 0; i < tournament_round_id.length; i++) { intTRoundIds[i] = Integer.parseInt(tournament_round_id[i]); } } catch (NumberFormatException n) { System.err.println("TournamentStartingtimeSetup : arrangeByPreviousScore : int[] creation "); } if (tGroups != null) { ResultDataHandler handler = null; int[] tGroupIds; for (int i = 0; i < tGroups.length; i++) { handler = new ResultDataHandler(tournament.getID(), tournamentTypeOrder, Integer.parseInt(tGroups[i]), intTRoundIds, null); members = handler.getTournamentMembers(); java.util.Collections.sort(members, comparator); if (highLow.equals("high")) { if (members != null) { java.util.Collections.reverse(members); } } memberList = ResultsCollectorToMember(members); arrangeMembers(modinfo, memberList, iwrb); } } else { ResultDataHandler handler = new ResultDataHandler(tournament.getID(), tournamentTypeOrder, intTRoundIds, null); members = handler.getTournamentMembers(); java.util.Collections.sort(members, comparator); if (highLow.equals("high")) { if (members != null) { java.util.Collections.reverse(members); } } memberList = ResultsCollectorToMember(members); arrangeMembers(modinfo, memberList, iwrb); } finalizeStartingtimes(tRound); add(iwrb.getLocalizedString("tournament.ordering_finished", "Ordering complete")); } } public void arrangeByPreviousStartingtime(IWContext modinfo, IWResourceBundle iwrb) throws Exception { String tournament_round_id = modinfo.getParameter("startingtime_tournament_round_id"); if (tournament_round_id == null) { add(iwrb.getLocalizedString("tournament.must_select_rounds", "You must select at least one round")); add("<p>"); add(getTournamentBusiness(modinfo).getBackLink(modinfo)); } else { String tournament_round = modinfo.getParameter("tournament_round"); Startingtime[] sTimes = (Startingtime[]) ((Startingtime) IDOLookup.instanciateEntity(Startingtime.class)).findAll("select s.* from startingtime s,tournament_round_startingtime trs where trs.startingtime_id = s.startingtime_id AND trs.tournament_round_id = " + tournament_round_id + " order by s.grup_num"); Startingtime sTime; Member member; TournamentRound tourRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tournament_round)); Tournament tournament = tourRound.getTournament(); for (int i = 0; i < sTimes.length; i++) { member = sTimes[i].getMember(); getTournamentBusiness(modinfo).setupStartingtime(modinfo, member, tournament, tourRound.getID(), sTimes[i].getGroupNum(), sTimes[i].getTeeNumber()); } add(iwrb.getLocalizedString("tournament.ordering_finished", "Ordering complete")); } } private List ResultsCollectorToMember(Vector resultCollector) throws SQLException { Member member; Vector members = new Vector(); ResultsCollector resColl; if (resultCollector != null) { for (int i = 0; i < resultCollector.size(); i++) { resColl = (ResultsCollector) resultCollector.elementAt(i); try { member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(resColl.getMemberId()); } catch (FinderException fe) { throw new SQLException(fe.getMessage()); } members.add(member); } } return members; } private void save(IWContext modinfo) throws Exception { IWBundle bundle = getBundle(modinfo); IWResourceBundle iwrb = bundle.getResourceBundle(modinfo.getCurrentLocale()); GolfDialog dialog = new GolfDialog(iwrb.getLocalizedString("tournament.startingtimes_saved", "Startingtimes were saved")); add(dialog); } private Form getBlockForm(Tournament tournament, IWContext modinfo) throws SQLException { IWBundle bundle = getBundle(modinfo); IWResourceBundle iwrb = bundle.getResourceBundle(modinfo.getCurrentLocale()); Form form = new Form(); form.setWindowToOpen(BlockStartingtimeWindow.class); Table table = new Table(2, 1); DropdownMenu menu = new DropdownMenu("tournament_round_id"); TournamentRound[] rounds = tournament.getTournamentRounds(); for (int a = 0; a < rounds.length; a++) { menu.addMenuElement(rounds[a].getID(), "Hringur " + String.valueOf(a + 1)); } table.add(menu, 1, 1); table.add(new SubmitButton(iwrb.getLocalizedString("tournament.block", "Block")), 2, 1); form.add(table); return form; } }