/*
* Created on 4.3.2004
*/
package is.idega.idegaweb.golf.tournament.presentation;
import is.idega.idegaweb.golf.access.AccessControl;
import is.idega.idegaweb.golf.entity.Field;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.Scorecard;
import is.idega.idegaweb.golf.entity.StartingtimeFieldConfig;
import is.idega.idegaweb.golf.entity.TeeColor;
import is.idega.idegaweb.golf.entity.Tournament;
import is.idega.idegaweb.golf.entity.TournamentForm;
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.entity.TournamentTournamentGroup;
import is.idega.idegaweb.golf.entity.TournamentType;
import is.idega.idegaweb.golf.entity.Union;
import is.idega.idegaweb.golf.moduleobject.GolfDialog;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.data.EntityFinder;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.ui.BackButton;
import com.idega.presentation.ui.BooleanInput;
import com.idega.presentation.ui.DateInput;
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.IntegerInput;
import com.idega.presentation.ui.Parameter;
import com.idega.presentation.ui.SelectionBox;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextArea;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.ui.TimeInput;
import com.idega.presentation.ui.TimestampInput;
import com.idega.util.IWTimestamp;
/**
* @author gimmi
*/
public class TournamentCreator extends TournamentBlock {
boolean bIsUpdate;
String sTournamentIdToUpdate;
SubmitButton aframButton = new SubmitButton(localize("tournamnt.next","Next"));
BackButton tilbakaButton = new BackButton();
SubmitButton startingTimeB1;
Parameter entityPar;
Parameter selectedTournament;
protected boolean tournamentMustBeSet() {
return false;
}
public void main(IWContext modinfo)throws Exception{
if (isAdmin() || isClubAdmin()) {
super.setAdminView(TournamentAdministratorWindow.ADMIN_VIEW_CREATE_TOURNAMENT);
try {
checkIfUpdate(modinfo);
//initializeButtons(modinfo);
getAction(modinfo,super.getResourceBundle());
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}else {
add(super.getResourceBundle().getLocalizedString("tournament.no_permission","No permission"));
}
}
public void getAction(IWContext modinfo,IWResourceBundle iwrb) throws Exception {
String mode = modinfo.getParameter("tournament_control_mode");
String action = modinfo.getParameter("tournament_admin_createtournament_action");
if (action == null) {
createTournament(modinfo,iwrb);
}
else if (action.equals("create")) {
createTournament(modinfo,iwrb);
}
else if(action.equals("create_two")) {
createTournament2(modinfo,iwrb);
}
else if (action.equals("tournament_admin_save_tournament")) {
try {
SaveTournament(modinfo,iwrb);
}
catch (Exception e) {
add("Villa � SaveTournament<br>");
add(e.getMessage());
}
}
}
public void checkIfUpdate(IWContext modinfo) {
String sIsUpdate = modinfo.getParameter("tournament_control_mode");
bIsUpdate = false;
boolean remove = false;
if (sIsUpdate != null) {
if (sIsUpdate.equals("edit")) {
bIsUpdate = true;
super.setAdminView(TournamentAdministratorWindow.ADMIN_VIEW_MODIFY_TOURNAMENT);
remove = false;
String tournament_id = modinfo.getParameter("tournament");
if (tournament_id != null) {
sTournamentIdToUpdate = tournament_id;
modinfo.setSessionAttribute("i_golf_tournament_update_id",tournament_id);
}
}
else if (sIsUpdate.equals("create")) {
remove = true;
}
}
else {
String temp_tournament_id = (String) modinfo.getSessionAttribute("i_golf_tournament_update_id");
if (temp_tournament_id != null) {
sTournamentIdToUpdate = temp_tournament_id;
bIsUpdate = true;
remove = false;
}
}
if (remove) {
modinfo.removeSessionAttribute("i_golf_tournament_update_id");
}
}
public void createTournament(IWContext modinfo,IWResourceBundle iwrb) throws SQLException, RemoteException {
String sSelectedTournamentType = "-1";
String sSelectedTournamentForm = "-1";
boolean bSelectedTournamentUseGroups = false;
boolean bSelectedTournamentIsOpen = false;
int row = 1;
boolean useForm = true;
Form dialog = new Form(modinfo.getRequestURI());
add(dialog);
if (bIsUpdate) {
//Tournament tour = ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(Integer.parseInt(sTournamentIdToUpdate));
dialog.maintainParameter("tournament");
}
else {
}
if (bIsUpdate) {
Tournament[] tournaments = (Tournament[]) ((Tournament) IDOLookup.instanciateEntity(Tournament.class)).findAllByColumnEquals("tournament_id",sTournamentIdToUpdate);
if (tournaments.length < 1) {
useForm = false;
}
}
if (useForm) {
Tournament tournament = null;
if (bIsUpdate) {
try {
tournament = ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(Integer.parseInt(sTournamentIdToUpdate));
}
catch (FinderException fe) {
throw new SQLException(fe.getMessage());
}
}
Table table = new Table();
dialog.add(table);
table.setBorder(0);
Union union = null;
// CREATE INPUT FIELDS
TextInput tournamentName = new TextInput("tournament_admin_tournment_name","");
tournamentName.setSize(40);
DropdownMenu unions = null;
DropdownMenu fields = null;
Field field;
List fieldList;
if (AccessControl.isClubAdmin(modinfo)) {
try {
union = ((Member) AccessControl.getMember(modinfo)).getMainUnion();
}
catch (FinderException fe) {
throw new SQLException(fe.getMessage());
}
unions = new DropdownMenu("union_");
unions.addMenuElement(union.getID(),union.getName());
fields = new DropdownMenu("tournament_admin_field_id");
fieldList = union.getOwningFields();
if (fieldList != null)
for (int j = 0; j < fieldList.size(); j++) {
field = (Field) fieldList.get(j);
fields.addMenuElement(field.getID(),union.getAbbrevation() + " " +field.getName() );
}
}
else {
Union[] theUnion = (Union[])((Union) IDOLookup.instanciateEntity(Union.class)).findAllOrdered("ABBREVATION");
unions = new DropdownMenu(theUnion);
fields = new DropdownMenu("tournament_admin_field_id");
for (int i = 0; i < theUnion.length; i++) {
fieldList = theUnion[i].getOwningFields();
if (fieldList != null)
for (int j = 0; j < fieldList.size(); j++) {
field = (Field) fieldList.get(j);
fields.addMenuElement(field.getID(),theUnion[i].getAbbrevation() + " " +field.getName() );
}
}
}
TimestampInput firstRegistartionDate = new TimestampInput("tournament_admin_first_registartion_date");
firstRegistartionDate.setYearRange(2001, IWTimestamp.RightNow().getYear() + 5);
TimestampInput lastRegistartionDate = new TimestampInput("tournament_admin_last_registartion_date");
lastRegistartionDate.setYearRange(2001, IWTimestamp.RightNow().getYear() + 5);
DateInput startTime = new DateInput("tournament_admin_start_time");
startTime.setYearRange(2001, IWTimestamp.RightNow().getYear() + 5);
DateInput endTime = new DateInput("tournament_admin_end_time");
endTime.setYearRange(2001, IWTimestamp.RightNow().getYear() + 5);
TournamentType type = (TournamentType) IDOLookup.instanciateEntity(TournamentType.class);
List typeList = type.getVisibleTournamentTypes();
DropdownMenu tournamentTypeDrop = new DropdownMenu(typeList);
TournamentForm form = (TournamentForm) IDOLookup.instanciateEntity(TournamentForm.class);
DropdownMenu tournamentFormDrop = new DropdownMenu(form.findAll());
BooleanInput openTournament = new BooleanInput("tournament_admin_open_tournament");
BooleanInput onlineRegistration = new BooleanInput("tournament_admin_online_registration");
BooleanInput directRegistration = new BooleanInput("tournament_admin_direct_registration");
IntegerInput numberOfDays = new IntegerInput("tournament_admin_number_of_days",1);
numberOfDays.setSize(3);
IntegerInput numberOfRounds = new IntegerInput("tournament_admin_number_of_rounds",1);
numberOfRounds.setSize(3);
IntegerInput numberOfHoles = new IntegerInput("tournament_admin_number_of_holes",18);
numberOfHoles.setSize(3);
List tGroup = getTournamentBusiness(modinfo).getUnionTournamentGroups(union);
SelectionBox tournamentGroups = new SelectionBox(tGroup);
tournamentGroups.setHeight(15);
DropdownMenu numberInGroup = new DropdownMenu("tournament_admin_number_in_group");
numberInGroup.addMenuElement("1","1");
numberInGroup.addMenuElement("2","2");
numberInGroup.addMenuElement("3","3");
numberInGroup.addMenuElement("4","4");
DropdownMenu numberInTournamentGroup = new DropdownMenu("tournament_admin_number_in_tournament_group");
numberInTournamentGroup.addMenuElement("1","1");
numberInTournamentGroup.addMenuElement("2","2");
numberInTournamentGroup.addMenuElement("3","3");
numberInTournamentGroup.addMenuElement("4","4");
numberInTournamentGroup.setDisabled(true);
numberInTournamentGroup.setSelectedElement("2");
Iterator tIter = typeList.iterator();
while (tIter.hasNext()) {
TournamentType tt = (TournamentType) tIter.next();
if (tt.getUseGroups()) {
tournamentTypeDrop.setToEnableWhenSelected(numberInTournamentGroup, tt.getPrimaryKey().toString());
}
}
DropdownMenu interval = new DropdownMenu("tournament_admin_interval");
interval.addMenuElement("8","8");
interval.addMenuElement("10","10");
interval.addMenuElement("12","12");
TextInput maxHandicap = new TextInput("tournament_admin_max_handicap","24");
maxHandicap.setSize(3);
TextInput maxFemaleHandicap = new TextInput("tournament_admin_max_female_handicap","36");
maxFemaleHandicap.setSize(3);
TextArea extraText = new TextArea("tournament_admin_extra_text","");
extraText.setWidth(66);
extraText.setHeight(10);
SubmitButton submitButton = new SubmitButton("�fram");
HiddenInput hiddenAction = new HiddenInput("tournament_admin_createtournament_action","create_two");
// Window myWindow = new Window("M�tsh�par",400,500,TournamentGroups.class);
GenericButton tournamentGroupButton = getButton(new GenericButton(iwrb.getLocalizedString("tournament.tournament_groups","Tournament Groups")));
tournamentGroupButton.setWindowToOpen(TournamentGroupsWindow.class);
// tournamentGroupButton.setWindowToOpen(TournamentGroups.class);
if (this.bIsUpdate) {
tournamentName.setContent(tournament.getName());
unions.setSelectedElement(tournament.getUnionId()+"");
fields.setSelectedElement(tournament.getFieldId()+"");
tournamentTypeDrop.setSelectedElement(tournament.getTournamentTypeId()+"");
openTournament.setSelected(tournament.getIfOpenTournament());
onlineRegistration.setSelected(tournament.getIfRegistrationOnline());
directRegistration.setSelected(tournament.isDirectRegistration());
tournamentFormDrop.setSelectedElement(tournament.getTournamentFormId()+"");
TournamentGroup[] tGroups = tournament.getTournamentGroups();
for (int i = 0 ; i < tGroups.length ; i ++ ) {
tournamentGroups.setSelectedElement(tGroups[i].getID()+"");
}
numberOfDays.setContent(tournament.getNumberOfDays()+"");
numberOfHoles.setContent(tournament.getNumberOfHoles()+"");
numberOfRounds.setContent(tournament.getNumberOfRounds()+"");
if (tournament.getNumberInTournamentGroup() > 0) {
numberInTournamentGroup.setSelectedElement(Integer.toString(tournament.getNumberInTournamentGroup()));
}
numberInTournamentGroup.setDisabled(!tournament.getTournamentType().getUseGroups());
maxHandicap.setContent(tournament.getMaxHandicap()+"");
maxFemaleHandicap.setContent(tournament.getFemaleMaxHandicap()+"");
if (tournament.getFirstRegistrationDate() != null) {
IWTimestamp firstRegDate = new IWTimestamp(tournament.getFirstRegistrationDate());
firstRegistartionDate.setYear(firstRegDate.getYear());
firstRegistartionDate.setMonth(firstRegDate.getMonth());
firstRegistartionDate.setDay(firstRegDate.getDay());
firstRegistartionDate.setHour(firstRegDate.getHour());
firstRegistartionDate.setMinute(firstRegDate.getMinute());
}
if (tournament.getLastRegistrationDate() != null) {
IWTimestamp lastRegDate = new IWTimestamp(tournament.getLastRegistrationDate());
lastRegistartionDate.setYear(lastRegDate.getYear());
lastRegistartionDate.setMonth(lastRegDate.getMonth());
lastRegistartionDate.setDay(lastRegDate.getDay());
lastRegistartionDate.setHour(lastRegDate.getHour());
lastRegistartionDate.setMinute(lastRegDate.getMinute());
}
if (tournament.getStartTime() != null) {
IWTimestamp iStartTime = new IWTimestamp(tournament.getStartTime());
startTime.setYear(iStartTime.getYear());
startTime.setMonth(iStartTime.getMonth());
startTime.setDay(iStartTime.getDay());
}
try {
StartingtimeFieldConfig[] fieldConf = (StartingtimeFieldConfig[])((StartingtimeFieldConfig) IDOLookup.instanciateEntity(StartingtimeFieldConfig.class)).findAllByColumnEquals("tournament_id",""+tournament.getID() );
if (fieldConf.length > 0) {
IWTimestamp endHour = new IWTimestamp(fieldConf[0].getCloseTime());
endTime.setYear(endHour.getYear());
endTime.setMonth(endHour.getMonth());
endTime.setDay(endHour.getDay());
}
else {
if (tournament.getStartTime() != null) {
IWTimestamp tempStamp = new IWTimestamp(tournament.getStartTime());
tempStamp.addDays(tournament.getNumberOfDays()-1);
endTime.setYear(tempStamp.getYear());
endTime.setMonth(tempStamp.getMonth());
endTime.setDay(tempStamp.getDay());
endTime.setDate(tempStamp.getSQLDate());
}
}
}
catch (Exception e){
e.printStackTrace(System.err);
}
extraText.setContent(tournament.getExtraText());
numberInGroup.setSelectedElement(tournament.getNumberInGroup()+"");
interval.setSelectedElement(tournament.getInterval()+"");
}
else {
firstRegistartionDate.setDate(IWTimestamp.RightNow().getSQLDate());
firstRegistartionDate.setHour(8);
firstRegistartionDate.setMinute(0);
lastRegistartionDate.setDate(IWTimestamp.RightNow().getSQLDate());
lastRegistartionDate.setHour(8);
lastRegistartionDate.setMinute(0);
startTime.setDate(IWTimestamp.RightNow().getSQLDate());
//startTime.setHour(8);
//startTime.setMinute(0);
endTime.setDate(IWTimestamp.RightNow().getSQLDate());
//endTime.setHour(20);
//endTime.setMinute(59);
directRegistration.setSelected(true);
numberInGroup.setSelectedElement("4");
interval.setSelectedElement("10");
}
// DONE CREATING INPUT FIELDS
table.add(iwrb.getLocalizedString("tournament.name","Name") ,1,row);
table.add(tournamentName,2,row);
table.mergeCells(2,row,4,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
table.setAlignment(5,row,"right");
if (bIsUpdate && AccessControl.isAdmin(modinfo)) {
if(AccessControl.isAdmin(modinfo) || AccessControl.isClubAdmin(modinfo)){
GenericButton deleteLink = getButton(new GenericButton());
deleteLink.setContent(localize("tournament.delete_tournament","Delete Tournament"));
deleteLink.setWindowToOpen(TournamentDeleteWindow.class);
deleteLink.addParameterToWindow("tournament_id",sTournamentIdToUpdate);
table.add(deleteLink,5,row);
}
}
++row;
table.add(iwrb.getLocalizedString("tournament.held_by","Held by"),1,row);
table.add(unions,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
table.mergeCells(2,row,5,row);
++row;
table.add(iwrb.getLocalizedString("tournament.field","Field"),1,row);
table.add(fields,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
table.mergeCells(2,row,5,row);
++row;
++row;
table.add(iwrb.getLocalizedString("tournament.arrangement","Arrangement"),1,row);
table.add(tournamentTypeDrop,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
table.add(iwrb.getLocalizedString("tournament.groups","Groups"),4,row);
table.setAlignment(1,row,"left");
table.setAlignment(4,row,"left");
table.setAlignment(5,row,"right");
table.add(tournamentGroupButton,5,row);
++row;
table.add(iwrb.getLocalizedString("tournament.type","Type"),1,row);
table.add(tournamentFormDrop,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
table.setAlignment(4,row,"left");
table.mergeCells(4,row,5,row+8);
table.setVerticalAlignment(4,row,"top");
table.add(tournamentGroups,4,row);
++row;
table.add(iwrb.getLocalizedString("tournament.open","Open"),1,row);
table.add(openTournament,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.allow_online_registration","Allow online registration"),1,row);
table.add(onlineRegistration,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.startingtime_registration","Register on tee time") ,1,row);
table.add(directRegistration,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.number_of_days","Number of days") ,1,row);
table.add(numberOfDays,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.number_of_rounds","Number of rounds") ,1,row);
table.add(numberOfRounds,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.number_of_holes_per_round","Holes per round"),1,row);
table.add(numberOfHoles,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.number_in_starting_group","Number in group"),1,row);
table.add(numberInGroup,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.number_in_tournament_group","Number in tournament group"),1,row);
table.add(numberInTournamentGroup,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.interval","Inteval"),1,row);
table.add(interval,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.male_maximum_handicap","Male maximum handicap"),1,row);
table.add(maxHandicap,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.female_maximum_handicap","Female maximum handicap"),1,row);
table.add(maxFemaleHandicap,2,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
++row;
table.add(iwrb.getLocalizedString("tournament.first_registration_date","First registration date"),1,row);
table.add(firstRegistartionDate,2,row);
table.mergeCells(2,row,5,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.last_registration_date","Last registration date"),1,row);
table.add(lastRegistartionDate,2,row);
table.mergeCells(2,row,5,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.tournament_begins","Tournament begins"),1,row);
table.add(startTime,2,row);
table.mergeCells(2,row,5,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
table.add(iwrb.getLocalizedString("tournament.tournament_ends","Tournament ends") ,1,row);
table.add(endTime,2,row);
table.mergeCells(2,row,5,row);
table.setAlignment(1,row,"left");
table.setAlignment(2,row,"left");
++row;
++row;
table.add(iwrb.getLocalizedString("tournament.other_information","Other information")+"<br>",1,row);
table.add(extraText,1,row);
table.setAlignment(1,row,"center");
table.mergeCells(1,row,5,row);
++row;
table.setAlignment(1,row,"left");
table.setAlignment(4,row,"right");
table.mergeCells(1,row,2,row);
table.mergeCells(4,row,5,row);
table.add(this.aframButton,4,row);
// table.add(submitButton,1,row);
table.add(hiddenAction,1,row);
table.add(getButton(getTournamentBusiness(modinfo).getBackLink(modinfo)),1,row);
}
else {
add("Ekkert m�t vali� e�a m�t ekki til");
}
}
public void createTournament2(IWContext modinfo, IWResourceBundle iwrb)throws SQLException, RemoteException{
String[] tournament_groups = modinfo.getParameterValues("tournament_group");
if (tournament_groups == null) {
add(iwrb.getLocalizedString("tournament.you_must_pick_groups","You must pick at least one tournament group")+ "<br><br>");
add(getButton(getTournamentBusiness(modinfo).getBackLink(modinfo)));
}
else {
try {
Form theForm = new Form();
//theForm.maintainParameter("tournament_group");
String name = modinfo.getParameter("tournament_admin_tournment_name");
String union_id = modinfo.getParameter("union_");
String field_id = modinfo.getParameter("tournament_admin_field_id");
String tournament_type_id = modinfo.getParameter("tournament_type");
String tournament_form_id = modinfo.getParameter("tournament_form");
String open_tournament = modinfo.getParameter("tournament_admin_open_tournament");
boolean isOpenTournament = true;
if (open_tournament.equalsIgnoreCase("N")) isOpenTournament = false;
String online_registration = modinfo.getParameter("tournament_admin_online_registration");
boolean isOnlineRegistration = false;
if (online_registration.equalsIgnoreCase("Y")) isOnlineRegistration = true;
String number_of_days = modinfo.getParameter("tournament_admin_number_of_days");
String number_of_rounds = modinfo.getParameter("tournament_admin_number_of_rounds");
int iNumberOfRounds = Integer.parseInt(number_of_rounds);
String number_of_holes = modinfo.getParameter("tournament_admin_number_of_holes");
String first_registration_date = modinfo.getParameter("tournament_admin_first_registartion_date");
IWTimestamp firstRegistrationDate = new IWTimestamp(first_registration_date);
String last_registration_date = modinfo.getParameter("tournament_admin_last_registartion_date");
IWTimestamp lastRegistrationDate = new IWTimestamp(last_registration_date);
String start_time = modinfo.getParameter("tournament_admin_start_time");
IWTimestamp startTime = new IWTimestamp(start_time);
String end_time = modinfo.getParameter("tournament_admin_end_time");
IWTimestamp endTime = new IWTimestamp(end_time);
String extra_text = modinfo.getParameter("tournament_admin_extra_text");
String direct_registration = modinfo.getParameter("tournament_admin_direct_registration");
boolean isDirectRegistration = true;
if (direct_registration.equalsIgnoreCase("N")) isDirectRegistration = false;
String number_in_group = modinfo.getParameter("tournament_admin_number_in_group");
String interval = modinfo.getParameter("tournament_admin_interval");
String maxHandicap = modinfo.getParameter("tournament_admin_max_handicap");
if (maxHandicap.equals("")) maxHandicap = "36";
String maxFemaleHandicap = modinfo.getParameter("tournament_admin_max_female_handicap");
if (maxFemaleHandicap.equals("")) maxFemaleHandicap = "36";
String sNumInTourGroup = modinfo.getParameter("tournament_admin_number_in_tournament_group");
int numInTourGroup = -1;
if (sNumInTourGroup != null && !sNumInTourGroup.equals("")) {
numInTourGroup = Integer.parseInt(sNumInTourGroup);
}
if ( maxHandicap.indexOf(",") != -1 ) {
maxHandicap = maxHandicap.replace(',','.');
}
if ( maxFemaleHandicap.indexOf(",") != -1 ) {
maxFemaleHandicap = maxFemaleHandicap.replace(',','.');
}
Tournament tournament = (Tournament) IDOLookup.createLegacy(Tournament.class);
if (bIsUpdate) {
tournament = ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(Integer.parseInt(sTournamentIdToUpdate));
}
tournament.setName(name);
tournament.setUnionId(Integer.parseInt(union_id));
tournament.setFieldId(new Integer(Integer.parseInt(field_id)));
tournament.setTournamentTypeID(Integer.parseInt(tournament_type_id));
tournament.setTournamentFormID(Integer.parseInt(tournament_form_id));
tournament.setOpenTournament(isOpenTournament);
tournament.setRegistrationOnline(isOnlineRegistration);
tournament.setIsDirectRegistration(isDirectRegistration);
tournament.setNumberOfDays(Integer.parseInt(number_of_days));
tournament.setNumberOfRounds(iNumberOfRounds);
tournament.setNumberOfHoles(Integer.parseInt(number_of_holes));
tournament.setNumberInGroup(Integer.parseInt(number_in_group));
tournament.setInterval(Integer.parseInt(interval));
if ( (tournament.getMaxHandicap() != Float.parseFloat(maxHandicap)) || (tournament.getFemaleMaxHandicap() != Float.parseFloat(maxFemaleHandicap)) ) {
theForm.add(new HiddenInput("update_handicap","true"));
}
tournament.setMaxHandicap(Float.parseFloat(maxHandicap));
tournament.setMaxFemaleHandicap(Float.parseFloat(maxFemaleHandicap));
tournament.setLastRegistrationDate(lastRegistrationDate.getTimestamp());
tournament.setFirstRegistrationDate(firstRegistrationDate.getTimestamp());
tournament.setStartTime(startTime.getTimestamp());
tournament.setExtraText(extra_text);
tournament.setGroupTournament(true);
tournament.setCreationDate(IWTimestamp.getTimestampRightNow());
tournament.setIsClosed(false);
tournament.setNumberInTournamentGroup(numInTourGroup);
modinfo.setSessionAttribute("tournament_admin_create_tournament",tournament);
/*
for (int i = 1; i <= tournament.getNumberOfRounds();i++){
TournamentRound round = new TournamentRound();
round.setRoundNumber(i);
round.setTournament(tournament);
round.setRoundDate(com.idega.util.idegaCalendar.getTimestampAfter(tournament.getStartTime(),i+1));
round.setIncreaseHandicap(true);
round.setDecreaseHandicap(true);
round.setRoundEndDate(com.idega.util.idegaCalendar.getTimestampAfter(tournament.getStartTime(),i+1));
round.insert();
}
*/
TournamentGroup tGroup;
Table groupTable = new Table();
groupTable.setWidth("85%");
groupTable.add(iwrb.getLocalizedString("tournament.group","Group") ,1,1);
groupTable.add(iwrb.getLocalizedString("tournament.fee","Fee"),2,1);
groupTable.add(iwrb.getLocalizedString("tournament.tee","Tee color"),3,1);
String sql = "select * from tee_color where tee_color_id in (select tee_color_id from tee where field_id = "+tournament.getFieldId()+") order by tee_color_name";
TeeColor[] tee_colors = (TeeColor[]) ((TeeColor) IDOLookup.instanciateEntity(TeeColor.class)).findAll(sql);
//TeeColor[] tee_colors = (TeeColor[]) ((TeeColor) IDOLookup.instanciateEntity(TeeColor.class)).findAllOrdered("TEE_COLOR_NAME");
int tableRow = 1;
TextInput feeText;
DropdownMenu teeColorDrop;
TournamentTournamentGroup[] tourTourGroup;
if (tournament_groups != null) {
for (int i = 0; i < tournament_groups.length; i++) {
tGroup = ((TournamentGroupHome) IDOLookup.getHomeLegacy(TournamentGroup.class)).findByPrimaryKey(Integer.parseInt(tournament_groups[i]));
++tableRow;
feeText = new TextInput("tournament_admin_fee_for_group"+tGroup.getID(),"0");
feeText.setSize(6);
teeColorDrop = new DropdownMenu("tournament_admin_tee_color_for_group"+tGroup.getID());
for (int j = 0 ; j < tee_colors.length ; j++) {
teeColorDrop.addMenuElement(tee_colors[j].getID(),tee_colors[j].getName());
}
teeColorDrop.setSelectedElement(tGroup.getTeeColor().getID()+"");
if (bIsUpdate) {
tourTourGroup = (TournamentTournamentGroup[]) ((TournamentTournamentGroup) IDOLookup.instanciateEntity(TournamentTournamentGroup.class)).findAll("Select * from tournament_tournament_group WHERE tournament_id ="+tournament.getID()+" AND tournament_group_id = "+tGroup.getID()+"");
if (tourTourGroup.length > 0) {
if (tourTourGroup[0].getRegistrationFee() != -1)
feeText.setContent(tourTourGroup[0].getRegistrationFee()+"");
try {
teeColorDrop.setSelectedElement(tourTourGroup[0].getTeeColorId()+"");
}
catch (Exception e) {}
}
}
groupTable.add(tGroup.getName(),1,tableRow);
groupTable.add(feeText,2,tableRow);
groupTable.add(new HiddenInput("tournament_group",tGroup.getID()+""),1,tableRow);
groupTable.add(teeColorDrop,3,tableRow);
}
}
// ++tableRow;
// ++tableRow;
tableRow = 1;
Table roundTable = new Table();
roundTable.setWidth("85%");
roundTable.add(iwrb.getLocalizedString("tournament.round","Round"),1,tableRow);
roundTable.add(iwrb.getLocalizedString("tournament.time","Time") ,2,tableRow);
roundTable.mergeCells(2,tableRow,3,tableRow);
roundTable.add(iwrb.getLocalizedString("tournament.plays_on_1_and_10_tee","Tee off on 1 and 10 tee"),4,tableRow);
++tableRow;
TimeInput tInput;
TimeInput toInput;
TournamentRound tRound;
TournamentRound[] tRounds = tournament.getTournamentRounds();
int tRoundsCounter = 0;
IWTimestamp temp = new IWTimestamp(endTime);
for ( int i = 0 ; i < tournament.getNumberOfRounds() ; i++) {
startTime = new IWTimestamp(start_time);
DropdownMenu availableDays = new DropdownMenu("round_date");
endTime.addDays(1);
while (endTime.isLaterThan(startTime) ) {
availableDays.addMenuElement(startTime.toSQLDateString(), startTime.getISLDate(".",true) );
startTime.addDays(1);
}
endTime = new IWTimestamp(temp);
DropdownMenu oneAndTen = new DropdownMenu("oneAndTen_"+i);
oneAndTen.addMenuElement("1","Nei");
oneAndTen.addMenuElement("2","J�");
oneAndTen.setSelectedElement("1");
if (bIsUpdate) {
try{
tRound = tRounds[i];
tInput = new TimeInput("tournament_admin_round_from_time_"+tRound.getID() );
toInput = new TimeInput("tournament_admin_round_to_time_"+tRound.getID() );
availableDays.setSelectedElement(new IWTimestamp(tRounds[tRoundsCounter].getRoundDate()).toSQLDateString() );
tInput.setTime(new java.sql.Time(tRounds[tRoundsCounter].getRoundDate().getTime()));
toInput.setTime(new java.sql.Time(tRounds[tRoundsCounter].getRoundEndDate().getTime()));
roundTable.add(new HiddenInput("tournament_round_id",""+tRound.getID()),1,tableRow);
oneAndTen.setName("oneAndTen_"+tRound.getID());
if (tRound.getStartingtees() == 2) {
oneAndTen.setSelectedElement("2");
}
++tRoundsCounter;
}
catch (Exception e) {
tInput = new TimeInput("tournament_admin_round_from_time_"+i);
toInput = new TimeInput("tournament_admin_round_to_time_"+i);
startTime.addDays(i);
tInput.setTime(new java.sql.Time(startTime.getSQLDate().getTime()));
toInput.setTime(new java.sql.Time(startTime.getSQLDate().getTime()));
startTime.addDays(-i);
}
}
else {
tInput = new TimeInput("tournament_admin_round_from_time_"+i);
toInput = new TimeInput("tournament_admin_round_to_time_"+i);
startTime.addDays(i);
tInput.setTime(new java.sql.Time(startTime.getSQLDate().getTime()));
toInput.setTime(new java.sql.Time(startTime.getSQLDate().getTime()));
startTime.addDays(-i);
}
roundTable.add(iwrb.getLocalizedString("tournament.round","Round")+" "+(i+1),1,tableRow);
roundTable.add(availableDays,2,tableRow);
roundTable.add(" fr� ",2,tableRow);
roundTable.add(tInput,2,tableRow);
roundTable.add(" til ",2,tableRow);
roundTable.add(toInput,2,tableRow);
roundTable.mergeCells(2,tableRow,3,tableRow);
roundTable.add(oneAndTen,4,tableRow);
++tableRow;
}
Table buttonTable = new Table();
buttonTable.setWidth("85%");
GenericButton submitButton = getButton(new SubmitButton(localize("tournament.save","Save")));
HiddenInput hiddenInput = new HiddenInput("tournament_admin_createtournament_action","tournament_admin_save_tournament");
buttonTable.add(getButton(getTournamentBusiness(modinfo).getBackLink(modinfo)),1,1);
buttonTable.add(submitButton,3,1);
buttonTable.add(hiddenInput,3,1);
buttonTable.setAlignment(3,1,"right");
theForm.add(groupTable);
theForm.addBreak();
theForm.add(roundTable);
theForm.addBreak();
theForm.add(buttonTable);
add(theForm);
//dialog.add(dayTable);
}
catch (Exception e) {
add(iwrb.getLocalizedString("tournament.error","Error")+"<br>");
add(e.getMessage());
e.printStackTrace(System.out);
}
}
}
public void SaveTournament(IWContext modinfo, IWResourceBundle iwrb) throws Exception{
Tournament tournament = (Tournament) modinfo.getSession().getAttribute("tournament_admin_create_tournament");
TournamentRound[] tourRounds = tournament.getTournamentRounds();
int manyRounds = tourRounds.length;
if (tournament == null) {
add(iwrb.getLocalizedString("tournament.no_tournament_selected","No tournament selected"));
}
if (bIsUpdate) {
tournament.update();
TournamentGroup[] tempTournamentGroup = tournament.getTournamentGroups();
for (int i = 0; i < tempTournamentGroup.length; i++) {
tempTournamentGroup[i].removeFrom(tournament);
}
TeeColor[] tempTeeColor = tournament.getTeeColors();
for (int i = 0; i < tempTeeColor.length; i++) {
tempTeeColor[i].removeFrom(tournament);
}
StartingtimeFieldConfig[] sFieldConfig = (StartingtimeFieldConfig[]) ((StartingtimeFieldConfig) IDOLookup.instanciateEntity(StartingtimeFieldConfig.class)).findAllByColumnEquals("tournament_id",tournament.getID()+"") ;
for (int i = 0; i < sFieldConfig.length; i++) {
sFieldConfig[i].delete();
}
if (manyRounds == tournament.getNumberOfRounds() ) {
}else if (manyRounds < tournament.getNumberOfRounds() ) {
// B�TA VI� TOURNAMENT_ROUNDs
String[] round_date = modinfo.getParameterValues("round_date");
String theFromTime;
String theToTime;
String fromString;
String toString;
IWTimestamp stampFrom;
IWTimestamp stampTo;
Member[] members = getTournamentBusiness(modinfo).getMembersInTournament(tournament);
Member member;
for (int i = (manyRounds +1) ; i <= tournament.getNumberOfRounds() ; i++){
theFromTime = modinfo.getParameter("tournament_admin_round_from_time_"+(i-1));
theToTime = modinfo.getParameter("tournament_admin_round_to_time_"+(i-1));
IWTimestamp tempStamp = new IWTimestamp(tournament.getStartTime());
fromString = round_date[i-1] + " "+ theFromTime;
toString = round_date[i-1] + " "+ theToTime;
stampFrom = new IWTimestamp(fromString);
stampTo = new IWTimestamp(toString);
TournamentRound round = (TournamentRound) IDOLookup.createLegacy(TournamentRound.class);
round.setRoundNumber(i);
round.setTournament(tournament);
if (tournament.isDirectRegistration()) {
round.setVisibleStartingtimes(true);
}
round.setRoundDate(stampFrom.getTimestamp());
round.setIncreaseHandicap(true);
round.setDecreaseHandicap(true);
round.setRoundEndDate(stampTo.getTimestamp());
round.insert();
}
}else if (manyRounds > tournament.getNumberOfRounds() ) {
// HENDA �T TOURNAMENT_ROUNDs
for (int i = (tournament.getNumberOfRounds()+1) ; i<= (manyRounds) ;i++) {
List tournamentRounds = EntityFinder.findAllByColumnEquals((TournamentRound) IDOLookup.instanciateEntity(TournamentRound.class),"tournament_id",""+tournament.getID(),"ROUND_NUMBER",""+i);
if (tournamentRounds != null) {
if (tournamentRounds.size() == 1) {
try {
TournamentRound tourRnd = (TournamentRound) tournamentRounds.get(0);
tourRnd.delete();
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
}
}
TournamentRound[] tournRounds = tournament.getTournamentRounds();
for (int u = 0; u < tournRounds.length; u++) {
getTournamentBusiness(modinfo).invalidateStartingTimeCache(modinfo, tournRounds[u].getTournamentID(), Integer.toString(tournRounds[u].getID()));
}
}
else {
try {
tournament.insert();
}
catch (Exception e) {
System.err.println("createTournament � insert()");
e.printStackTrace(System.err);
}
}
try {
String[] tournament_group_ids = modinfo.getParameterValues("tournament_group");
TournamentTournamentGroup tTGroup;
TournamentGroup tGroup = null;
String regFee = "";
String teeColorId = "";
if (tournament_group_ids != null) {
for (int i = 0; i < tournament_group_ids.length; i++) {
teeColorId = modinfo.getParameter("tournament_admin_tee_color_for_group"+tournament_group_ids[i]);
regFee = modinfo.getParameter("tournament_admin_fee_for_group"+tournament_group_ids[i]);
tTGroup = (TournamentTournamentGroup) IDOLookup.createLegacy(TournamentTournamentGroup.class);
tTGroup.setTournamentId(tournament.getID());
tTGroup.setTournamentGroupId(Integer.parseInt(tournament_group_ids[i]));
tTGroup.setRegistrationFee(Integer.parseInt(regFee));
tTGroup.setTeeColorId(Integer.parseInt(teeColorId));
tTGroup.insert();
}
}
}
catch (Exception e) {
add("villa � gr�ppum");
e.printStackTrace(System.err);
}
try {
String tournament_round_ids[] = modinfo.getParameterValues("tournament_round_id");
Scorecard[] scorecards;
if (tournament_round_ids != null) {
String[] round_date = modinfo.getParameterValues("round_date");
TournamentRound tRound;
String from_time;
String to_time;
String numberOfStartingtees;
IWTimestamp stampFrom;
IWTimestamp stampTo;
boolean updateScorecards = false;
String fromString = "";
String toString = "";
for (int i = 0; i < tournament_round_ids.length; i++) {
updateScorecards = false;
from_time = modinfo.getParameter("tournament_admin_round_from_time_"+tournament_round_ids[i]);
to_time = modinfo.getParameter("tournament_admin_round_to_time_"+tournament_round_ids[i]);
numberOfStartingtees = modinfo.getParameter("oneAndTen_"+tournament_round_ids[i]);
fromString = round_date[i] + " "+ from_time;
toString = round_date[i] + " "+ to_time;
tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(Integer.parseInt(tournament_round_ids[i]));
stampFrom = new IWTimestamp(fromString);
stampTo = new IWTimestamp(toString);
if (tournament.isDirectRegistration()) {
tRound.setVisibleStartingtimes(true);
}
if ( (tRound.getRoundDate().getDay() != stampFrom.getTimestamp().getDay()) || (tRound.getRoundDate().getMonth() != stampFrom.getTimestamp().getMonth()) || (tRound.getRoundDate().getYear() != stampFrom.getTimestamp().getYear()) ) {
updateScorecards = true;
}
tRound.setRoundDate(stampFrom.getTimestamp());
tRound.setRoundEndDate(stampTo.getTimestamp());
tRound.setStartingtees(Integer.parseInt(numberOfStartingtees));
tRound.update();
if (updateScorecards) {
scorecards = (Scorecard[]) ((Scorecard) IDOLookup.instanciateEntity(Scorecard.class)).findAllByColumnEquals("tournament_round_id",tRound.getID());
for (int g = 0; g < scorecards.length; g++) {
scorecards[g].setScorecardDate(tRound.getRoundDate());
scorecards[g].update();
is.idega.idegaweb.golf.UpdateHandicap.update(scorecards[g].getMemberId(),new IWTimestamp(tournament.getStartTime()));
//System.out.println("Uppfaerdi skorkort fyrir "+scorecards[g].getMember().getName());
}
}
}
}
else {
String[] round_date = modinfo.getParameterValues("round_date");
TournamentRound tRound;
String from_time;
String to_time;
String numberOfStartingtees;
IWTimestamp stampFrom;
IWTimestamp stampTo;
boolean updateScorecards = false;
String fromString = "";
String toString = "";
TournamentRound[] tRounds = tournament.getTournamentRounds();
for (int i = 0; i < tRounds.length ; i++) {
updateScorecards = false;
from_time = modinfo.getParameter("tournament_admin_round_from_time_"+i);
to_time = modinfo.getParameter("tournament_admin_round_to_time_"+i);
numberOfStartingtees = modinfo.getParameter("oneAndTen_"+i);
fromString = round_date[i] + " "+ from_time;
toString = round_date[i] + " "+ to_time;
tRound = ((TournamentRoundHome) IDOLookup.getHomeLegacy(TournamentRound.class)).findByPrimaryKey(tRounds[i].getID());
stampFrom = new IWTimestamp(fromString);
stampTo = new IWTimestamp(toString);
if (tournament.isDirectRegistration()) {
tRound.setVisibleStartingtimes(true);
}
if ( (tRound.getRoundDate().getDay() != stampFrom.getTimestamp().getDay()) || (tRound.getRoundDate().getMonth() != stampFrom.getTimestamp().getMonth()) || (tRound.getRoundDate().getYear() != stampFrom.getTimestamp().getYear()) ) {
updateScorecards = true;
}
tRound.setRoundDate(stampFrom.getTimestamp());
tRound.setRoundEndDate(stampTo.getTimestamp());
tRound.setStartingtees(Integer.parseInt(numberOfStartingtees));
tRound.update();
if (updateScorecards) {
scorecards = (Scorecard[]) ((Scorecard) IDOLookup.instanciateEntity(Scorecard.class)).findAllByColumnEquals("tournament_round_id",tRound.getID());
for (int g = 0; g < scorecards.length; g++) {
scorecards[g].setScorecardDate(tRound.getRoundDate());
scorecards[g].update();
is.idega.idegaweb.golf.UpdateHandicap.update(scorecards[g].getMemberId(),new IWTimestamp(tournament.getStartTime()));
//System.out.println("Uppfaerdi skorkort fyrir "+scorecards[g].getMember().getName());
}
}
}
}
}
catch (Exception ex) {
ex.printStackTrace(System.err);
}
String isUpdateHandicap = modinfo.getParameter("update_handicap");
if (isUpdateHandicap != null) {
if (isUpdateHandicap.equalsIgnoreCase("true")) {
try { // updateHandicapForRegisteredMembers
Member[] members = getTournamentBusiness(modinfo).getMembersInTournament(tournament);
if (members != null) {
if (members.length > 0) {
for (int i = 0; i < members.length; i++) {
is.idega.idegaweb.golf.UpdateHandicap.update(members[i], new IWTimestamp(tournament.getStartTime()));
}
}
}
}catch (Exception e) {
System.err.println(this.getClassName()+" : saveTournament : updateHandicapForRegisteredMembers");
e.printStackTrace(System.err);
}
}
}
getTournamentBusiness(modinfo).removeTournamentTableApplicationAttribute(modinfo);
add(iwrb.getLocalizedString("tournament.tournament_saved","Tournament saved"));
}
public void selectTournament(String controlParameter,IWResourceBundle iwrb)throws SQLException{
GolfDialog dialog = new GolfDialog(iwrb.getLocalizedString("tournament.choose_tournament","Choose a tournament"));
add(dialog);
dialog.add(new DropdownMenu(((Tournament) IDOLookup.instanciateEntity(Tournament.class)).findAll()));
if (controlParameter.equals("startingtime")){
dialog.add(startingTimeB1);
}
}
public boolean isInEditMode(IWContext modinfo){
return bIsUpdate;
}
public Tournament getTournament(IWContext modinfo)throws Exception{
String tournament_par = modinfo.getParameter("tournament");
Tournament tournament=null;
if(tournament_par==null){
tournament = (Tournament)modinfo.getSessionAttribute("tournament_admin_tournament");
}
else{
tournament = ((TournamentHome) IDOLookup.getHomeLegacy(Tournament.class)).findByPrimaryKey(Integer.parseInt(tournament_par));
modinfo.setSessionAttribute("tournament_admin_tournament",tournament);
}
return tournament;
}
}