/* * Copyright (C) 2003 Idega software. All Rights Reserved. * * This software is the proprietary information of Idega software. Use is * subject to license terms. * */ package is.idega.idegaweb.member.presentation; import is.idega.idegaweb.member.business.MemberUserBusiness; import is.idega.idegaweb.member.business.plugins.ClubInformationPluginBusiness; import is.idega.idegaweb.member.util.IWMemberConstants; import java.rmi.RemoteException; import java.text.Collator; import java.util.Collections; import java.util.Comparator; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import javax.ejb.FinderException; import com.idega.idegaweb.IWApplicationContext; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWResourceBundle; import com.idega.idegaweb.help.presentation.Help; 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.DateInput; import com.idega.presentation.ui.DropdownMenu; import com.idega.presentation.ui.TextInput; import com.idega.user.data.Group; import com.idega.user.data.GroupHome; import com.idega.user.presentation.GroupChooser; import com.idega.user.presentation.UserGroupTab; import com.idega.util.IWTimestamp; /** * @author palli */ public class ClubDivisionTab extends UserGroupTab{ private static final String IW_BUNDLE_IDENTIFIER = "is.idega.idegaweb.member"; private static final String TAB_NAME = "cdiv_tab_name"; private static final String DEFAULT_TAB_NAME = "Club Division"; private static final String MEMBER_HELP_BUNDLE_IDENTIFIER = "is.idega.idegaweb.member.isi"; private static final String HELP_TEXT_KEY = "club_division_tab"; private TextInput numberField; private TextInput ssnField; private DateInput foundedField; private DropdownMenu connectionToSpecialField; private GroupChooser boardGroupField; private Text numberText; private Text ssnText; private Text foundedText; private Text connectionToSpecialText; private Text boardGroupText; private String numberFieldName; private String ssnFieldName; private String foundedFieldName; private String connectionToSpecialFieldName; private String boardGroupFieldName; public ClubDivisionTab() { super(); IWContext iwc = IWContext.getInstance(); IWResourceBundle iwrb = getResourceBundle(iwc); setName(iwrb.getLocalizedString(TAB_NAME, DEFAULT_TAB_NAME)); } public ClubDivisionTab(Group group) { this(); setGroupId(((Integer) group.getPrimaryKey()).intValue()); } public String getBundleIdentifier() { return IW_BUNDLE_IDENTIFIER; } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#initializeFieldNames() */ public void initializeFieldNames() { this.numberFieldName = "cdiv_number"; this.ssnFieldName = "cdiv_ssn"; this.foundedFieldName = "cdiv_founded"; this.connectionToSpecialFieldName = "cdiv_special"; this.boardGroupFieldName = "cdiv_board"; } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#initializeFieldValues() */ public void initializeFieldValues() { this.fieldValues = new Hashtable(); this.fieldValues.put(this.numberFieldName, ""); this.fieldValues.put(this.ssnFieldName, ""); this.fieldValues.put(this.foundedFieldName, new IWTimestamp().getDate() .toString()); this.fieldValues.put(this.connectionToSpecialFieldName, ""); this.fieldValues.put(this.boardGroupFieldName, ""); } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#updateFieldsDisplayStatus() */ public void updateFieldsDisplayStatus() { String number = (String) this.fieldValues.get(this.numberFieldName); this.numberField.setContent(number); if(number != null && !number.equals("")) { this.numberField.setDisabled(true); } this.ssnField.setContent((String) this.fieldValues.get(this.ssnFieldName)); this.foundedField.setContent((String) this.fieldValues.get(this.foundedFieldName)); String connection = (String) this.fieldValues .get(this.connectionToSpecialFieldName); this.connectionToSpecialField.setSelectedElement(connection); if (connection != null && !connection.equals("")) { this.connectionToSpecialField.setDisabled(true); } try { GroupHome home = (GroupHome) com.idega.data.IDOLookup .getHome(Group.class); String groupId = (String) this.fieldValues.get(this.boardGroupFieldName); if (groupId != null && !groupId.equals("")) { try { int index = groupId.indexOf("_"); groupId = groupId.substring(index + 1); } catch (Exception e) { e.printStackTrace(); } Group group = home.findByPrimaryKey(new Integer( groupId)); this.boardGroupField.setSelectedGroup(groupId, group.getName()); } } catch (Exception e) { e.printStackTrace(); } } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#initializeFields() */ public void initializeFields() { IWContext iwc = IWContext.getInstance(); IWResourceBundle iwrb = getResourceBundle(iwc); this.numberField = new TextInput(this.numberFieldName); this.ssnField = new TextInput(this.ssnFieldName); // _ssnField.setAsIcelandicSSNumber("Vart�lupr�fun stemmir ekki"); this.foundedField = new DateInput(this.foundedFieldName); this.connectionToSpecialField = new DropdownMenu( this.connectionToSpecialFieldName); List special = null; try { special = (List) ((GroupHome) com.idega.data.IDOLookup .getHome(Group.class)).findGroupsByType("iwme_league"); } catch (Exception ex) { ex.printStackTrace(); } if (special != null) { final Collator collator = Collator.getInstance(iwc.getLocale()); Collections.sort(special,new Comparator() { public int compare(Object arg0, Object arg1) { return collator.compare(((Group) arg0).getName(), ((Group) arg1).getName()); } }); this.connectionToSpecialField.addMenuElement("-1",iwrb.getLocalizedString("clubinformationtab.choose_reg_un","Choose a regional union...")); Iterator it = special.iterator(); while (it.hasNext()) { Group spec = (Group) it.next(); this.connectionToSpecialField.addMenuElement(((Integer) spec .getPrimaryKey()).intValue(), spec.getName()); } } this.boardGroupField = new GroupChooser(this.boardGroupFieldName); } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#initializeTexts() */ public void initializeTexts() { IWContext iwc = IWContext.getInstance(); IWResourceBundle iwrb = getResourceBundle(iwc); this.numberText = new Text(iwrb.getLocalizedString(this.numberFieldName, "Number")); this.numberText.setBold(); this.ssnText = new Text(iwrb.getLocalizedString(this.ssnFieldName, "SSN") + ":"); this.ssnText.setBold(); this.foundedText = new Text(iwrb.getLocalizedString(this.foundedFieldName, "Founded") + ":"); this.foundedText.setBold(); this.connectionToSpecialText = new Text(iwrb.getLocalizedString(this.connectionToSpecialFieldName, "Connection to special") + ":"); this.connectionToSpecialText.setBold(); this.boardGroupText = new Text(iwrb.getLocalizedString(this.boardGroupFieldName, "Board") + ":"); this.boardGroupText.setBold(); } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#lineUpFields() */ public void lineUpFields() { Table t = new Table(2, 3); t.setCellpadding(5); t.setCellspacing(0); t.setWidth(Table.HUNDRED_PERCENT); t.add(this.numberText, 1, 1); t.add(Text.getBreak(), 1, 1); t.add(this.numberField, 1, 1); t.add(this.ssnText, 2, 1); t.add(Text.getBreak(), 2, 1); t.add(this.ssnField, 2, 1); t.add(this.foundedText, 1, 2); t.add(Text.getBreak(), 1, 2); t.add(this.foundedField, 1, 2); t.add(this.connectionToSpecialText, 2, 2); t.add(Text.getBreak(), 2, 2); t.add(this.connectionToSpecialField, 2, 2); t.add(this.boardGroupText, 1, 3); t.add(Text.getBreak(), 1, 3); t.add(this.boardGroupField, 1, 3); add(t); } public void main(IWContext iwc) { getPanel().addHelpButton(getHelpButton()); } /* * (non-Javadoc) * * @see com.idega.util.datastructures.Collectable#collect(com.idega.presentation.IWContext) */ public boolean collect(IWContext iwc) { if (iwc != null) { String number = iwc.getParameter(this.numberFieldName); String ssn = iwc.getParameter(this.ssnFieldName); String founded = iwc.getParameter(this.foundedFieldName); String connection = iwc.getParameter(this.connectionToSpecialFieldName); String boardGroup = iwc.getParameter(this.boardGroupFieldName); if (number != null) { this.fieldValues.put(this.numberFieldName, number); } else { this.fieldValues.put(this.numberFieldName, ""); } if (ssn != null) { this.fieldValues.put(this.ssnFieldName, ssn); } else { this.fieldValues.put(this.ssnFieldName, ""); } if (founded != null) { this.fieldValues.put(this.foundedFieldName, founded); } else { this.fieldValues.put(this.foundedFieldName, ""); } if (connection != null) { this.fieldValues.put(this.connectionToSpecialFieldName, connection); } else { this.fieldValues.put(this.connectionToSpecialFieldName, ""); } if (boardGroup != null) { boardGroup = boardGroup.substring(boardGroup.lastIndexOf("_") + 1); this.fieldValues.put(this.boardGroupFieldName, boardGroup); } else { this.fieldValues.put(this.boardGroupFieldName, ""); } updateFieldsDisplayStatus(); } return true; } /* * (non-Javadoc) * * @see com.idega.util.datastructures.Collectable#store(com.idega.presentation.IWContext) */ public boolean store(IWContext iwc) { Group group; try { group = ((GroupHome) com.idega.data.IDOLookup .getHome(Group.class)).findByPrimaryKey(new Integer( getGroupId())); String number = (String) this.fieldValues.get(this.numberFieldName); String ssn = (String) this.fieldValues.get(this.ssnFieldName); String founded = (String) this.fieldValues.get(this.foundedFieldName); String connection = (String) this.fieldValues .get(this.connectionToSpecialFieldName); String board = (String) this.fieldValues.get(this.boardGroupFieldName); group.setMetaData(IWMemberConstants.META_DATA_DIVISION_NUMBER, number); group.setMetaData(IWMemberConstants.META_DATA_DIVISION_SSN, ssn); group.setMetaData(IWMemberConstants.META_DATA_DIVISION_FOUNDED, founded); // group.setMetaData("CLUBDIV_CONN", connection); String oldConnection = group.getMetaData(IWMemberConstants.META_DATA_DIVISION_LEAGUE_CONNECTION); if ((oldConnection == null || oldConnection.trim().equals("")) && connection != null) { String clubName = null; Group club = getMemberUserBusiness(iwc).getClubForGroup(group); if (club != null) { clubName = club.getName(); } group.setMetaData(IWMemberConstants.META_DATA_DIVISION_LEAGUE_CONNECTION, connection); group.store(); getClubInformationPluginBusiness(iwc).createSpecialConnection( connection, getGroupId(), clubName, iwc); } group.setMetaData(IWMemberConstants.META_DATA_DIVISION_BOARD,board); group.store(); } catch (RemoteException e) { e.printStackTrace(System.err); return false; } catch (FinderException e) { e.printStackTrace(System.err); return false; } return true; } /* * (non-Javadoc) * * @see com.idega.user.presentation.UserGroupTab#initFieldContents() */ public void initFieldContents() { Group group; try { group = ((GroupHome) com.idega.data.IDOLookup .getHome(Group.class)).findByPrimaryKey(new Integer( getGroupId())); String number = group.getMetaData(IWMemberConstants.META_DATA_DIVISION_NUMBER); String ssn = group.getMetaData(IWMemberConstants.META_DATA_DIVISION_SSN); String founded = group.getMetaData(IWMemberConstants.META_DATA_DIVISION_FOUNDED); String connection = group.getMetaData(IWMemberConstants.META_DATA_DIVISION_LEAGUE_CONNECTION); String board = group.getMetaData(IWMemberConstants.META_DATA_DIVISION_BOARD); if (number != null) { this.fieldValues.put(this.numberFieldName, number); } if (ssn != null) { this.fieldValues.put(this.ssnFieldName, ssn); } if (founded != null) { this.fieldValues.put(this.foundedFieldName, founded); } if (connection != null) { this.fieldValues.put(this.connectionToSpecialFieldName, connection); } if (board != null) { this.fieldValues.put(this.boardGroupFieldName, board); } updateFieldsDisplayStatus(); } catch (RemoteException e) { e.printStackTrace(System.err); } catch (FinderException e) { e.printStackTrace(System.err); } } public ClubInformationPluginBusiness getClubInformationPluginBusiness( IWApplicationContext iwc) { ClubInformationPluginBusiness business = null; if (business == null) { try { business = (ClubInformationPluginBusiness) com.idega.business.IBOLookup .getServiceInstance(iwc, ClubInformationPluginBusiness.class); } catch (java.rmi.RemoteException rme) { throw new RuntimeException(rme.getMessage()); } } return business; } public MemberUserBusiness getMemberUserBusiness(IWApplicationContext iwc) { MemberUserBusiness business = null; try { business = (MemberUserBusiness) com.idega.business.IBOLookup .getServiceInstance(iwc, MemberUserBusiness.class); } catch (java.rmi.RemoteException rme) { throw new RuntimeException(rme.getMessage()); } return business; } public Help getHelpButton() { IWContext iwc = IWContext.getInstance(); IWBundle iwb = getBundle(iwc); Help help = new Help(); Image helpImage = iwb.getImage("help.gif"); help.setHelpTextBundle(MEMBER_HELP_BUNDLE_IDENTIFIER); help.setHelpTextKey(HELP_TEXT_KEY); help.setImage(helpImage); return help; } }