/* * Created on 4.6.2004 */ package is.idega.idegaweb.golf.handicap.presentation; import java.rmi.RemoteException; import javax.ejb.FinderException; import is.idega.idegaweb.golf.business.StatisticsBusiness; import is.idega.idegaweb.golf.entity.Member; import is.idega.idegaweb.golf.entity.MemberHome; import is.idega.idegaweb.golf.presentation.GolfBlock; import is.idega.idegaweb.golf.util.GolfConstants; import com.idega.business.IBOLookup; import com.idega.business.IBOLookupException; import com.idega.business.IBORuntimeException; import com.idega.data.IDOLookup; import com.idega.idegaweb.IWApplicationContext; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.user.data.User; import com.idega.user.data.UserHome; /** * @author laddi */ public class HandicapMemberStatistics extends GolfBlock { private boolean iShowHoleStatistics = true; private boolean iShowTotalStatistics = false; private boolean iShowRegisteredStatistics = false; private boolean iShowInfo = false; private StatisticsBusiness statBusiness; String iMemberID; /* (non-Javadoc) * @see com.idega.presentation.PresentationObject#main(com.idega.presentation.IWContext) */ public void main(IWContext iwc) throws Exception { statBusiness = getStatisticsBusiness(iwc); if (iwc.isParameterSet(GolfConstants.MEMBER_UUID)) { MemberHome home = (MemberHome) IDOLookup.getHomeLegacy(Member.class); try { Member member = home.findByUniqueID(iwc.getParameter(GolfConstants.MEMBER_UUID)); iMemberID = member.getPrimaryKey().toString(); } catch (FinderException fe) { UserHome userHome = (UserHome) IDOLookup.getHome(User.class); try { User user = userHome.findUserByUniqueId(iwc.getParameter(GolfConstants.MEMBER_UUID)); Member member = home.findMemberByIWMemberSystemUser(user); iMemberID = member.getPrimaryKey().toString(); } catch (FinderException e) { //Nothing found... } } if (iMemberID != null) { iwc.setSessionAttribute("member_id", iMemberID); } } if (iMemberID == null) { iMemberID = iwc.getRequest().getParameter("member_id"); } if (iMemberID == null) { iMemberID = (String) iwc.getSession().getAttribute("member_id"); } if (iMemberID == null) { Member member = (Member) iwc.getSession().getAttribute("member_login"); if (member != null) { iMemberID = String.valueOf(member.getID()); if (iMemberID == null) { iMemberID = "1"; } } else { iMemberID = "1"; } } if (iShowHoleStatistics) { getHoleStatistics(iwc); } else if (iShowTotalStatistics) { getTotalStatistics(iwc); } else if (iShowRegisteredStatistics) { getRegisteredStatistics(iwc); } } private void getHoleStatistics(IWContext iwc) throws RemoteException { int eagles = statBusiness.getNumberOfEaglesByMember(Integer.parseInt(iMemberID)); int birdies = statBusiness.getNumberOfBirdiesByMember(Integer.parseInt(iMemberID)); int pars = statBusiness.getNumberOfParsByMember(Integer.parseInt(iMemberID)); int bogeys = statBusiness.getNumberOfBogeysByMember(Integer.parseInt(iMemberID)); int doubleBogeys = statBusiness.getNumberOfDoubleBogeysByMember(Integer.parseInt(iMemberID)); int totalStrokes = eagles + birdies + pars + bogeys + doubleBogeys; double averageEagles = 0; double averageBirdies = 0; double averagePars = 0; double averageBogeys = 0; double averageDoubleBogeys = 0; if (totalStrokes > 0) { averageEagles = (double) eagles / (double) totalStrokes; averageBirdies = (double) birdies / (double) totalStrokes; averagePars = (double) pars / (double) totalStrokes; averageBogeys = (double) bogeys / (double) totalStrokes; averageDoubleBogeys = (double) doubleBogeys / (double) totalStrokes; } Table table = new Table(); table.setWidth(Table.HUNDRED_PERCENT); table.setCellpadding(0); table.setCellspacing(0); table.setRows(6); table.setColumns(3); table.setColumnAlignment(2, Table.HORIZONTAL_ALIGN_CENTER); table.setColumnAlignment(3, Table.HORIZONTAL_ALIGN_CENTER); int row = 1; table.add(getSmallHeader(localize("handicap.count", "Count")), 2, row); table.add(getSmallHeader(localize("handicap.average_of_total", "Total")), 3, row); table.setRowStyleClass(row++, getHeaderRowClass()); table.add(getSmallText(localize("handicap.eagles", "Eagles")), 1, row); table.add(getSmallText(String.valueOf(eagles)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averageEagles)), 3, row); table.setRowStyleClass(row++, getLightRowClass()); table.add(getSmallText(localize("handicap.birdies", "Birdies")), 1, row); table.add(getSmallText(String.valueOf(birdies)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averageBirdies)), 3, row); table.setRowStyleClass(row++, getDarkRowClass()); table.add(getSmallText(localize("handicap.pars", "Pars")), 1, row); table.add(getSmallText(String.valueOf(pars)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averagePars)), 3, row); table.setRowStyleClass(row++, getLightRowClass()); table.add(getSmallText(localize("handicap.bogeys", "Bogeys")), 1, row); table.add(getSmallText(String.valueOf(bogeys)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averageBogeys)), 3, row); table.setRowStyleClass(row++, getDarkRowClass()); table.add(getSmallText(localize("handicap.double_bogeys", "Double bogeys")), 1, row); table.add(getSmallText(String.valueOf(doubleBogeys)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averageDoubleBogeys)), 3, row); table.setRowStyleClass(row++, getLightRowClass()); if (iShowInfo) { table.setRows(7); table.mergeCells(1, row, 3, row); table.setCellpadding(1, row, 4); table.add(getText(localize("handicap.hole_statistics_info", "The statistics shows information calculated from every scorecard entered in the database for the golfer.")), 1, row); } add(table); } private void getTotalStatistics(IWContext iwc) throws RemoteException { int strokes = statBusiness.getSumOfStrokesByMember(Integer.parseInt(iMemberID)); int points = statBusiness.getSumOfPointsByMember(Integer.parseInt(iMemberID)); int holesPlayed = statBusiness.getNumberOfHolesPlayedByMember(Integer.parseInt(iMemberID)); int roundsPlayed = statBusiness.getNumberOfRoundsByMember(Integer.parseInt(iMemberID)); Table table = new Table(); table.setWidth(Table.HUNDRED_PERCENT); table.setCellpadding(0); table.setCellspacing(0); table.setColumns(2); table.setRows(5); table.setColumnAlignment(2, Table.HORIZONTAL_ALIGN_CENTER); int row = 1; table.add(getSmallHeader(localize("handicap.count", "Count")), 2, row); table.setRowStyleClass(row++, getHeaderRowClass()); table.add(getSmallText(localize("handicap.strokes", "Strokes")), 1, row); table.add(getSmallText(String.valueOf(strokes)), 2, row); table.setRowStyleClass(row++, getLightRowClass()); table.add(getSmallText(localize("handicap.points", "Points")), 1, row); table.add(getSmallText(String.valueOf(points)), 2, row); table.setRowStyleClass(row++, getDarkRowClass()); table.add(getSmallText(localize("handicap.holes_played_total", "Holes played")), 1, row); table.add(getSmallText(String.valueOf(holesPlayed)), 2, row); table.setRowStyleClass(row++, getLightRowClass()); table.add(getSmallText(localize("handicap.rounds_played_total", "Rounds played")), 1, row); table.add(getSmallText(String.valueOf(roundsPlayed)), 2, row); table.setRowStyleClass(row++, getDarkRowClass()); if (iShowInfo) { table.setRows(6); table.mergeCells(1, row, 2, row); table.setCellpadding(1, row, 4); table.add(getText(localize("handicap.total_statistics_info", "The statistics shows information calculated from every scorecard entered in the database for the golfer.")), 1, row); } add(table); } private void getRegisteredStatistics(IWContext iwc) throws RemoteException { int fairways = statBusiness.getNumberOnFairwayByMember(Integer.parseInt(iMemberID)); int greens = statBusiness.getNumberOnGreenByMember(Integer.parseInt(iMemberID)); int putts = statBusiness.getSumOfPuttsByMember(Integer.parseInt(iMemberID)); double averageFairways = statBusiness.getFairwayAverageByMember(Integer.parseInt(iMemberID)); double averageGreens = statBusiness.getOnGreenAverageByMember(Integer.parseInt(iMemberID)); double averagePutts = statBusiness.getPuttAverageByMember(Integer.parseInt(iMemberID)); Table table = new Table(); table.setWidth(Table.HUNDRED_PERCENT); table.setCellpadding(0); table.setCellspacing(0); table.setRows(4); table.setColumns(3); table.setColumnAlignment(2, Table.HORIZONTAL_ALIGN_CENTER); table.setColumnAlignment(3, Table.HORIZONTAL_ALIGN_CENTER); int row = 1; table.add(getSmallHeader(localize("handicap.count", "Count")), 2, row); table.add(getSmallHeader(localize("handicap.average_of_total", "Total")), 3, row); table.setRowStyleClass(row++, getHeaderRowClass()); table.add(getSmallText(localize("handicap.fairways", "Fairways")), 1, row); if (fairways > 0) { table.add(getSmallText(String.valueOf(fairways)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averageFairways)), 3, row); } else { table.add(getSmallText("-"), 2, row); table.add(getSmallText("-"), 3, row); } table.setRowStyleClass(row++, getLightRowClass()); table.add(getSmallText(localize("handicap.green_in_regulation", "GIR")), 1, row); if (fairways > 0) { table.add(getSmallText(String.valueOf(greens)), 2, row); table.add(getSmallText(statBusiness.getPercentText(averageGreens)), 3, row); } else { table.add(getSmallText("-"), 2, row); table.add(getSmallText("-"), 3, row); } table.setRowStyleClass(row++, getDarkRowClass()); table.add(getSmallText(localize("handicap.putts", "Putts")), 1, row); if (fairways > 0) { table.add(getSmallText(String.valueOf(putts)), 2, row); table.add(getSmallText(statBusiness.getDecimalText(averagePutts)), 3, row); } else { table.add(getSmallText("-"), 2, row); table.add(getSmallText("-"), 3, row); } table.setRowStyleClass(row++, getLightRowClass()); if (iShowInfo) { table.setRows(5); table.mergeCells(1, row, 3, row); table.setCellpadding(1, row, 4); table.add(getText(localize("handicap.registered_statistics_info", "The statistics shows information entered manually by user.")), 1, row); } add(table); } private StatisticsBusiness getStatisticsBusiness(IWApplicationContext iwac) { try { return (StatisticsBusiness) IBOLookup.getServiceInstance(iwac, StatisticsBusiness.class); } catch (IBOLookupException ile) { throw new IBORuntimeException(ile); } } /** * @param showHoleStatistics The iShowHoleStatistics to set. */ public void setShowHoleStatistics(boolean showHoleStatistics) { iShowHoleStatistics = showHoleStatistics; iShowTotalStatistics = !showHoleStatistics; iShowRegisteredStatistics = !showHoleStatistics; } /** * @param showTotalStatistics The iShowTotalStatistics to set. */ public void setShowTotalStatistics(boolean showTotalStatistics) { iShowTotalStatistics = showTotalStatistics; iShowHoleStatistics = !showTotalStatistics; iShowRegisteredStatistics = !showTotalStatistics; } /** * @param showRegisteredStatistics The iShowRegisteredStatistics to set. */ public void setShowRegisteredStatistics(boolean showRegisteredStatistics) { iShowRegisteredStatistics = showRegisteredStatistics; iShowTotalStatistics = !showRegisteredStatistics; iShowHoleStatistics = !showRegisteredStatistics; } /** * @param showInfo The iShowInfo to set. */ public void setShowInfo(boolean showInfo) { iShowInfo = showInfo; } }