/* * $Id: FixClubsWithSpecialConnection.java,v 1.2 2005/10/20 11:35:00 palli Exp $ Created on Apr 28, 2005 * * Copyright (C) 2005 Idega Software hf. All Rights Reserved. * * This software is the proprietary information of Idega hf. Use is subject to * license terms. */ package is.idega.idegaweb.member.isi; import is.idega.idegaweb.member.util.IWMemberConstants; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import com.idega.data.IDOLookup; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.user.data.Group; import com.idega.user.data.GroupHome; /** * * Last modified: $Date: 2005/10/20 11:35:00 $ by $Author: palli $ * * @author <a href="mailto:palli@idega.com">palli </a> * @version $Revision: 1.2 $ */ public class FixClubsWithSpecialConnection extends Block { private static final String CLUB_CONNECTION = IWMemberConstants.META_DATA_CLUB_LEAGUE_CONNECTION; private static final String DIVISION_CONNECTION = IWMemberConstants.META_DATA_DIVISION_LEAGUE_CONNECTION; private static final String CLUB_MAKE = IWMemberConstants.META_DATA_CLUB_MAKE; private static final String MULTI_DIVISION_CONNECTION = IWMemberConstants.META_DATA_CLUB_STATUS_MULTI_DIVISION_CLUB; private static final String SINGLE_DIVISION_CONNECTION = IWMemberConstants.META_DATA_CLUB_STATUS_SINGLE_DIVISION_CLUB; private static final String TYPE_CLUB = IWMemberConstants.GROUP_TYPE_CLUB; private static final String TYPE_DIVISION = IWMemberConstants.GROUP_TYPE_CLUB_DIVISION; /* * (non-Javadoc) * * @see com.idega.presentation.PresentationObject#main(com.idega.presentation.IWContext) */ public void main(IWContext iwc) throws Exception { super.main(iwc); Collection specialConnectionClub = findAllClubsWithSpecialConnection(iwc); removeParentless(specialConnectionClub); /*System.out.println("number of clubs = " + specialConnectionClub.size()); Iterator it = specialConnectionClub.iterator(); while (it.hasNext()) { Group club = (Group) it.next(); updateClub(club); }*/ } private Collection removeParentless(Collection clubs) { System.out.println("number of clubs before removing parentless = " + clubs.size()); ArrayList clubsWithParents = new ArrayList(); Iterator it = clubs.iterator(); while (it.hasNext()) { Group club = (Group) it.next(); List parents = club.getParentGroups(); if (parents != null && !parents.isEmpty()) { clubsWithParents.add(club); } } System.out.println("number of clubs after removing parentless = " + clubsWithParents.size()); return clubsWithParents; } private Collection findAllClubsWithSpecialConnection(IWContext iwc) { Collection clubs = null; try { GroupHome gHome = (GroupHome) IDOLookup.getHome(Group.class); clubs = gHome.findGroupsByMetaData(CLUB_CONNECTION, null); } catch (Exception e) { } return clubs; } private Group findDivision(Group club) { Collection children = club.getChildren(); Iterator it = children.iterator(); while (it.hasNext()) { Group child = (Group) it.next(); if (child.getGroupType().equals(TYPE_DIVISION)) { return child; } } return null; } private void updateClub(Group club) { Group division = findDivision(club); String connection = club.getMetaData(CLUB_CONNECTION); if (!club.getGroupType().equals(TYPE_CLUB)) { System.out.println("Group " + club.getName() + " is not a club"); return; } club.removeMetaData(CLUB_CONNECTION); club.setMetaData(CLUB_MAKE, MULTI_DIVISION_CONNECTION); club.store(); if (division != null) { String divisionConnection = division.getMetaData(DIVISION_CONNECTION); if (divisionConnection != null && !"".equals(divisionConnection)) { System.out.println("Already a connection on division for club " + club.getName()); return; } if (connection != null && !"".equals(connection)) { division.setMetaData(DIVISION_CONNECTION, connection); division.store(); } else { System.out.println("No connection defined for club " + club.getName()); } } else { System.out.println("No division for club " + club.getName()); } } }