/*
* Created on 3.3.2004
*/
package is.idega.idegaweb.golf.handicap.presentation;
import java.math.BigDecimal;
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.CheckBox;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.text.Text;
import is.idega.idegaweb.golf.entity.Scorecard;
import is.idega.idegaweb.golf.entity.ScorecardHome;
import is.idega.idegaweb.golf.entity.Statistic;
import is.idega.idegaweb.golf.entity.Tee;
import is.idega.idegaweb.golf.entity.Tournament;
import is.idega.idegaweb.golf.presentation.GolfBlock;
import is.idega.idegaweb.golf.templates.page.GolfWindow;
/**
* @author laddi
*/
public class HandicapStatistics extends GolfWindow {
public HandicapStatistics() {
setWidth(600);
setHeight(380);
setTitle("Edit statistics");
add(new Statistics());
}
public class Statistics extends GolfBlock {
public void main(IWContext modinfo) throws Exception {
IWResourceBundle iwrb = getResourceBundle();
getParentPage().setTitle(iwrb.getLocalizedString("handicap.register_statistics", "Register statistics"));
addHeading(iwrb.getLocalizedString("handicap.register_statistics", "Register statistics"));
String mode = modinfo.getParameter("mode");
if (mode == null) {
mode = "";
}
String scorecard_id = modinfo.getParameter("scorecard_id");
if (scorecard_id == null) {
scorecard_id = "???";
}
Scorecard scorecard = ((ScorecardHome) IDOLookup.getHomeLegacy(Scorecard.class)).findByPrimaryKey(Integer.parseInt(scorecard_id));
Tee[] tee_id = (Tee[]) ((Tee) IDOLookup.instanciateEntity(Tee.class)).findAll("SELECT * from tee where field_id=" + scorecard.getFieldID() + " and tee_color_id=" + scorecard.getTeeColorID() + " order by hole_number");
Statistic[] stats = (Statistic[]) ((Statistic) IDOLookup.instanciateEntity(Statistic.class)).findAll("select s.* from statistic s,tee t where s.tee_id = t.tee_id and s.scorecard_id = " + scorecard_id + " order by t.hole_number");
if (mode.equalsIgnoreCase("")) {
String action = modinfo.getParameter("action");
if (action == null) {
action = "";
}
Tournament tournament = scorecard.getTournamentRound().getTournament();
Text tournamentName = getHeader(tournament.getName() + " - " + scorecard.getTournamentRound().getRoundNumber() + ". hringur");
Form myForm = new Form();
Table contentTable = new Table();
contentTable.setWidth("100%");
contentTable.setCellpadding(3);
contentTable.setCellspacing(3);
contentTable.add(tournamentName, 1, 1);
myForm.add(new HiddenInput("scorecard_id", scorecard_id));
SubmitButton submit = new SubmitButton("mode", iwrb.getLocalizedString("handicap.calculate", "Calculate"));
Text hola = getSmallHeader(" " + iwrb.getLocalizedString("handicap.hole", "Hole"));
Text ut = getSmallHeader(iwrb.getLocalizedString("handicap.out", "Out"));
Text inn = getSmallHeader(iwrb.getLocalizedString("handicap.in", "In"));
Text total = getSmallHeader(iwrb.getLocalizedString("handicap.total", "Total"));
Text average = getSmallHeader(iwrb.getLocalizedString("handicap.average", "Average"));
Text fairway_text = getSmallBoldText(" " + iwrb.getLocalizedString("handicap.fairway", "Fairway"));
Text greens_text = getSmallBoldText(" " + iwrb.getLocalizedString("handicap.gir", "GIR"));
Text putts_text = getSmallBoldText(" " + iwrb.getLocalizedString("handicap.putts", "Putts"));
Table statsTable = new Table();
statsTable.setWidth("100%");
statsTable.setBorder(0);
statsTable.setColor("#FFFFFF");
statsTable.setCellpadding(getCellpadding());
statsTable.setCellspacing(0);
contentTable.add(statsTable, 1, 2);
statsTable.add(hola, 1, 1);
statsTable.add(fairway_text, 1, 2);
statsTable.add(greens_text, 1, 3);
statsTable.add(putts_text, 1, 4);
statsTable.add(total, 12, 5);
statsTable.add(average, 13, 5);
statsTable.add(hola, 1, 5);
statsTable.add(fairway_text, 1, 6);
statsTable.add(greens_text, 1, 7);
statsTable.add(putts_text, 1, 8);
statsTable.addText("", 12, 1);
statsTable.addText("", 13, 1);
statsTable.add(ut, 11, 1);
statsTable.add(inn, 11, 5);
for (int b = 1; b <= 18; b++) {
int par_three = tee_id[b - 1].getPar();
String tee_stats = String.valueOf(tee_id[b - 1].getID());
Text hole_stats = getSmallHeader(String.valueOf(b));
int fairway_score = 0;
int greens_score = 0;
int putt_score = 0;
if (stats.length >= b) {
}
CheckBox fairway = getCheckBox("fairway_" + b, "1");
fairway.keepStatusOnAction();
if (fairway_score == 1) {
fairway.setChecked(true);
}
CheckBox greens = getCheckBox("greens_" + b, "1");
greens.keepStatusOnAction();
if (greens_score == 1) {
greens.setChecked(true);
}
TextInput putts = (TextInput) getStyledInterface(new TextInput("putts_" + b));
putts.setLength(1);
putts.setMaxlength(1);
putts.keepStatusOnAction();
if (putt_score > 0) {
putts.setValue(putt_score + "");
}
if (b <= 9) {
statsTable.add(hole_stats, b + 1, 1);
if (par_three != 3) {
statsTable.add(fairway, b + 1, 2);
}
statsTable.add(greens, b + 1, 3);
statsTable.add(putts, b + 1, 4);
statsTable.setColumnAlignment(b + 1, "center");
}
if (b > 9) {
statsTable.add(hole_stats, (b - 8), 5);
if (par_three != 3) {
statsTable.add(fairway, (b - 8), 6);
}
statsTable.add(greens, (b - 8), 7);
statsTable.add(putts, (b - 8), 8);
}
}
statsTable.setHorizontalZebraColored(getZebraColor1(), getZebraColor2());
statsTable.setRowColor(1, getHeaderColor());
statsTable.setRowColor(5, getHeaderColor());
if (action.equalsIgnoreCase(iwrb.getLocalizedString("handicap.calculate", "Calculate"))) { //Reikna
// t�lfr��i
int ut_putt = 0;
int inn_putt = 0;
int inn_fairway = 0;
int ut_fairway = 0;
int inn_greens = 0;
int ut_greens = 0;
int heildar_putt = 0;
int heildar_fairway = 0;
int heildar_greens = 0;
int parThrees = 0;
for (int d = 1; d <= 18; d++) {
// P�ttin
String putt_strokes = modinfo.getParameter("putts_" + d);
int putts;
if (tee_id[d - 1].getPar() == 3) {
parThrees++;
}
if (putt_strokes == null || putt_strokes.equals("")) {
putts = 0;
}
else {
putts = Integer.parseInt(putt_strokes);
heildar_putt += putts;
if (d <= 9) {
ut_putt += putts;
}
else {
inn_putt += putts;
}
}
// P�ttin b�in
// � braut
String fairway_hit = modinfo.getParameter("fairway_" + d);
if (fairway_hit == null) {
fairway_hit = "";
}
else {
heildar_fairway++;
if (d <= 9) {
ut_fairway++;
}
else {
inn_fairway++;
}
}
// � braut b�i�
// � fl�t
String greens_hit = modinfo.getParameter("greens_" + d);
if (greens_hit == null) {
greens_hit = "";
}
else {
heildar_greens++;
if (d <= 9) {
ut_greens++;
}
else {
inn_greens++;
}
}
// � fl�t b�i�
}
Text utFairwayText = getSmallText(ut_fairway + "/7");
utFairwayText.setFontSize(1);
Text innFairwayText = getSmallText(inn_fairway + "/7");
innFairwayText.setFontSize(1);
Text utGreensText = getSmallText(ut_greens + "/9");
utGreensText.setFontSize(1);
Text innGreensText = getSmallText(inn_greens + "/9");
innGreensText.setFontSize(1);
Text utPuttsText = getSmallText("" + ut_putt);
utPuttsText.setFontSize(1);
Text innPuttsText = getSmallText("" + inn_putt);
innPuttsText.setFontSize(1);
statsTable.add(utFairwayText, 11, 2);
statsTable.add(utGreensText, 11, 3);
statsTable.add(utPuttsText, 11, 4);
statsTable.add(innFairwayText, 11, 6);
statsTable.add(innGreensText, 11, 7);
statsTable.add(innPuttsText, 11, 8);
String fairway_holes = String.valueOf((18 - parThrees));
Text totalFairwayText = getSmallText(heildar_fairway + "/" + fairway_holes);
totalFairwayText.setFontSize(1);
Text totalGreensText = getSmallText(heildar_greens + "/" + 18);
totalGreensText.setFontSize(1);
Text totalPuttsText = getSmallText("" + heildar_putt);
totalPuttsText.setFontSize(1);
statsTable.add(totalFairwayText, 12, 6);
statsTable.add(totalGreensText, 12, 7);
statsTable.add(totalPuttsText, 12, 8);
String medalfairway = String.valueOf((double) heildar_fairway / Integer.parseInt(fairway_holes) * 100);
medalfairway = scaleDecimals(medalfairway, 2);
String medalgreens = String.valueOf((double) heildar_greens / 18 * 100);
medalgreens = scaleDecimals(medalgreens, 2);
String medalputts = String.valueOf((double) heildar_putt / 18);
medalputts = scaleDecimals(medalputts, 2);
Text averageFairwayText = getSmallText(medalfairway + "%");
averageFairwayText.setFontSize(1);
Text averageGreensText = getSmallText(medalgreens + "%");
averageGreensText.setFontSize(1);
Text averagePuttsText = getSmallText("" + medalputts);
averagePuttsText.setFontSize(1);
statsTable.add(averageFairwayText, 13, 6);
statsTable.add(averageGreensText, 13, 7);
statsTable.add(averagePuttsText, 13, 8);
}
statsTable.setColumnAlignment(11, "center");
statsTable.setColumnAlignment(12, "center");
statsTable.setColumnAlignment(13, "center");
contentTable.add(getButton(new SubmitButton("action", iwrb.getLocalizedString("handicap.calculate", "Calculate"))), 1, 3);
contentTable.add(getButton(new SubmitButton("mode", iwrb.getLocalizedString("handicap.save", "Save"))), 1, 3);
myForm.add(contentTable);
add(myForm);
}
if (mode.equalsIgnoreCase(iwrb.getLocalizedString("handicap.save", "Save"))) {
for (int hole_nr = 1; hole_nr <= 18; hole_nr++) {
String abraut = modinfo.getParameter("fairway_" + String.valueOf(hole_nr));
if (abraut == null) {
abraut = "-1";
}
String aflot = modinfo.getParameter("greens_" + String.valueOf(hole_nr));
if (aflot == null) {
aflot = "-1";
}
String puttin = modinfo.getParameter("putts_" + String.valueOf(hole_nr));
if (puttin == null || puttin.equals("")) {
puttin = "-1";
}
int tee_nr = tee_id[hole_nr - 1].getID();
Statistic[] statID = (Statistic[]) ((Statistic) IDOLookup.instanciateEntity(Statistic.class)).findAllByColumnEquals("scorecard_id", scorecard_id, "tee_id", String.valueOf(tee_nr));
if (statID.length > 0) {
statID[statID.length - 1].setFairway(Integer.parseInt(abraut));
statID[statID.length - 1].setGreens(Integer.parseInt(aflot));
statID[statID.length - 1].setPutts(Integer.parseInt(puttin));
statID[statID.length - 1].update();
}
else {
Statistic statNew = (Statistic) IDOLookup.createLegacy(Statistic.class);
statNew.setScorecardID(scorecard.getID());
statNew.setTeeID(tee_nr);
statNew.setFairway(Integer.parseInt(abraut));
statNew.setGreens(Integer.parseInt(aflot));
statNew.setPutts(Integer.parseInt(puttin));
statNew.insert();
}
}
getParentPage().close();
}
}
public String scaleDecimals(String handicap, int scale) {
BigDecimal decimal = new BigDecimal(handicap);
return decimal.setScale(scale, 5).toString();
}
}
}