/* * Created on Feb 17, 2004 * * To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */ package is.idega.idegaweb.member.isi.block.clubs.presentation; import is.idega.idegaweb.member.isi.block.clubs.business.ClubInfoBusinessBean; import is.idega.idegaweb.member.util.IWMemberConstants; import java.text.Collator; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import com.idega.business.IBOLookup; import com.idega.business.IBOLookupException; import com.idega.presentation.Block; import com.idega.presentation.CSSMultiLevelMenu; import com.idega.presentation.IWContext; import com.idega.presentation.CSSMultiLevelMenu.CSSMenu; import com.idega.presentation.text.HorizontalRule; import com.idega.presentation.text.Link; import com.idega.user.business.GroupBusiness; import com.idega.user.data.Group; /** * @author <a href="mailto:jonas@idega.is>Jonas</a> */ public class ClubInfoBar extends Block { public static final String IW_BUNDLE_IDENTIFIER = "is.idega.idegaweb.member.isi"; public static final String PARAM_NAME_DIVISION_ID = "division_id"; public static final String PARAM_NAME_SHOW_PLAYERS_CALENDAR_LINK = "show_pla_cal_links"; private String pageId = null; private String divisionInfoPageId = null; public static final String PARAM_NAME_GROUP_ID = "group_id"; private String _callingDomain = null; public void main(IWContext iwc) { this.divisionInfoPageId = iwc.getParameter(ClubPageIncluder.PARAM_DIVISION_INFO_PAGE_ID); this.pageId = iwc.getParameter(ClubPageIncluder.PARAM_CALLING_PAGE_ID); this._callingDomain = iwc.getParameter(ClubPageIncluder.PARAM_CALLING_DOMAIN); _collator = Collator.getInstance(iwc.getLocale()); Group club = getClub(iwc); if(club==null) { System.out.println("No club to show division menu for"); return; } Group mainBoard = getMainBoard(club); this._biz = getBusiness(iwc); Collection divisions = this._biz.getDivisionsForClub(club); Iterator divIter = divisions.iterator(); CSSMultiLevelMenu menuBar = new CSSMultiLevelMenu(); while(divIter.hasNext()) { Group division = (Group) divIter.next(); addDivisionToMenuBar(menuBar, division, mainBoard); } add(menuBar); } private void addDivisionToMenuBar(CSSMultiLevelMenu menuBar, Group division, Group clubMainBoard) { List playerGroups = new ArrayList(division.getChildGroups()); String divisionId = division.getPrimaryKey().toString(); Group mainBoard = getMainBoard(division); if(mainBoard==null && clubMainBoard!=null) { playerGroups.add(clubMainBoard); } Collections.sort(playerGroups, new Comparator() { public int compare(Object arg0, Object arg1) { Group g0 = (Group) arg0; Group g1 = (Group) arg1; String t0 = g0.getGroupType(); String t1 = g1.getGroupType(); int result = _collator.compare( g0.getName(), g1.getName()); if(!t0.equals(t1)) { if(IWMemberConstants.GROUP_TYPE_CLUB_PLAYER.equals(t0)) { result = 1; } else if(IWMemberConstants.GROUP_TYPE_CLUB_PLAYER.equals(t1)) { result = -1; } else { if(IWMemberConstants.GROUP_TYPE_CLUB_TRAINER.equals(t0)) { result = -1; } else { result = 1; } } } return result; } }); CSSMenu topLevelMenu; if(this.divisionInfoPageId!=null) { String divName = division.getShortName(); if (divName == null || divName.equals("")) { divName = division.getName(); } Link link = new Link(divName); String divisionHomepageURL = division.getHomePageURL(); if(divisionHomepageURL!=null && !"".equals(divisionHomepageURL) ){ link.setURL(divisionHomepageURL); } else{ link.setPage(Integer.parseInt(this.divisionInfoPageId)); if(this._callingDomain!=null && this._callingDomain.length()>0) { link.setHostname(this._callingDomain); } } topLevelMenu = menuBar.createCSSMenu(division.getName(), link); } else { topLevelMenu = menuBar.createCSSMenu(division.getName()); } menuBar.add(topLevelMenu); Iterator playerGroupIter = playerGroups.iterator(); boolean flockInserted = false; while(playerGroupIter.hasNext()) { Group playerGroup = (Group) playerGroupIter.next(); if(playerGroup==null) { continue; } boolean isFlock = IWMemberConstants.GROUP_TYPE_CLUB_PLAYER.equals(playerGroup.getGroupType()); if(isFlock && !flockInserted) { topLevelMenu.add(new HorizontalRule()); flockInserted = true; } if(showGroup(playerGroup)) { Link link = new Link(playerGroup.getName()); if(this._callingDomain!=null && this._callingDomain.length()>0) { link.setHostname(this._callingDomain); } link.addParameter(PARAM_NAME_GROUP_ID, playerGroup.getPrimaryKey().toString()); if(this.pageId!=null) { link.setPage(Integer.parseInt(this.pageId)); } link.addParameter(IWMemberConstants.REQUEST_PARAMETER_SELECTED_GROUP_ID,playerGroup.getPrimaryKey().toString()); link.addParameter(PARAM_NAME_DIVISION_ID, divisionId); if(!isFlock) { // if not flock, the "players" and "calendar" link are to be hidden on the destination page, must use Filter block on that page // that filters based on the parameter PARAM_NAME_SHOW_PLAYERS_CALENDAR_LINK link.addParameter(PARAM_NAME_SHOW_PLAYERS_CALENDAR_LINK, "false"); } topLevelMenu.add(link); } } } private Group getMainBoard(Group group) { Collection mainBoardCol = group.getChildGroups(new String[] {IWMemberConstants.GROUP_TYPE_CLUB_DIVISION_COMMITTEE, IWMemberConstants.GROUP_TYPE_CLUB_COMMITTEE}, true); Group boardsGroup = null; if(mainBoardCol!=null && mainBoardCol.size()>0) { boardsGroup = (Group) mainBoardCol.iterator().next(); } Group mainBoard = null; if(boardsGroup!=null) { Iterator iter = boardsGroup.getChildrenIterator(); while(iter.hasNext()) { Group child = (Group) iter.next(); if(IWMemberConstants.GROUP_TYPE_CLUB_COMMITTEE_MAIN.equals(child.getGroupType())) { mainBoard = child; } } } return mainBoard; } private boolean showGroup(Group group) { String type = group.getGroupType(); boolean isFlock = IWMemberConstants.GROUP_TYPE_CLUB_PLAYER.equals(type); boolean isTrainerGroup = IWMemberConstants.GROUP_TYPE_CLUB_DIVISION_TRAINER.equals(type); boolean isMainBoard = IWMemberConstants.GROUP_TYPE_CLUB_COMMITTEE_MAIN.equals(type); return isFlock || isTrainerGroup || isMainBoard; } public String getBundleIdentifier() { return IW_BUNDLE_IDENTIFIER; } private Group getClub(IWContext iwc) { String clubId = iwc.getParameter(ClubPageIncluder.PARAM_ROOT_CLUB_ID); Group club = null; if(clubId!=null) { try { GroupBusiness groupBiz = getGroupBusiness(iwc); club = groupBiz.getGroupByGroupID(Integer.parseInt(clubId)); } catch (Exception e) { e.printStackTrace(); } } else { System.out.println("no club id found"); } return club; } private ClubInfoBusinessBean getBusiness(IWContext iwc) { try { return (ClubInfoBusinessBean) IBOLookup.getServiceInstance(iwc.getApplicationContext(), ClubInfoBusinessBean.class); } catch (Exception e) { e.printStackTrace(); return null; } } private GroupBusiness getGroupBusiness(IWContext iwc) { try { return (GroupBusiness) IBOLookup.getServiceInstance(iwc.getApplicationContext(), GroupBusiness.class); } catch (IBOLookupException e) { e.printStackTrace(); return null; } } //private int _clubId = 330185; private int _menuCount = 0; private ClubInfoBusinessBean _biz; private static Collator _collator = null; }