/*
* Created on 4.3.2004
*/
package is.idega.idegaweb.golf.startingtime.presentation;
import is.idega.idegaweb.golf.GolfField;
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.StartingtimeFieldConfig;
import is.idega.idegaweb.golf.entity.Tournament;
import is.idega.idegaweb.golf.entity.Union;
import is.idega.idegaweb.golf.presentation.GolfBlock;
import is.idega.idegaweb.golf.service.StartService;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import javax.ejb.FinderException;
import com.idega.data.EntityFinder;
import com.idega.data.IDOLookup;
import com.idega.presentation.IWContext;
import com.idega.presentation.Image;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.BackButton;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.util.IWTimestamp;
/**
* @author laddi
*/
public class StartingTimeLogin extends GolfBlock {
private StartService service = new StartService();
public void main(IWContext modinfo) throws Exception {
getParentPage().setTitle("Skr� spilara");
getParentPage().setBackgroundColor("white");
String date = modinfo.getSession().getAttribute("date").toString();
String field_id = modinfo.getSession().getAttribute("field_id").toString();
IWTimestamp timestamp = new IWTimestamp(date);
try {
//TournamentDay tempTD = new TournamentDay();
List Tournaments = EntityFinder.findAll((Tournament) IDOLookup.instanciateEntity(Tournament.class), "select tournament.* from tournament,tournament_day where tournament_day.tournament_id=tournament.tournament_id and tournament_day.day_date = '" + timestamp.toSQLDateString() + "' and tournament.field_id = " + field_id);
if (Tournaments != null) {
String closeParameterString = "closewidow";
if ("true".equals(modinfo.getParameter(closeParameterString))) {
// myWindow.setParentToReload();
getParentPage().close();
}
else {
Form myForm = new Form();
add(myForm);
setGraphic(myForm);
Text dayReserved = getMessageText("Dagur fr�tekinn fyrir m�t");
dayReserved.setFontSize(4);
Table AlignmentTable = new Table();
AlignmentTable.setBorder(0);
AlignmentTable.add(Text.getBreak());
AlignmentTable.add(dayReserved);
for (int i = 0; i < Tournaments.size(); i++) {
AlignmentTable.add("<p>" + ((Tournament) Tournaments.get(i)).getName());
}
AlignmentTable.setAlignment("center");
AlignmentTable.add(Text.getBreak());
AlignmentTable.add(Text.getBreak());
Link close = getLink("Loka glugga");
close.addParameter(closeParameterString, "true");
AlignmentTable.add(close);
myForm.add(AlignmentTable);
}
}
else {
Form myForm = new Form();
myForm.maintainParameter("name");
myForm.maintainParameter("line");
int skraMargaInt = 0;
String skraMarga = modinfo.getRequest().getParameter("skraMarga");
add(myForm);
int line = Integer.parseInt(modinfo.getRequest().getParameter("line"));
//out.println("lina "+line+" ");
//out.println("field "+field_id+" ");
//out.println("date "+date+" ");
try {
setGraphic(myForm);
int check = checkLine(line, field_id, date, modinfo);
if (checkLine(line, field_id, date, modinfo) > 3) {
setErroResponse(myForm, false);
}
else if (checkLine(line, field_id, date, modinfo) == -1) {
System.out.print("Ekki n�st samband vi� gagnagrunn");
}
else {
if (modinfo.getParameter("name") != null) {
if (!setPlayers(modinfo)) {
setErroResponse(myForm, true);
}
else {
getParentPage().setParentToReload();
getParentPage().close();
}
}
else {
skraMargaInt = Integer.parseInt(skraMarga);
drawTable(skraMargaInt, myForm, modinfo);
}
}
}
catch (SQLException E) {
System.out.print("SQLException: " + E.getMessage());
System.out.print("SQLState: " + E.getSQLState());
System.out.print("VendorError: " + E.getErrorCode());
}
catch (Exception E) {
E.printStackTrace();
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public TextInput insertEditBox(String name, Form myForm) {
TextInput myInput = new TextInput(name);
myInput.setParentObject(myForm);
myInput.setAsNotEmpty();
return myInput;
}
public TextInput insertEditBox(String name, String text) {
TextInput myInput = new TextInput(name);
myInput.setAsNotEmpty();
myInput.setContent(text);
return myInput;
}
public TextInput insertEditBox(String name, String text, int size) {
TextInput myInput = new TextInput(name);
myInput.setSize(size);
myInput.setAsNotEmpty();
myInput.setContent(text);
return myInput;
}
public DropdownMenu insertUnionDropdown(String name, String text, int size) throws SQLException {
DropdownMenu mydropdown = new DropdownMenu(name);
Union union = (Union) IDOLookup.instanciateEntity(Union.class);
List unions = EntityFinder.findAll(union, "Select * from " + union.getEntityName() + " order by abbrevation");
for (int i = 0; i < unions.size(); i++) {
union = (Union) unions.get(i);
mydropdown.addMenuElement(union.getAbbrevation(), union.getAbbrevation());
}
mydropdown.setSelectedElement(text);
mydropdown.keepStatusOnAction();
return mydropdown;
}
public DropdownMenu insertUnionDropdown(String name, int size) throws SQLException {
DropdownMenu mydropdown = new DropdownMenu(name);
Union union = (Union) IDOLookup.instanciateEntity(Union.class);
List unions = EntityFinder.findAll(union, "Select * from " + union.getEntityName() + " order by abbrevation");
for (int i = 0; i < unions.size(); i++) {
union = (Union) unions.get(i);
mydropdown.addMenuElement(union.getAbbrevation(), union.getAbbrevation());
}
mydropdown.setSelectedElement("");
mydropdown.keepStatusOnAction();
return mydropdown;
}
public TextInput insertEditBox(String name, int size) {
TextInput myInput = new TextInput(name);
myInput.setSize(size);
return myInput;
}
private SubmitButton insertButton(String btnName, String Action, String Method, Form theForm) {
SubmitButton mySubmit = new SubmitButton(btnName);
theForm.setMethod(Method);
theForm.setAction(Action);
return mySubmit;
}
private SubmitButton insertButton(Image image, String imageName, String Action, String Method, Form theForm) {
SubmitButton mySubmit = new SubmitButton(image, imageName);
theForm.setMethod(Method);
theForm.setAction(Action);
return mySubmit;
}
private SubmitButton insertButton(Image image, String imageName, Class Action, String Method, Form theForm) {
SubmitButton mySubmit = new SubmitButton(image, imageName);
theForm.setMethod(Method);
theForm.setClassToInstanciateAndSendTo(Action);
return mySubmit;
}
private SubmitButton insertButton(String btnName, String Action, String Method, String onSub, Form theForm) {
SubmitButton mySubmit = new SubmitButton(btnName);
mySubmit.setOnSubmit(onSub);
theForm.setMethod(Method);
theForm.setAction(Action);
return mySubmit;
}
public void drawTable(int skraMarga, Form myForm, IWContext modinfo) throws IOException {
PrintWriter out = modinfo.getResponse().getWriter();
//String picUrl_5 = "/pics/rastimask/Rastimaskraning/BorderTiler.gif";
String btnSkraUrl = "/pics/rastimask/Takkar/Tskra1.gif";
String btnCancelUrl = "/pics/rastimask/Takkar/Thaetta-vid1.gif";
String txtNameUrl = "/pics/rastimask/Heiti-Graphic/Gnafn.gif";
String txtTimeUrl = "/pics/rastimask/Heiti-Graphic/Gtimi.gif";
String txtHandicapUrl = "/pics/rastimask/Heiti-Graphic/Gforgjof.gif";
String txtClubUrl = "/pics/rastimask/Heiti-Graphic/Gklubbur.gif";
String txtCardUrl = "/pics/rastimask/Heiti-Graphic/Gserkort.gif";
String txtCardNoUrl = "/pics/rastimask/Heiti-Graphic/Gkortnumer.gif";
int memberId = -1;
boolean memberAvailable = false;
//f� member id fyrir member til a� finna hann og setja inn � textinputi�
// fyrir hann
if (modinfo.getSession().getAttribute("member_id") != null) {
memberId = Integer.parseInt((String) modinfo.getSession().getAttribute("member_id"));
memberAvailable = true;
}
//out.print(memberId);
String lines[] = new String[skraMarga];
int Lines[] = new int[skraMarga];
try {
Member member = null;
if (memberId != -1)
member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(memberId);
String FieldID = modinfo.getSession().getAttribute("field_id").toString();
String Date = modinfo.getSession().getAttribute("date").toString();
String MemberId = modinfo.getSession().getAttribute("member_id").toString();
GolfField myGolfField = getFieldInfo(Integer.parseInt(FieldID), Date);
int Line = Integer.parseInt(modinfo.getRequest().getParameter("line"));
int max = checkLine(Line, FieldID, Date, modinfo);
//out.print(max);
for (int j = 0; j < skraMarga; j++) {
if (max > 3) {
while (max > 3) {
Line++;
max = checkLine(Line, FieldID, Date, modinfo);
}
}
max++;
lines[j] = getTime(Line, myGolfField);
}
Table myTable = new Table(7, skraMarga + 3);
myTable.setCellpadding(0);
myTable.setCellspacing(0);
myTable.setWidth(2, "40");
/*
* myTable.add(new Image(txtTimeUrl), 2, 1); myTable.add(new
* Image(txtNameUrl), 3, 1); myTable.add(new Image(txtClubUrl), 4, 1);
* myTable.add(new Image(txtHandicapUrl), 5, 1); myTable.add(new
* Image(txtCardUrl), 6, 1);
*/
myTable.add(getLocalizedText("start.time","Time"), 2, 1);
myTable.add(getLocalizedText("start.name","Name"), 3, 1);
myTable.add(getLocalizedText("start.club","Club"), 4, 1);
myTable.add(getLocalizedText("start.handicap","Handicap"), 5, 1);
myTable.add(getLocalizedText("start.vip_card","VIP card"), 6, 1);
myTable.add(getLocalizedText("start.cardnumber","Cardnumber"), 7, 1);
//myTable.setBorder(1);
boolean admin = false;
boolean clubadmin = false;
boolean clubworker = false;
String unionAbbrevation = null;
//int unionId = -1;
if (memberAvailable) {
admin = AccessControl.isAdmin(modinfo);
clubadmin = AccessControl.isClubAdmin(modinfo);
clubworker = AccessControl.isClubWorker(modinfo);
unionAbbrevation = member.getMainUnion().getAbbrevation();
//unionId = member.getMainUnion().getID();
}
int i = 1;
for (; i < skraMarga + 1; i++) {
//myTable.add(new Image(picUrl_5, "", 51, skraMarga*3), 1, i+1);
myTable.setWidth(1, "25");
myTable.add(getText(lines[i - 1]), 2, i + 1);
myTable.setAlignment(2, i + 1, "left");
if (admin || clubadmin || clubworker) {
myTable.add(insertEditBox("name", myForm), 3, i + 1);
myTable.add(insertUnionDropdown("club", unionAbbrevation, 5), 4, i + 1);
myTable.add(insertEditBox("handicap", 6), 5, i + 1);
}
else {
if (i == 1 && memberAvailable) {
String handicap = new Float(member.getHandicap()).toString();
if (handicap.equals("-1.0"))
handicap = "100.0";
myTable.add(insertEditBox("name", member.getName()), 3, i + 1);
myTable.add(insertUnionDropdown("club", unionAbbrevation, 5), 4, i + 1);
myTable.add(insertEditBox("handicap", handicap, 6), 5, i + 1);
}
else {
myTable.add(insertEditBox("name", myForm), 3, i + 1);
myTable.add(insertUnionDropdown("club", unionAbbrevation, 5), 4, i + 1);
myTable.add(insertEditBox("handicap", 6), 5, i + 1);
}
}
myTable.add(insertEditBox("card", 4), 6, i + 1);
myTable.add(insertEditBox("cardNo", 12), 7, i + 1);
}
setPlayers(modinfo);
myTable.mergeCells(4, i + 2, 7, i + 2);
myTable.add(insertButton(getResourceBundle().getImage(btnSkraUrl), "", StartingTimeLogin.class, "post", myForm), 4, i + 2);
myTable.add(new CloseButton(getResourceBundle().getImage(btnCancelUrl)), 4, i + 2);
myTable.setAlignment(4, i + 2, "right");
myForm.add(myTable);
}
catch (SQLException E) {
E.printStackTrace();
}
catch (FinderException E) {
E.printStackTrace();
}
catch (IOException E) {
E.printStackTrace();
}
}
public boolean setPlayers(IWContext modinfo) throws SQLException, IOException {
PrintWriter out = modinfo.getResponse().getWriter();
int i = 0;
String FieldID = modinfo.getSession().getAttribute("field_id").toString();
String Date = modinfo.getSession().getAttribute("date").toString();
String MemberId = modinfo.getSession().getAttribute("member_id").toString();
int Line = Integer.parseInt(modinfo.getRequest().getParameter("line"));
int max = checkLine(Line, FieldID, Date, modinfo);
int fjoldi = 4 - max;
try {
if (modinfo.getRequest().getParameter("name") != null) {
String playerName[] = modinfo.getRequest().getParameterValues("name");
String playerClub[] = modinfo.getRequest().getParameterValues("club");
String playerHandicap[] = modinfo.getRequest().getParameterValues("handicap");
String playerCard[] = modinfo.getRequest().getParameterValues("card");
String playerCardNo[] = modinfo.getRequest().getParameterValues("cardNo");
int numPlayers = playerName.length;
if (modinfo.getRequest().getParameter("handicap") != null) {
for (int j = 0; j < playerHandicap.length; j++) {
if (playerHandicap[j].equals(null) || playerHandicap[j].equals(""))
playerHandicap[j] = "-1";
if (playerClub[j].equals(null) || playerClub[j].equals(""))
playerClub[j] = " ";
if (playerName[j].equals(""))
return false;
}
}
for (; i < numPlayers; i++) {
if (max > 3) {
while (max > 3) {
Line++;
max = checkLine(Line, FieldID, Date, modinfo);
}
}
service.setStartingtime(Line, Date, FieldID, MemberId, playerName[i], playerHandicap[i], playerClub[i], playerCard[i], playerCardNo[i]);
max++;
}
}
}
catch (SQLException E) {
E.printStackTrace();
out.print("SQLException: " + E.getMessage());
out.print("SQLState: " + E.getSQLState());
}
return true;
}
public int checkLine(int LineNo, String fieldID, String date, IWContext modinfo) throws SQLException, IOException {
int totalLines = -1;
totalLines = service.entriesInGroup(LineNo, fieldID, date);
return totalLines;
}
public void output(String text, IWContext modinfo) throws IOException {
PrintWriter out = modinfo.getResponse().getWriter();
out.print(text);
}
/*
* public void setGraphic(Form myForm, Window myWindow) { String picUrl_1 =
* "/pics/rastimask/Rastimaskraning/Rastimaskraning_01.gif"; String picUrl_2 =
* "/pics/rastimask/Rastimaskraning/Rastimaskraning_02.gif"; String picUrl_3 =
* "/pics/rastimask/Rastimaskraning/Rastimaskraning_03.gif"; String picUrl_4 =
* "/pics/rastimask/Rastimaskraning/Rastimaskraning_04.gif"; String picUrl_6 =
* "/pics/rastimask/Rastimaskraning/Rastimaskraning_06.gif"; Table Header =
* new Table(4, 1); Header.setHeight("112"); Header.setWidth(1, "96");
* Header.setWidth(2, "205"); Header.setWidth(3, "112"); Header.setBorder(1);
* Header.setCellpadding(0); Header.setCellspacing(0);
* myWindow.setMarginWidth(0); myWindow.setMarginHeight(0);
* myWindow.setLeftMargin(0); myWindow.setTopMargin(0);
* myWindow.setScrollbar(true); Header.setBackgroundImage(1, 1, new
* Image(picUrl_1)); Header.setBackgroundImage(2, 1, new Image(picUrl_2));
* Header.setBackgroundImage(3, 1, new Image(picUrl_3));
* Header.setBackgroundImage(4, 1, new Image(picUrl_4));
* Header.setWidth("100%"); myForm.add(Header);
* myWindow.setBackgroundImage(new Image(picUrl_6, "")); }
*/
public void setGraphic(Form myForm) {
String picUrl_1 = "/pics/rastima_popup/skraning.gif";
String picUrl_2 = "/pics/rastima_popup/tile.gif";
Table Header = new Table(2, 1);
//Header.setBorder(1);
Header.setHeight("90");
Header.setWidth(1, "10");
Header.setCellpadding(0);
Header.setCellspacing(0);
getParentPage().setMarginWidth(0);
getParentPage().setMarginHeight(0);
getParentPage().setLeftMargin(0);
getParentPage().setTopMargin(0);
Header.setBackgroundImage(2, 1, getResourceBundle().getImage(picUrl_1));
Header.setBackgroundImage(1, 1, getResourceBundle().getImage(picUrl_2));
Header.setWidth("100%");
myForm.add(Header);
getParentPage().setBackgroundColor("#8ab490");
}
public void setErroResponse(Form myForm, boolean inputErr) {
//String borderPicUrl = "/pics/rastimask/Rastimaskraning/BorderTiler.gif";
String btnCloseUrl = "/pics/rastimask/Takkar/TLoka1.gif";
String btnBackUrl = "/pics/rastimask/Takkar/Ttilbaka1.gif";
Table myTable = new Table(2, 3);
if (inputErr) {
myTable.add(getErrorText(localize("start.error02","Nau�synlegt er a� skr� eins marga og teknir voru fr�")), 2, 1);
}
else
myTable.add(getErrorText(localize("start.error03","�etta holl er �v� mi�ur fullt. Gj�r�u svo vel a� velja ߎr n�jan t�ma")), 2, 1);
//myTable.add(new Image(borderPicUrl), 1, 1);
//myTable.add(new Image(borderPicUrl), 1, 2);
//myTable.add(new Image(borderPicUrl), 1, 3);
if (inputErr) {
myTable.add(new BackButton(getResourceBundle().getImage(btnBackUrl)), 2, 3);
}
else
myTable.add(new CloseButton(getResourceBundle().getImage(btnCloseUrl)), 2, 3);
myTable.setAlignment(2, 3, "center");
myTable.setCellpadding(0);
myTable.setCellspacing(0);
myForm.add(myTable);
}
public GolfField getFieldInfo(int field, String date) throws SQLException, IOException {
StartingtimeFieldConfig FieldConfig = service.getFieldConfig(field, date);
GolfField field_info = new GolfField(new IWTimestamp(FieldConfig.getOpenTime()).toSQLTimeString(), new IWTimestamp(FieldConfig.getCloseTime()).toSQLTimeString(), FieldConfig.getMinutesBetweenStart(), field, date, FieldConfig.getDaysShown(), true);
return field_info;
}
public String getTime(int end, GolfField myGolfField) {
int interval = myGolfField.get_interval();
int openMin = myGolfField.get_open_min();
int openHour = myGolfField.get_open_hour();
String Time = "";
for (int i = 1; i <= end; i++) {
if (openMin >= 60) {
openMin -= 60;
openHour++;
}
if (openMin < 10)
Time = openHour + ":0" + openMin;
else
Time = openHour + ":" + openMin;
openMin += interval;
}
return Time;
}
}