package com.idega.core.user.presentation; import java.util.Iterator; import java.util.List; import com.idega.core.data.GenericGroup; import com.idega.core.user.business.UserGroupBusiness; import com.idega.core.user.data.User; import com.idega.presentation.IWContext; import com.idega.presentation.Page; import com.idega.presentation.Table; import com.idega.presentation.text.Text; import com.idega.presentation.ui.IFrame; /** * Title: User * Description: * Copyright: Copyright (c) 2001 * Company: idega.is * @author 2000 - idega team - <a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a> * @version 1.0 */ public class GroupMembershipTab extends UserGroupTab { //private Link addLink; private IFrame groupMembersFrame; private IFrame userMembersFrame; // public static final String PARAMETER_GROUP_ID = "ic_group_id"; public static final String SESSIONADDRESS_USERGROUPS_DIRECTLY_RELATED = "ic_group_ic_group_direct_GMT"; public static final String SESSIONADDRESS_USERGROUPS_NOT_DIRECTLY_RELATED = "ic_group_ic_group_not_direct_GMT"; public static final String SESSIONADDRESS_USERS_DIRECTLY_RELATED = "ic_user_ic_group_direct_GMT"; public static final String SESSIONADDRESS_USERS_NOT_DIRECTLY_RELATED = "ic_user_ic_group_not_direct_GMT"; protected Text groupMembers; protected Text userMembers; public GroupMembershipTab() { super(); this.setName("Members"); } public void initFieldContents() { //addLink.setWindowToOpen(GroupMembershipTab.UserGroupSetter.class); //addLink.addParameter(GroupMembershipTab.PARAMETER_GROUP_ID,this.getUserId()); } public void updateFieldsDisplayStatus() { /**@todo: implement this com.idega.core.user.presentation.UserTab abstract method*/ } public void initializeFields() { this.groupMembersFrame = new IFrame("ic_group_group_members",GroupMembershipTab.GroupList.class); this.groupMembersFrame.setHeight(140); this.groupMembersFrame.setWidth(370); this.groupMembersFrame.setScrolling(IFrame.SCROLLING_YES); this.userMembersFrame = new IFrame("ic_user_group_members",GroupMembershipTab.UserList.class); this.userMembersFrame.setHeight(140); this.userMembersFrame.setWidth(370); this.userMembersFrame.setScrolling(IFrame.SCROLLING_YES); //addLink = new Link(" Add "); } public void initializeTexts() { this.groupMembers = this.getTextObject(); this.groupMembers.setText("Groups :"); this.userMembers = this.getTextObject(); this.userMembers.setText("Users :"); } public boolean store(IWContext iwc) { return true; } public void lineUpFields() { this.resize(1,4); this.add(this.groupMembers,1,1); this.add(this.groupMembersFrame,1,2); this.add(this.userMembers,1,3); this.add(this.userMembersFrame,1,4); this.setHeight(1,"30"); this.setHeight(3,super.rowHeight); //this.setHeight(3,super.rowHeight); //this.add(addLink,1,3); } public boolean collect(IWContext iwc) { return true; } public void initializeFieldNames() { /**@todo: implement this com.idega.core.user.presentation.UserTab abstract method*/ } public void initializeFieldValues() { /**@todo: implement this com.idega.core.user.presentation.UserTab abstract method*/ } public void dispose(IWContext iwc){ iwc.removeSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_DIRECTLY_RELATED); iwc.removeSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_NOT_DIRECTLY_RELATED); } public void main(IWContext iwc) throws Exception { Object obj = UserGroupBusiness.getGroupsContainedDirectlyRelated(this.getGroupId()); if(obj != null){ iwc.setSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_DIRECTLY_RELATED,obj); }else{ iwc.removeSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_DIRECTLY_RELATED); } Object ob = UserGroupBusiness.getGroupsContainedNotDirectlyRelated(this.getGroupId()); if(ob != null){ iwc.setSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_NOT_DIRECTLY_RELATED,ob); }else{ iwc.removeSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_NOT_DIRECTLY_RELATED); } Object obju = UserGroupBusiness.getUsersContainedDirectlyRelated(this.getGroupId()); if(obju != null){ iwc.setSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERS_DIRECTLY_RELATED,obju); }else{ iwc.removeSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERS_DIRECTLY_RELATED); } /** * @todo check */ Object obu = UserGroupBusiness.getUsersContainedNotDirectlyRelated(this.getGroupId()); if(obu != null){ iwc.setSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERS_NOT_DIRECTLY_RELATED,obu); }else{ iwc.removeSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERS_NOT_DIRECTLY_RELATED); } } public static class GroupList extends Page { private List groups = null; public GroupList(){ super(); } public Table getGroupTable(IWContext iwc){ List direct = (List)iwc.getSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_DIRECTLY_RELATED); List notDirect = (List)iwc.getSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERGROUPS_NOT_DIRECTLY_RELATED); Table table = null; Iterator iter = null; int row = 1; if(direct != null && notDirect != null){ table = new Table(5,direct.size()+notDirect.size()); iter = direct.iterator(); while (iter.hasNext()) { Object item = iter.next(); table.add("D",1,row); table.add(((GenericGroup)item).getName(),3,row++); } iter = notDirect.iterator(); while (iter.hasNext()) { Object item = iter.next(); table.add("E",1,row); table.add(((GenericGroup)item).getName(),3,row++); } } else if(direct != null){ table = new Table(5,direct.size()); iter = direct.iterator(); while (iter.hasNext()) { Object item = iter.next(); table.add("D",1,row); table.add(((GenericGroup)item).getName(),3,row++); } } if(table != null){ table.setWidth("100%"); table.setWidth(1,"10"); table.setWidth(2,"3"); table.setWidth(4,"10"); table.setWidth(5,"10"); } return table; } public void main(IWContext iwc) throws Exception { this.getParentPage().setAllMargins(0); Table tb = getGroupTable(iwc); if(tb != null){ this.add(tb); } } } // InnerClass public static class UserList extends Page { private List groups = null; public UserList(){ super(); } public Table getUserTable(IWContext iwc){ List direct = (List)iwc.getSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERS_DIRECTLY_RELATED); List notDirect = (List)iwc.getSessionAttribute(GroupMembershipTab.SESSIONADDRESS_USERS_NOT_DIRECTLY_RELATED); Table table = null; Iterator iter = null; int row = 1; if(direct != null && notDirect != null){ table = new Table(5,direct.size()+notDirect.size()); iter = direct.iterator(); while (iter.hasNext()) { Object item = iter.next(); table.add("D",1,row); table.add(((User)item).getName(),3,row++); } iter = notDirect.iterator(); while (iter.hasNext()) { Object item = iter.next(); table.add("E",1,row); table.add(((User)item).getName(),3,row++); } } else if(direct != null){ table = new Table(5,direct.size()); iter = direct.iterator(); while (iter.hasNext()) { Object item = iter.next(); table.add("D",1,row); table.add(((User)item).getName(),3,row++); } } if(table != null){ table.setWidth("100%"); table.setWidth(1,"10"); table.setWidth(2,"3"); table.setWidth(4,"10"); table.setWidth(5,"10"); } return table; } public void main(IWContext iwc) throws Exception { this.getParentPage().setAllMargins(0); Table tb = getUserTable(iwc); if(tb != null){ this.add(tb); } } } // InnerClass /* public static class UserGroupSetter extends Window { private static final String FIELDNAME_SELECTION_DOUBLE_BOX = "related_groups"; public UserGroupSetter(){ super("add user to groups"); this.setAllMargins(0); this.setWidth(400); this.setHeight(300); this.setBackgroundColor("#d4d0c8"); } private void LineUpElements(IWContext iwc){ Form form = new Form(); Table frameTable = new Table(3,3); frameTable.setWidth("100%"); frameTable.setHeight("100%"); //frameTable.setBorder(1); SelectionDoubleBox sdb = new SelectionDoubleBox(FIELDNAME_SELECTION_DOUBLE_BOX,"Not in","In"); SelectionBox left = sdb.getLeftBox(); left.setHeight(8); left.selectAllOnSubmit(); SelectionBox right = sdb.getRightBox(); right.setHeight(8); right.selectAllOnSubmit(); String stringUserId = iwc.getParameter(GroupMembershipTab.PARAMETER_GROUP_ID); int userId = Integer.parseInt(stringUserId); form.addParameter(GroupMembershipTab.PARAMETER_GROUP_ID,stringUserId); List directGroups = UserBusiness.getUserGroupsDirectlyRelated(userId); Iterator iter = null; if(directGroups != null){ iter = directGroups.iterator(); while (iter.hasNext()) { Object item = iter.next(); right.addElement(Integer.toString(((GenericGroup)item).getID()),((GenericGroup)item).getName()); } } List notDirectGroups = UserBusiness.getAllGroupsNotDirectlyRelated(userId); if(notDirectGroups != null){ iter = notDirectGroups.iterator(); while (iter.hasNext()) { Object item = iter.next(); left.addElement(Integer.toString(((GenericGroup)item).getID()),((GenericGroup)item).getName()); } } frameTable.setAlignment(2,2,"center"); frameTable.add("UserId: "+userId,2,1); frameTable.add(sdb,2,2); frameTable.add(new SubmitButton(" Save ","save","true"),2,3); frameTable.setAlignment(2,3,"right"); form.add(frameTable); this.add(form); } public void main(IWContext iwc) throws Exception { String save = iwc.getParameter("save"); if(save != null){ String stringUserId = iwc.getParameter(GroupMembershipTab.PARAMETER_GROUP_ID); int userId = Integer.parseInt(stringUserId); String[] related = iwc.getParameterValues(UserGroupSetter.FIELDNAME_SELECTION_DOUBLE_BOX); User user = ((com.idega.core.user.data.UserHome)com.idega.data.IDOLookup.getHomeLegacy(User.class)).findByPrimaryKeyLegacy(userId); List currentRelationShip = UserBusiness.getUserGroupsDirectlyRelated(user); if(related != null){ if(currentRelationShip != null){ for (int i = 0; i < related.length; i++) { int id = Integer.parseInt(related[i]); GenericGroup gr = ((com.idega.core.data.GenericGroupHome)com.idega.data.IDOLookup.getHomeLegacy(GenericGroup.class)).findByPrimaryKeyLegacy(id); if(!currentRelationShip.remove(gr)){ //user.addTo(gr); gr.addUser(user); } } Iterator iter = currentRelationShip.iterator(); while (iter.hasNext()) { Object item = iter.next(); //user.removeFrom((GenericGroup)item); ((GenericGroup)item).removeUser(user); } } else{ for (int i = 0; i < related.length; i++) { //user.addTo(GenericGroup.class,Integer.parseInt(related[i])); //((com.idega.core.data.GenericGroupHome)com.idega.data.IDOLookup.getHomeLegacy(GenericGroup.class)).findByPrimaryKeyLegacy(Integer.parseInt(related[i])).addUser(user); com.idega.core.data.GenericGroupBMPBean.addUser(Integer.parseInt(related[i]),user); } } }else if (currentRelationShip != null){ Iterator iter = currentRelationShip.iterator(); while (iter.hasNext()) { Object item = iter.next(); ((GenericGroup)item).removeUser(user); } } this.close(); this.setParentToReload(); } else { LineUpElements(iwc); } */ /* Enumeration enum = iwc.getParameterNames(); System.err.println("--------------------------------------------------"); if(enum != null){ while (enum.hasMoreElements()) { Object item = enum.nextElement(); if(item.equals("save")){ this.close(); } String val[] = iwc.getParameterValues((String)item); System.err.print(item+" = "); if(val != null){ for (int i = 0; i < val.length; i++) { System.err.print(val[i]+", "); } } System.err.println(); } } */ // } // } // InnerClass }