/* * Created on 4.3.2004 */ package is.idega.idegaweb.golf.field.presentation; import is.idega.idegaweb.golf.entity.Field; import is.idega.idegaweb.golf.entity.FieldHome; import is.idega.idegaweb.golf.entity.FieldImage; import is.idega.idegaweb.golf.entity.HoleText; import is.idega.idegaweb.golf.entity.Tee; import is.idega.idegaweb.golf.entity.TeeColor; import is.idega.idegaweb.golf.entity.TeeColorHome; import is.idega.idegaweb.golf.entity.TeeImage; import is.idega.idegaweb.golf.handicap.presentation.HandicapTable; import is.idega.idegaweb.golf.presentation.GolfBlock; import java.io.IOException; import java.math.BigDecimal; import java.sql.SQLException; import javax.ejb.FinderException; import com.idega.block.text.business.TextBusiness; import com.idega.block.text.data.TxText; import com.idega.block.text.presentation.TextReader; import com.idega.core.builder.data.ICPage; 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.Text; 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.SubmitButton; /** * @author laddi */ public class FieldOverview extends GolfBlock { private ICPage gameHandicapPage; public final static String PRM_FIELD_ID = "field_id"; private int iMaxImageWidth = 0; private ICPage holeViewPage; public void main(IWContext modinfo) throws Exception { String hole_number = modinfo.getParameter("hole_number"); String field_id = modinfo.getParameter("field_id"); if (field_id == null) field_id = "50"; Table contentTable = new Table(); contentTable.setWidth("100%"); contentTable.setCellpadding(0); contentTable.setCellspacing(0); if (field_id != null && hole_number == null) { Field field = ((FieldHome) IDOLookup.getHomeLegacy(Field.class)).findByPrimaryKey(Integer.parseInt(field_id)); Table myTable = getFieldInfo(field, field_id); fillContentTable(modinfo,field, contentTable, myTable, field_id); } else if (field_id != null && hole_number != null) { Field field = ((FieldHome) IDOLookup.getHomeLegacy(Field.class)).findByPrimaryKey(Integer.parseInt(field_id)); Table myTable = getHoleInfo(modinfo,field, field_id, hole_number); contentTable.add(myTable, 1, 1); } add(contentTable); } public String getTeeColor(int teeColorId) throws IOException { String litur = ""; switch (teeColorId) { case 1 : litur = "FFFFFF"; break; case 2 : litur = "#FCFA44"; break; case 3 : litur = "#2F78DC"; break; case 4 : litur = "#DC2F2F"; break; case 5 : litur = "#2F78DC"; break; case 6 : litur = "#DC2F2F"; break; } return litur; } public Table getFieldInfo(Field field, String field_id) throws IOException, SQLException, FinderException { Tee[] teeColor = (Tee[]) ((Tee) IDOLookup.instanciateEntity(Tee.class)).findAll("select distinct tee_color_id from tee where field_id=" + field.getID()); Table myTable = new Table(); myTable.setRows(teeColor.length + 3); for (int a = 0; a < teeColor.length; a++) { Tee[] tee = (Tee[]) ((Tee) IDOLookup.instanciateEntity(Tee.class)).findAllByColumnEqualsOrdered("field_id", field.getID(), "tee_color_id", teeColor[a].getIntColumnValue("tee_color_id"), "hole_number"); Text teeColorName = getSmallBoldBlackText(((TeeColorHome) IDOLookup.getHomeLegacy(TeeColor.class)).findByPrimaryKey(teeColor[a].getIntColumnValue("tee_color_id")).getName() + " "); myTable.add(teeColorName, 1, a + 2); int teeLength = 0; int par = 0; int holePar = 0; for (int b = 0; b < tee.length; b++) { int holeLength = tee[b].getIntColumnValue("tee_length"); Text lengthText = getSmallBlackText(String.valueOf(holeLength)); myTable.add(lengthText, b + 2, a + 2); teeLength += tee[b].getIntColumnValue("tee_length"); if (a == 0) { Text holeNumber = getSmallHeader(tee[b].getStringColumnValue("hole_number")); myTable.add(holeNumber, b + 2, 1); } if (a + 1 == teeColor.length) { holePar = tee[b].getPar(); par += tee[b].getPar(); Text parText = getSmallBlackText(String.valueOf(holePar)); Text handicapText = getSmallBlackText("" + ((int) tee[b].getFloatColumnValue("handicap"))); myTable.add(handicapText, b + 2, a + 3); myTable.add(parText, b + 2, a + 4); } if (b + 1 == tee.length) { Text holeText = getSmallHeader(getResourceBundle().getLocalizedString("field.hole", "Hole") + Text.NON_BREAKING_SPACE); Text totalText = getSmallHeader(getResourceBundle().getLocalizedString("field.total", "Total")); Text rating = getSmallBoldBlackText(tee[b].getStringColumnValue("course_rating") + "/" + tee[b].getStringColumnValue("slope")); Text teeLengthText = getSmallBoldBlackText(String.valueOf(teeLength)); Text totalPar = getSmallBoldBlackText(String.valueOf(par)); Text ratingText = getSmallHeader(getResourceBundle().getLocalizedString("field.cr_slope", "CR/Slope")); Text parText2 = getSmallBoldBlackText(getResourceBundle().getLocalizedString("field.par", "Par") + Text.NON_BREAKING_SPACE); Text handicap = getSmallBoldBlackText(getResourceBundle().getLocalizedString("field.handicap", "Handicap") + Text.NON_BREAKING_SPACE); myTable.add(rating, b + 4, a + 2); myTable.add(teeLengthText, b + 3, a + 2); if (a + 1 == teeColor.length) { myTable.add(holeText, 1, 1); myTable.add(totalText, b + 3, 1); myTable.add(totalPar, b + 3, a + 4); myTable.add(ratingText, b + 4, 1); myTable.add(parText2, 1, a + 4); myTable.add(handicap, 1, a + 3); } } } } for (int a = 1; a <= myTable.getRows(); a++) { myTable.setRowAlignment(a, "center"); myTable.setRowVerticalAlignment(a, "middle"); if (a > 1 && a <= teeColor.length + 1) { myTable.setRowStyleClass(a, getDarkRowClass()); String teeLitur = getTeeColor(teeColor[a - 2].getIntColumnValue("tee_color_id")); myTable.setRowColor(a, teeLitur); } else if (a == 1) { myTable.setRowStyleClass(a, getHeaderRowClass()); } else if (a > teeColor.length + 1) { if (a != myTable.getRows()) { myTable.setRowStyleClass(a, getDarkRowClass()); } else { myTable.setRowStyleClass(a, getLightRowClass()); } } } myTable.setColumnAlignment(1, Table.HORIZONTAL_ALIGN_RIGHT); myTable.setWidth(Table.HUNDRED_PERCENT); myTable.setCellpadding(0); myTable.setCellspacing(0); return myTable; } public void fillContentTable(IWContext iwc,Field field, Table contentTable, Table myTable, String field_id) throws IOException, SQLException { int row = 1; Table formTable = new Table(2, 1); formTable.setAlignment(2, 1, "right"); formTable.setCellpaddingLeft(1, 1, 5); formTable.setCellpaddingRight(2, 1, 5); formTable.setWidth("100%"); formTable.add(getHoleChooser(field_id), 1, 1); GenericButton handicapTables = new GenericButton("handicap_tables", getResourceBundle().getLocalizedString("field.handicap_tables", "Handicap tables")); handicapTables.addParameterToPage("field_id", field_id); handicapTables.setWindowToOpen(HandicapTable.class); formTable.add(handicapTables, 2, 1); GenericButton gameHandicaps = new GenericButton("game_handicap", getResourceBundle().getLocalizedString("field.game_handicap", "Game handicap")); gameHandicaps.addParameterToWindow("field_id", field_id); gameHandicaps.setWindowToOpen(FieldHandicapCalculator.class); formTable.add(Text.getNonBrakingSpace(), 2, 1); formTable.add(gameHandicaps, 2, 1); contentTable.setHeight(row, 40); contentTable.add(formTable, 1, row++); contentTable.add(myTable, 1, row++); Table infoTable = new Table(); infoTable.setCellpadding(0); infoTable.setCellspacing(0); infoTable.setWidth(Table.HUNDRED_PERCENT); contentTable.add(infoTable, 1, row); int column = 1; contentTable.setCellpaddingLeft(1,row,"10%"); contentTable.setCellpaddingRight(1,row,"10%"); contentTable.setCellpaddingBottom(1,row,25); contentTable.setCellpaddingTop(1,row,10); FieldImage[] fieldImage = (FieldImage[]) ((FieldImage) IDOLookup.instanciateEntity(FieldImage.class)).findAllByColumnEquals("field_id", String.valueOf(field.getID())); if (fieldImage.length != 0) { Image fieldMynd = new Image(fieldImage[0].getImageID()); fieldMynd.setHorizontalSpacing(12); if (iMaxImageWidth > 0) { fieldMynd.setMaxImageWidth(iMaxImageWidth); } infoTable.add(fieldMynd, column++, 1); } TextReader fieldText = null; HoleText[] hole_text = (HoleText[]) ((HoleText) IDOLookup.instanciateEntity(HoleText.class)).findAllByColumnEquals("field_id", "" + field.getID(), "hole_number", "0"); if (hole_text.length > 0) { if(isAdmin() && hole_text[0].getTextID() < 0) { TxText text = TextBusiness.saveText(-1,-1,iwc.getCurrentLocaleId(),iwc.getCurrentUserId(),this.getICObjectInstanceID(),null,null,"","","",null,null); hole_text[0].setTextID(text.getID()); hole_text[0].store(); } fieldText = new TextReader(hole_text[0].getTextID()); fieldText.setEnableDelete(false); fieldText.setCacheable(false); } if (fieldText != null) { infoTable.add(fieldText, column, 1); } infoTable.setRowVerticalAlignment(1, Table.VERTICAL_ALIGN_TOP); } public Form getHoleChooser(String field_id) throws IOException { Form myForm = new Form(); myForm.add(new HiddenInput("field_id", field_id)); if (holeViewPage != null) { myForm.setPageToSubmitTo(holeViewPage); } DropdownMenu holeChooser = new DropdownMenu("hole_number"); for (int a = 1; a <= 18; a++) { holeChooser.addMenuElement(a, a + ". hola"); } Table myTable = new Table(); myTable.setCellpadding(0); myTable.setCellspacing(0); myTable.setCellpaddingRight(1, 1, 5); myTable.setCellpaddingRight(2, 1, 5); Text holeText = new Text(getResourceBundle().getLocalizedString("field.select_hole", "Select hole")); holeText.setBold(); SubmitButton senda = new SubmitButton(getResourceBundle().getLocalizedString("field.get_hole", "Get")); myTable.add(holeText, 1, 1); myTable.add(holeChooser, 2, 1); myTable.add(senda, 3, 1); myForm.add(myTable); return myForm; } public Table getHoleInfo(IWContext iwc, Field field, String field_id, String hole_number) throws IOException, SQLException { Table outerTable = new Table(); outerTable.setWidth("100%"); outerTable.setCellpadding(0); outerTable.setCellspacing(0); int row = 1; Table myTable = new Table(); myTable.setColor("000000"); myTable.setCellpadding(6); myTable.setCellspacing(2); Tee[] tee = (Tee[]) ((Tee) IDOLookup.instanciateEntity(Tee.class)).findAll("select * from tee where field_id=" + String.valueOf(field.getID()) + " and hole_number=" + hole_number + " and tee_color_id<5"); for (int a = 0; a < tee.length; a++) { if (a == 0) { Text parText = new Text("Par " + tee[a].getPar()); parText.setBold(); parText.setFontSize(4); Text handicapText = new Text(getResourceBundle().getLocalizedString("field.handicap", "Handicap") + Text.NON_BREAKING_SPACE + ((int) tee[a].getFloatColumnValue("handicap"))); handicapText.setBold(); handicapText.setFontSize(4); myTable.setColor(1, 1, "FFFFFF"); myTable.setColor(2, 1, "FFFFFF"); myTable.add(parText, 1, 1); myTable.add(handicapText, 2, 1); } Text lengthText = new Text(tee[a].getStringColumnValue("tee_length")); lengthText.setBold(); lengthText.setFontSize(4); myTable.add(lengthText, a + 3, 1); myTable.setColor(a + 3, 1, getTeeColor(tee[a].getIntColumnValue("tee_color_id"))); } if (tee.length > 0) { if (tee[0].getStringColumnValue("hole_name") != null) { Text holeName = getBigHeader(tee[0].getStringColumnValue("hole_name")); outerTable.add(holeName, 1, row++); outerTable.setHeight(row++, 6); } } TeeImage[] teeImage = (TeeImage[]) ((TeeImage) IDOLookup.instanciateEntity(TeeImage.class)).findAllByColumnEquals("field_id", String.valueOf(field.getID()), "hole_number", hole_number); if (teeImage.length != 0) { Image teeMynd = new Image(teeImage[0].getImageID()); outerTable.setAlignment(1, row, Table.HORIZONTAL_ALIGN_CENTER); outerTable.add(teeMynd, 1, row++); outerTable.setHeight(row++, 6); } outerTable.setAlignment(1, row, Table.HORIZONTAL_ALIGN_CENTER); outerTable.add(myTable, 1, row++); outerTable.setHeight(row++, 18); TextReader fieldText = null; HoleText[] hole_text = (HoleText[]) ((HoleText) IDOLookup.instanciateEntity(HoleText.class)).findAllByColumnEquals("field_id", "" + field.getID(), "hole_number", hole_number); if (hole_text.length > 0) { if(isAdmin() && hole_text[0].getTextID() < 0) { TxText text = TextBusiness.saveText(-1,-1,iwc.getCurrentLocaleId(),iwc.getCurrentUserId(),this.getICObjectInstanceID(),null,null,"","","",null,null); hole_text[0].setTextID(text.getID()); hole_text[0].store(); } fieldText = new TextReader(hole_text[0].getTextID()); fieldText.setEnableDelete(false); fieldText.setCacheable(false); outerTable.add(fieldText, 1, row); } return outerTable; } public String scale_decimals(String nyForgjof, int scale) throws IOException { BigDecimal test2 = new BigDecimal(nyForgjof); String nyForgjof2 = test2.setScale(scale, 5).toString(); return nyForgjof2; } /** * @param gameHandicapPage The gameHandicapPage to set. */ public void setGameHandicapPage(ICPage gameHandicapPage) { this.gameHandicapPage = gameHandicapPage; } /** * @param maxImageWidth The iMaxImageWidth to set. */ public void setMaxImageWidth(int maxImageWidth) { iMaxImageWidth = maxImageWidth; } /** * @param holeViewPage The holeViewPage to set. */ public void setHoleViewPage(ICPage holeViewPage) { this.holeViewPage = holeViewPage; } }