package org.openiam.selfsrvc.prov; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openiam.base.ws.ResponseStatus; import org.openiam.idm.srvc.org.dto.Organization; import org.openiam.idm.srvc.org.service.OrganizationDataService; import org.openiam.idm.srvc.prov.request.dto.ProvisionRequest; import org.openiam.idm.srvc.prov.request.dto.SearchRequest; import org.openiam.idm.srvc.prov.request.ws.RequestWebService; import org.openiam.idm.srvc.role.ws.RoleDataWebService; import org.openiam.idm.srvc.role.ws.RoleListResponse; import org.openiam.idm.srvc.user.dto.Supervisor; import org.openiam.idm.srvc.user.dto.User; import org.openiam.idm.srvc.user.dto.UserAttribute; import org.openiam.idm.srvc.user.ws.UserDataWebService; import org.openiam.selfsrvc.usradmin.DelegationFilterHelper; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; import org.openiam.idm.srvc.role.dto.Role; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Controller to retrieve user information. The information is presented through a readonly view. * @author suneet * */ public class MyPendingRequestController extends AbstractController { private static final Log log = LogFactory.getLog(MyPendingRequestController.class); private String view; protected RequestWebService provRequestService; protected UserDataWebService userMgr; private RoleDataWebService roleDataService; public MyPendingRequestController() { super(); } protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse res) throws Exception { String userId = (String)req.getSession().getAttribute("userId"); List<String> roleIdList = new ArrayList<String>(); User usr = userMgr.getUserWithDependent(userId,true).getUser(); RoleListResponse resp = roleDataService.getUserRolesAsFlatList(userId); if (resp != null && resp.getStatus() == ResponseStatus.SUCCESS) { List<Role> roleList = resp.getRoleList(); for (Role r : roleList) { roleIdList.add(r.getId().getRoleId()); } } SearchRequest search = buildSearch(userId, roleIdList, usr); List<ProvisionRequest> reqList = provRequestService.search(search).getReqList(); System.out.println("Requests found=" + reqList); ModelAndView mav = new ModelAndView(view); mav.addObject("reqList", reqList); return mav; } private SearchRequest buildSearch( String userId, List<String> roleIdList, User usr) { SearchRequest search = new SearchRequest(); search.setStatus("PENDING"); search.setApproverId(userId); search.setRoleIdList(roleIdList); if (usr.getDelAdmin() != null && usr.getDelAdmin().intValue() == 1) { Map<String, UserAttribute> attrMap = usr.getUserAttributes(); List<String> deptFilterList = null; List<String> orgFilterList = null; List<String> divFilterList = null; orgFilterList = DelegationFilterHelper.getOrgIdFilterFromString (attrMap); System.out.println("Org Filterlist =" + orgFilterList); if (orgFilterList != null && orgFilterList.size() > 0) { search.setRequestForOrgList(orgFilterList); } } return search; } public String getView() { return view; } public void setView(String view) { this.view = view; } public RequestWebService getProvRequestService() { return provRequestService; } public void setProvRequestService(RequestWebService provRequestService) { this.provRequestService = provRequestService; } public UserDataWebService getUserMgr() { return userMgr; } public void setUserMgr(UserDataWebService userMgr) { this.userMgr = userMgr; } public RoleDataWebService getRoleDataService() { return roleDataService; } public void setRoleDataService(RoleDataWebService roleDataService) { this.roleDataService = roleDataService; } }