/** * handle a click or select from the advanced menu * * @param httpServletRequest * @param httpServletResponse */ public void advancedMenu( HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs(); final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn(); GrouperSession grouperSession = null; Group group = null; try { grouperSession = GrouperSession.start(loggedInSubject); // make sure we are on the right group group = new SimpleMembershipUpdate().retrieveGroup(grouperSession); } catch (NoSessionException se) { throw se; } catch (ControllerDone cd) { throw cd; } catch (Exception se) { throw new RuntimeException("Error advanced menu: " + group + ", " + se.getMessage(), se); } finally { GrouperSession.stopQuietly(grouperSession); } String menuItemId = httpServletRequest.getParameter("menuItemId"); String menuEvent = httpServletRequest.getParameter("menuEvent"); boolean isOnClick = StringUtils.equals("onClick", menuEvent); // String menuHtmlId = httpServletRequest.getParameter("menuHtmlId"); // String menuRadioGroup = httpServletRequest.getParameter("menuRadioGroup"); String menuCheckboxChecked = httpServletRequest.getParameter("menuCheckboxChecked"); // guiResponseJs.addAction(GuiScreenAction.newAlert("Menu action: menuItemId: " + menuItemId // + ", menuHtmlId: " + menuHtmlId // + ", menuRadioGroup: " // + menuRadioGroup + ", menuCheckboxChecked: " + menuCheckboxChecked)); if (StringUtils.equals(menuItemId, "inviteLink")) { guiResponseJs.addAction( GuiScreenAction.newScript( "window.location = 'grouper.html?operation=InviteExternalSubjects.inviteExternalSubject&groupId=" + group.getUuid() + "'")); } else if (StringUtils.equals(menuItemId, "showGroupDetails")) { if (!isOnClick) { if (GrouperUtil.booleanValue(menuCheckboxChecked)) { guiResponseJs.addAction( GuiScreenAction.newHideShowNameToShow("simpleMembershipUpdateGroupDetails")); } else { guiResponseJs.addAction( GuiScreenAction.newHideShowNameToHide("simpleMembershipUpdateGroupDetails")); } } } else if (StringUtils.equals(menuItemId, "multiDelete")) { if (!isOnClick) { if (GrouperUtil.booleanValue(menuCheckboxChecked)) { guiResponseJs.addAction( GuiScreenAction.newHideShowNameToShow("simpleMembershipUpdateDeleteMultiple")); } else { guiResponseJs.addAction( GuiScreenAction.newHideShowNameToHide("simpleMembershipUpdateDeleteMultiple")); } } } else if (StringUtils.equals(menuItemId, "showMemberFilter")) { if (!isOnClick) { if (GrouperUtil.booleanValue(menuCheckboxChecked)) { guiResponseJs.addAction( GuiScreenAction.newHideShowNameToShow("simpleMembershipUpdateMemberFilter")); } else { guiResponseJs.addAction( GuiScreenAction.newHideShowNameToHide("simpleMembershipUpdateMemberFilter")); } } } else if (StringUtils.equals(menuItemId, "exportSubjectIds")) { guiResponseJs.addAction( GuiScreenAction.newAlertFromJsp( "/WEB-INF/grouperUi/templates/simpleMembershipUpdate/simpleMembershipUpdateExportSubjectIds.jsp")); } else if (StringUtils.equals(menuItemId, "exportAll")) { guiResponseJs.addAction( GuiScreenAction.newAlertFromJsp( "/WEB-INF/grouperUi/templates/simpleMembershipUpdate/simpleMembershipUpdateExportAll.jsp")); } else if (StringUtils.equals(menuItemId, "import")) { guiResponseJs.addAction( GuiScreenAction.newDialogFromJsp( "/WEB-INF/grouperUi/templates/simpleMembershipUpdate/simpleMembershipUpdateImport.jsp")); } else { throw new RuntimeException("Unexpected menu id: '" + menuItemId + "'"); } }
/** show subject details */ @SuppressWarnings("unchecked") public void memberMenuSubjectDetails() { GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs(); // lets see which subject we are dealing with: HttpServletRequest httpServletRequest = GrouperUiFilter.retrieveHttpServletRequest(); String menuIdOfMenuTarget = httpServletRequest.getParameter("menuIdOfMenuTarget"); if (StringUtils.isBlank(menuIdOfMenuTarget)) { throw new RuntimeException("Missing id of menu target"); } if (!menuIdOfMenuTarget.startsWith("memberMenuButton_")) { throw new RuntimeException("Invalid id of menu target: '" + menuIdOfMenuTarget + "'"); } String memberId = GrouperUtil.prefixOrSuffix(menuIdOfMenuTarget, "memberMenuButton_", false); final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn(); GrouperSession grouperSession = null; try { grouperSession = GrouperSession.start(loggedInSubject); Member member = MemberFinder.findByUuid(grouperSession, memberId, true); Subject subject = member.getSubject(); String order = null; try { order = GrouperUiConfig.retrieveConfig() .propertyValueString("subject.attributes.order." + subject.getSource().getId()); } catch (MissingResourceException mre) { // thats ok, go with default } if (StringUtils.isBlank(order)) { Set<String> attributeNames = new LinkedHashSet<String>(); attributeNames.add("screenLabel"); attributeNames.addAll(GrouperUtil.nonNull(subject.getAttributes()).keySet()); // lets add subjectId, typeName, sourceId, sourceName, memberId attributeNames.add("subjectId"); attributeNames.add("name"); attributeNames.add("description"); attributeNames.add("typeName"); attributeNames.add("sourceId"); attributeNames.add("sourceName"); order = GrouperUtil.join(attributeNames.iterator(), ','); } String[] attrNames = GrouperUtil.splitTrim(order, ","); SimpleMembershipUpdateContainer simpleMembershipUpdateContainer = SimpleMembershipUpdateContainer.retrieveFromSession(); simpleMembershipUpdateContainer.setSubjectForDetails(subject); simpleMembershipUpdateContainer.getSubjectDetails().clear(); // lookup each attribute for (String attrName : attrNames) { // sometimes group have blank attributes??? if (StringUtils.isBlank(attrName)) { continue; } String attributeValue = GuiSubject.attributeValue(subject, attrName); simpleMembershipUpdateContainer.getSubjectDetails().put(attrName, attributeValue); } guiResponseJs.addAction( GuiScreenAction.newAlertFromJsp( "/WEB-INF/grouperUi/templates/simpleMembershipUpdate/simpleMembershipUpdateSubjectDetails.jsp")); } catch (ControllerDone cd) { throw cd; } catch (NoSessionException nse) { throw nse; } catch (Exception se) { throw new RuntimeException( "Error listing member details: " + menuIdOfMenuTarget + ", " + se.getMessage(), se); } finally { GrouperSession.stopQuietly(grouperSession); } }