package is.idega.idegaweb.golf.handicap.presentation; /** * Title: Description: Copyright: idega Copyright (c) 2001 Company: * * @author @version 1.0 */ import is.idega.idegaweb.golf.business.ScorecardBusiness; import is.idega.idegaweb.golf.entity.Field; import is.idega.idegaweb.golf.entity.Member; import is.idega.idegaweb.golf.entity.MemberHome; import is.idega.idegaweb.golf.entity.MemberInfo; import is.idega.idegaweb.golf.entity.MemberInfoHome; import is.idega.idegaweb.golf.entity.Scorecard; import is.idega.idegaweb.golf.entity.Union; import is.idega.idegaweb.golf.entity.UnionHome; import is.idega.idegaweb.golf.presentation.GolfBlock; import is.idega.idegaweb.golf.util.GolfConstants; import java.io.IOException; import java.sql.SQLException; 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.idegaweb.IWApplicationContext; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import com.idega.presentation.IWContext; import com.idega.presentation.Table; import com.idega.presentation.text.Text; import com.idega.presentation.ui.GenericButton; import com.idega.user.data.User; import com.idega.user.data.UserHome; import com.idega.util.IWTimestamp; import com.idega.util.text.TextSoap; public class HandicapInfo extends GolfBlock { private String iMemberID; private boolean isAdmin = false; protected IWResourceBundle iwrb; protected IWBundle iwb; public HandicapInfo() { } public HandicapInfo(String memberID) { this.iMemberID = memberID; } public HandicapInfo(int member_id) { this.iMemberID = String.valueOf(member_id); } public void main(IWContext modinfo) throws Exception { iwrb = getResourceBundle(); iwb = getBundle(); this.isAdmin = isAdministrator(modinfo); if (modinfo.isParameterSet(GolfConstants.MEMBER_UUID)) { MemberHome home = (MemberHome) IDOLookup.getHomeLegacy(Member.class); try { Member member = home.findByUniqueID(modinfo.getParameter(GolfConstants.MEMBER_UUID)); iMemberID = member.getPrimaryKey().toString(); } catch (FinderException fe) { UserHome userHome = (UserHome) IDOLookup.getHome(User.class); try { User user = userHome.findUserByUniqueId(modinfo.getParameter(GolfConstants.MEMBER_UUID)); Member member = home.findMemberByIWMemberSystemUser(user); iMemberID = member.getPrimaryKey().toString(); try { MemberInfo memberInfo = ((MemberInfoHome) IDOLookup.getHomeLegacy(MemberInfo.class)).findByPrimaryKey(Integer.parseInt(iMemberID)); } catch (FinderException fex) { MemberInfo memberInfo = ((MemberInfoHome) IDOLookup.getHomeLegacy(MemberInfo.class)).createLegacy(); memberInfo.setID(member.getID()); memberInfo.setFirstHandicap(100f); memberInfo.setHandicap(100f); memberInfo.store(); } } catch (FinderException e) { //Nothing found... } } if (iMemberID != null) { modinfo.setSessionAttribute("member_id", iMemberID); } } if (iMemberID == null) { iMemberID = modinfo.getRequest().getParameter("member_id"); } if (iMemberID == null) { iMemberID = (String) modinfo.getSession().getAttribute("member_id"); } if (iMemberID == null) { Member memberinn = (Member) modinfo.getSession().getAttribute("member_login"); if (memberinn != null) { iMemberID = String.valueOf(memberinn.getID()); if (iMemberID == null) { iMemberID = "1"; } } else { iMemberID = "1"; } } try { drawTable(modinfo); } catch (FinderException fe) { Table noTable = new Table(); noTable.setAlignment("center"); noTable.setCellpadding(12); noTable.setCellspacing(12); Text texti = getHeader(iwrb.getLocalizedString("handicap.member_no_handicap", "Member does not have a registered handicap.")); texti.addBreak(); texti.addBreak(); texti.addToText(iwrb.getLocalizedString("handicap.handicap_help", "Contact your club to get your handicap.")); noTable.add(texti); add(noTable); } } private void drawTable(IWContext iwc) throws IOException, SQLException, FinderException { IWTimestamp date = new IWTimestamp(); date.setDay(1); date.setMonth(1); Member member = ((MemberHome) IDOLookup.getHomeLegacy(Member.class)).findByPrimaryKey(Integer.parseInt(iMemberID)); MemberInfo memberInfo = null; try { memberInfo = ((MemberInfoHome) IDOLookup.getHomeLegacy(MemberInfo.class)).findByPrimaryKey(Integer.parseInt(iMemberID)); } catch (FinderException fe) { memberInfo = ((MemberInfoHome) IDOLookup.getHomeLegacy(MemberInfo.class)).createLegacy(); memberInfo.setID(member.getID()); memberInfo.setFirstHandicap(100f); memberInfo.setHandicap(100f); memberInfo.store(); } Union mainUnion = ((UnionHome) IDOLookup.getHomeLegacy(Union.class)).findByPrimaryKey(member.getMainUnionID()); //Optimization by Sigtryggur 23.06.05 int clubOrder = memberInfo.getNumberOfRecords("select count(member_info.member_id) from union_,union_member,member_info where union_.union_id=" + mainUnion.getID() + " and union_.union_id=union_member.union_id and union_member.member_id=member_info.member_id and member_info.handicap<'" + memberInfo.getHandicap() + "'") + 1; int numberOfRounds = getScorecardBusiness(iwc).getNumberOfRoundsAfterDate(Integer.parseInt(iMemberID), date.getDate()); double pointsAverage = getScorecardBusiness(iwc).getPointsAverage(Integer.parseInt(iMemberID)); Scorecard lastRound = getScorecardBusiness(iwc).getLastPlayedRound(Integer.parseInt(iMemberID)); Scorecard bestRound = getScorecardBusiness(iwc).getBestRoundAfterDate(Integer.parseInt(iMemberID), date.getDate()); Text name = getHeader(iwrb.getLocalizedString("handicap.member_name", "Member name")); Text mainUnionText = getHeader(iwrb.getLocalizedString("handicap.union_name", "Club name")); Text cardTotal = getHeader(iwrb.getLocalizedString("handicap.rounds_played", "Number of rounds played this year")); Text scoreText = getHeader(iwrb.getLocalizedString("handicap.last_round", "Last round played")); Text points = getHeader(iwrb.getLocalizedString("handicap.best_round", "Best round played this year")); Text averagepoints = getHeader(iwrb.getLocalizedString("handicap.average", "Average sum of points")); Text clubOrderText = getHeader(iwrb.getLocalizedString("handicap.club_ranking", "Club ranking")); Text memberText = getText(member.getName()); Text unionText = getText(mainUnion.getAbbrevation() + " - " + mainUnion.getName()); String cardText = String.valueOf(numberOfRounds); String noRounds = iwrb.getLocalizedString("handicap.no_round", "No rounds registered"); Text cardTotalText = getText(cardText); if (numberOfRounds > 0) { if (cardText.substring(cardText.length() - 1, cardText.length()).equals("1")) { cardTotalText.addToText(" " + iwrb.getLocalizedString("handicap.round", "round")); } else { cardTotalText.addToText(" " + iwrb.getLocalizedString("handicap.rounds", "rounds")); } } if (numberOfRounds < 1) { cardTotalText = getText(noRounds); } Text scoreCardsText = getText(noRounds); if (lastRound != null) { IWTimestamp scoreTime = new IWTimestamp(lastRound.getScorecardDate()); Field field = lastRound.getField(); scoreCardsText = getText(scoreTime.getLocaleDate(iwc.getCurrentLocale()) + " - " + field.getName()); } else { scoreCardsText = getText(noRounds); } Text pointsText; if (bestRound != null) { IWTimestamp scoreTime = new IWTimestamp(bestRound.getScorecardDate()); Field field = bestRound.getField(); pointsText = getText(String.valueOf(bestRound.getTotalPoints()) + " " + iwrb.getLocalizedString("handicap.points", "points") + " - " + field.getName() + ", " + scoreTime.getLocaleDate(iwc.getCurrentLocale())); } else { pointsText = getText(noRounds); } Text averageText; if (pointsAverage > 0) { String averagePoints = TextSoap.decimalFormat(pointsAverage, 2); averageText = getText(averagePoints + " " + iwrb.getLocalizedString("handicap.points", "points")); } else { averageText = getText(noRounds); } Text clubText = getText("" + clubOrder); if ((int) memberInfo.getHandicap() == 100) { clubText = getText(iwrb.getLocalizedString("handicap.no_handicap", "No handicap")); } if (clubOrder == 0) { clubText = getText(iwrb.getLocalizedString("handicap.no_club", "Not registered")); } GenericButton selectMember = getButton(new GenericButton("select_member", iwrb.getLocalizedString("handicap.select", "Select member"))); selectMember.setWindowToOpen(HandicapFindMember.class); Table textTable = new Table(); textTable.setCellpadding(0); textTable.setCellspacing(0); int row = 1; textTable.add(name, 1, row++); textTable.add(memberText, 1, row); if (isAdmin) { textTable.add(getSmallText(Text.NON_BREAKING_SPACE + Text.NON_BREAKING_SPACE), 1, row); textTable.add(selectMember, 1, row); } row++; textTable.setHeight(row++, 12); textTable.add(mainUnionText, 1, row++); textTable.add(unionText, 1, row++); textTable.setHeight(row++, 12); textTable.add(cardTotal, 1, row++); textTable.add(cardTotalText, 1, row++); textTable.setHeight(row++, 12); textTable.add(scoreText, 1, row++); textTable.add(scoreCardsText, 1, row++); textTable.setHeight(row++, 12); textTable.add(points, 1, row++); textTable.add(pointsText, 1, row++); textTable.setHeight(row++, 12); textTable.add(averagepoints, 1, row++); textTable.add(averageText, 1, row++); textTable.setHeight(row++, 12); textTable.add(clubOrderText, 1, row++); textTable.add(clubText, 1, row); add(textTable); } private ScorecardBusiness getScorecardBusiness(IWApplicationContext iwac) { try { return (ScorecardBusiness) IBOLookup.getServiceInstance(iwac, ScorecardBusiness.class); } catch (IBOLookupException ile) { throw new IBORuntimeException(ile); } } }