package is.idega.idegaweb.golf.tournament.presentation;
import is.idega.idegaweb.golf.access.AccessControl;
import is.idega.idegaweb.golf.entity.Member;
import is.idega.idegaweb.golf.entity.MemberHome;
import is.idega.idegaweb.golf.entity.Tournament;
import is.idega.idegaweb.golf.entity.TournamentHome;
import is.idega.idegaweb.golf.entity.TournamentTour;
import is.idega.idegaweb.golf.entity.TournamentTourHome;
import is.idega.idegaweb.golf.entity.TournamentTournamentTour;
import is.idega.idegaweb.golf.entity.TournamentTournamentTourHome;
import is.idega.idegaweb.golf.entity.TournamentTournamentTourPK;
import is.idega.idegaweb.golf.templates.page.GolfWindow;
import is.idega.idegaweb.golf.tournament.business.TournamentBusiness;
import java.sql.SQLException;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import com.idega.business.IBOLookup;
import com.idega.business.IBOLookupException;
import com.idega.business.IBORuntimeException;
import com.idega.data.IDOLookup;
import com.idega.data.IDOLookupException;
import com.idega.data.IDORuntimeException;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.ui.BackButton;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
public class TournamentTourTournamentAdderWindow extends GolfWindow {
private static final String ACTION = "tttaw_a";
private static final String ACTION_SELECT_TOURNAMENT = "tttaw_ast";
private static final String ACTION_SAVE = "tttaw_s";
private static final String ACTION_CLOSE = "tttaw_ck";
private static final String PARAMETER_TOURNAMENT_ID = "par_tid";
private static final String PARAMETER_TOTAL_SCORE = "par_tsc";
public TournamentTourTournamentAdderWindow() {
super();
setHeight(400);
setWidth(500);
}
public void main(IWContext iwc) throws Exception {
super.main(iwc);
addHeading(localize("tournament.tour_tournaments", "Tour Tournaments"));
String id = iwc.getParameter(TournamentTourEditor.PARAMETER_TOUR_ID);
if (id == null) {
add(localize("tournament.no_tour_selected", "No tour selected"));
} else {
TournamentTour tour = getTournamentTourHome().findByPrimaryKey(new Integer(id));
String action = iwc.getParameter(ACTION);
if (action == null || action.equals("")) {
addTournamentSelection(iwc, tour);
} else if (action.equals(ACTION_SELECT_TOURNAMENT)) {
// VELJA STIG
if (iwc.isParameterSet(PARAMETER_TOURNAMENT_ID)) {
addTournamentSettings(iwc, tour);
} else {
addTournamentSelection(iwc, tour);
}
} else if (action.equals(ACTION_SAVE)) {
save(iwc, tour);
} else if (action.equals(ACTION_CLOSE)) {
String url = iwc.getIWMainApplication().getPublicObjectInstanciatorURI(TournamentTourEditorWindow.class)+"&"+TournamentTourEditor.ACTION+"="+TournamentTourEditor.ACTION_SELECT
+ "&"+TournamentTourEditor.PARAMETER_TOUR_ID+"="+tour.getPrimaryKey().toString();
this.setParentToReloadWithURL(url);
this.close();
}
}
}
private void save(IWContext iwc, TournamentTour tour) throws FinderException {
String totalPoint = iwc.getParameter(PARAMETER_TOTAL_SCORE);
Tournament tournament = getTournamentHome().findByPrimaryKey(new Integer(iwc.getParameter(PARAMETER_TOURNAMENT_ID)));
TournamentTournamentTourPK pk = new TournamentTournamentTourPK(tournament.getPrimaryKey(), tour.getPrimaryKey());
try {
TournamentTournamentTour ttTour = getTournamentTournamentTourHome().create(pk);
ttTour.setTotalScore(Integer.parseInt(totalPoint));
ttTour.store();
Form form = new Form();
form.maintainParameter(TournamentTourEditor.PARAMETER_TOUR_ID);
Table table = getTableWithHeader(tour);
form.add(table);
table.mergeCells(1, 3, 2, 3);
table.add(localize("travel.tournament_added", "Tournament added"), 1, 3);
SubmitButton close = new SubmitButton(localize("close", "Close"), ACTION, ACTION_CLOSE);
table.mergeCells(1, 4, 2, 4);
table.setAlignment(1, 4, Table.HORIZONTAL_ALIGN_RIGHT);
table.add(close, 1, 4);
add(form);
} catch (CreateException e) {
add(localize("tournament.tournament_already_added", "Tournament aleady added"));
addTournamentSelection(iwc, tour);
}
}
private void addTournamentSettings(IWContext iwc, TournamentTour tour) throws FinderException {
Form form = new Form();
form.maintainParameter(TournamentTourEditor.PARAMETER_TOUR_ID);
Table table = getTableWithHeader(tour);
form.add(table);
Tournament tournament = getTournamentHome().findByPrimaryKey(new Integer(iwc.getParameter(PARAMETER_TOURNAMENT_ID)));
table.add(localize("tournament.tournament", "Tournament"), 1,3);
table.add(tournament.getName(), 2, 3);
table.add(new HiddenInput(PARAMETER_TOURNAMENT_ID, tournament.getPrimaryKey().toString()), 2, 3);
TextInput inp = new TextInput(PARAMETER_TOTAL_SCORE);
inp.setContent(Integer.toString(tour.getScoreSystem().getDefaultPoints()));
table.add(localize("tournament.total_points", "Total points"), 1, 4);
table.add(inp, 2, 4);
BackButton back = new BackButton(localize("back", "Back"));
SubmitButton save = new SubmitButton(localize("save", "Save"), ACTION, ACTION_SAVE);
table.setAlignment(2, 5, Table.HORIZONTAL_ALIGN_RIGHT);
table.add(back, 1, 5);
table.add(save, 2, 5);
add(form);
}
private void addTournamentSelection(IWContext iwc, TournamentTour tour) {
Form form = new Form();
form.maintainParameter(TournamentTourEditor.PARAMETER_TOUR_ID);
Table table = getTableWithHeader(tour);
table.mergeCells(1, 3, 2, 3);
table.mergeCells(1, 4, 2, 4);
try {
DropdownMenu tournaments = null;
int iYear = com.idega.util.IWTimestamp.RightNow().getYear();
String sYear = iwc.getParameter("view_year");
if (sYear != null) {
iYear = Integer.parseInt(sYear);
}
if (isClubAdmin(iwc)) {
Member member = AccessControl.getMember(iwc);
int member_id = member.getID();
Member golfMember = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(member_id);
int main_union_id = golfMember.getMainUnionID();
tournaments = getTournamentBusiness(iwc).getDropdownOrderedByUnion(new DropdownMenu(PARAMETER_TOURNAMENT_ID),iwc, iYear);
}
else if (isAdmin(iwc)) {
tournaments = getTournamentBusiness(iwc).getDropdownOrderedByUnion(new DropdownMenu(PARAMETER_TOURNAMENT_ID),iwc, iYear);
}
tournaments.setMarkupAttribute("size","10");
DropdownMenu year = new DropdownMenu("view_year");
for (int i = 2001 ; i <= com.idega.util.IWTimestamp.RightNow().getYear(); i++) {
year.addMenuElement(Integer.toString(i), Integer.toString(i));
}
year.setSelectedElement(Integer.toString(iYear));
year.setToSubmit();
table.add(localize("tournament.select_a_tournament", "Select a tournament"), 1, 3);
table.add(tournaments, 1, 4);
table.add(year, 1, 5);
SubmitButton add = new SubmitButton(localize("tournament.add", "Add"), ACTION, ACTION_SELECT_TOURNAMENT);
table.setAlignment(2, 5, Table.HORIZONTAL_ALIGN_RIGHT);
table.add(add, 2, 5);
}
catch (Exception e) {
e.printStackTrace();
}
form.add(table);
add(form);
}
private Table getTableWithHeader(TournamentTour tour) {
Table table = new Table();
table.setAlignment(Table.HORIZONTAL_ALIGN_CENTER);
table.add(localize("tournament.name", "Name")+ " : ", 1, 1);
table.add(tour.getName(), 1, 1);
table.add(localize("tournament.scoring_system", "Scoring System")+ " : ", 1, 2);
table.add(tour.getScoreSystem().getName(), 1, 2);
table.mergeCells(1, 1, 2, 1);
table.mergeCells(1, 2, 2, 2);
return table;
}
private boolean isAdmin(IWContext modinfo) {
try {
return AccessControl.isAdmin(modinfo);
}
catch(SQLException E) {
return false;
}
}
private boolean isClubAdmin(IWContext modinfo) {
return AccessControl.isClubAdmin(modinfo);
}
private TournamentHome getTournamentHome() {
try {
return (TournamentHome) IDOLookup.getHome(Tournament.class);
} catch (IDOLookupException e) {
throw new IDORuntimeException(e);
}
}
private TournamentTourHome getTournamentTourHome() {
try {
return (TournamentTourHome) IDOLookup.getHome(TournamentTour.class);
} catch (IDOLookupException e) {
throw new IDORuntimeException(e);
}
}
private TournamentTournamentTourHome getTournamentTournamentTourHome() {
try {
return (TournamentTournamentTourHome) IDOLookup.getHome(TournamentTournamentTour.class);
} catch (IDOLookupException e) {
throw new IDORuntimeException(e);
}
}
public TournamentBusiness getTournamentBusiness(IWContext iwc) {
try {
return (TournamentBusiness) IBOLookup.getServiceInstance(iwc, TournamentBusiness.class);
}
catch (IBOLookupException e) {
throw new IBORuntimeException(e);
}
}
}