/** * Update given group in specific domain * * @param group */ @Override public void updateGroup(Group group) throws Exception { Group specificGroup = new Group(group); try { // Set supergroup specific Id if (StringUtil.isDefined(group.getSuperGroupId())) { // Get the user information GroupRow gr = getOrganization().group.getGroup(idAsInt(group.getSuperGroupId())); if (gr == null) { throw new AdminException( "DomainDriverManager.updateGroup", SilverpeasException.ERROR, "admin.EX_ERR_GROUP_NOT_FOUND", "group Id: '" + group.getSuperGroupId() + "'"); } specificGroup.setSuperGroupId(gr.specificId); } // Set subUsers specific Id specificGroup.setUserIds( translateUserIdsToSpecificIds(idAsInt(group.getDomainId()), group.getUserIds())); // Get the group information GroupRow gr = getOrganization().group.getGroup(idAsInt(group.getId())); if (gr == null) { throw new AdminException( "DomainDriverManager.updateGroup", SilverpeasException.ERROR, "admin.EX_ERR_GROUP_NOT_FOUND", "group Id: '" + group.getId() + "'"); } // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(gr.domainId); specificGroup.setId(gr.specificId); // Update Group in specific domain domainDriver.updateGroup(specificGroup); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.updateGroup", SilverpeasException.ERROR, "admin.EX_ERR_UPDATE_GROUP", "group Id: '" + group.getId() + "'", e); } }
/** * return group with given id (contains list of user ids for this group) * * @param groupId * @return Group */ @Override public Group getGroup(String groupId) throws Exception { Group group = null; try { // Set the OrganizationSchema (if not already done) getOrganizationSchema(); // Get the user information GroupRow gr = getOrganization().group.getGroup(idAsInt(groupId)); if (gr == null) { throw new AdminException( "DomainDriverManager.getGroup", SilverpeasException.ERROR, "admin.EX_ERR_GROUP_NOT_FOUND", "group Id: '" + groupId + "'"); } // Get a DomainDriver instance DomainDriver domainDriver = this.getDomainDriver(gr.domainId); // Get Group detail from specific domain group = domainDriver.getGroup(gr.specificId); // Fill silverpeas info of group details group.setId(groupId); group.setSpecificId(gr.specificId); group.setDomainId(idAsString(gr.domainId)); } catch (AdminException e) { throw new AdminException( "DomainDriverManager.getGroup", SilverpeasException.ERROR, "admin.EX_ERR_GET_GROUP", "group Id: '" + groupId + "'", e); } finally { releaseOrganizationSchema(); } return group; }
/** * Displays a given Research Group page for a HTTP Get, or creates a new Group for a HTTP Post * * <p>- Requires a cookie for the session user - Requires a groupId request parameter for a GET - * Requires a groupName, description, createdByUserId request parameters for a POST * * @param req The HTTP Request * @param res The HTTP Response */ public void researchgroupAction(HttpServletRequest req, HttpServletResponse res) { // Ensure there is a cookie for the session user if (AccountController.redirectIfNoCookie(req, res)) return; Map<String, Object> viewData = new HashMap<String, Object>(); viewData.put("title", "Research Group"); if (req.getMethod() == HttpMethod.Get) { // Load group data into Map GroupManager gm = new GroupManager(); int groupId = Integer.parseInt(req.getParameter("groupId")); Group group = gm.get(groupId); if (group != null) { // Load Group into map viewData.put("group", group); // Load group members into Map List<String> groupMembers = gm.getGroupMembers(groupId); viewData.put("groupMembers", groupMembers); // Load meetings into map MeetingManager meetMan = new MeetingManager(); List<Meeting> groupMeetings = meetMan.getGroupMeetings(groupId); viewData.put("groupMeetings", groupMeetings); // Load Document Data into Map DocumentManager docMan = new DocumentManager(); List<Document> groupDocuments = docMan.getGroupDocuments(groupId); viewData.put("groupDocuments", groupDocuments); // Load discussion threads DiscussionManager dm = new DiscussionManager(); viewData.put("groupDiscussions", dm.getThreads(groupId)); // Check if the user is a member boolean isMember = false; HttpSession session = req.getSession(); Session userSession = (Session) session.getAttribute("userSession"); User user = userSession.getUser(); for (Group g : gm.getAllGroups(user.getId())) { if (g.getId() == group.getId()) { isMember = true; break; } } viewData.put("notMember", !isMember); // View group page. view(req, res, "/views/group/ResearchGroup.jsp", viewData); } else { httpNotFound(req, res); } } else if (req.getMethod() == HttpMethod.Post) { // Create Group // Get data from parameters String groupName = req.getParameter("groupName"); String description = req.getParameter("description"); int adminId = Integer.parseInt(req.getParameter("createdByUserId")); // Create the Group GroupManager groupMan = new GroupManager(); Group group = new Group(); group.setGroupName(groupName); group.setDescription(description); group.setCoordinatorId(adminId); // Create the mapping groupMan.createGroup(group); int groupId = groupMan.getIdFor(group); groupMan.createMapping(groupId, adminId); group.setId(groupId); // Update the User Session to show new group HttpSession session = req.getSession(); Session userSession = (Session) session.getAttribute("userSession"); User admin = userSession.getUser(); admin.getGroups().add(group); // Show the Group Page viewData.put("groupName", group.getGroupName()); List<String> groupMembers = groupMan.getGroupMembers(groupId); viewData.put("groupMembers", groupMembers); view(req, res, "/views/group/ResearchGroup.jsp", viewData); } }