package org.openiam.webadmin.res; /* * Copyright 2009, OpenIAM LLC * This file is part of the OpenIAM Identity and Access Management Suite * * OpenIAM Identity and Access Management Suite is free software: * you can redistribute it and/or modify * it under the terms of the Lesser GNU General Public License * version 3 as published by the Free Software Foundation. * * OpenIAM is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * Lesser GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenIAM. If not, see <http://www.gnu.org/licenses/>. * */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openiam.idm.srvc.menu.dto.Menu; import org.openiam.idm.srvc.menu.ws.NavigatorDataWebService; import org.openiam.idm.srvc.mngsys.dto.AttributeMap; import org.openiam.idm.srvc.mngsys.service.ManagedSystemDataService; import org.openiam.idm.srvc.policy.dto.Policy; import org.openiam.idm.srvc.policy.dto.PolicyConstants; import org.openiam.idm.srvc.policy.service.PolicyDataService; import org.openiam.idm.srvc.res.dto.Resource; import org.openiam.idm.srvc.res.service.ResourceDataService; import org.openiam.webadmin.util.AuditHelper; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.validation.BindException; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.CancellableFormController; import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.view.RedirectView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.text.SimpleDateFormat; import java.util.*; /** * Controller to manage connectivity information for a managed system * * @author suneet */ public class AttributeMapController extends CancellableFormController { private static final Log log = LogFactory.getLog(AttributeMapController.class); protected ResourceDataService resourceDataService; protected NavigatorDataWebService navigationDataService; private PolicyDataService policyDataService; private String redirectView; private ManagedSystemDataService managedSysService; protected AuditHelper auditHelper; public AttributeMapController() { super(); } @Override protected ModelAndView onCancel(Object command) throws Exception { return new ModelAndView(new RedirectView(getCancelView(),true)); } protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("MM/dd/yyyy"), true)); } protected Map referenceData(HttpServletRequest request) throws Exception { List<Policy> attrPolicyAry = policyDataService.getAllPolicies(PolicyConstants.ATTRIBUTE_POLICY); Map model = new HashMap(); model.put("attrPolicyAry", attrPolicyAry); return model; } @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { String mode = request.getParameter("mode"); if (mode != null && mode.equalsIgnoreCase("1")) { request.setAttribute("msg", "Information has been successfully updated."); } HttpSession session = request.getSession(); String userId = (String) session.getAttribute("userId"); String resId = request.getParameter("objId"); if (resId != null && resId.length() > 0) { request.setAttribute("objId", resId); } else { resId = request.getParameter("resId"); request.setAttribute("objId", resId); } String menuGrp = request.getParameter("menugrp"); Resource res = resourceDataService.getResource(resId); List<AttributeMap> attrMap = this.managedSysService.getResourceAttributeMaps(resId); if (attrMap == null) { attrMap = new ArrayList<AttributeMap>(); } AttributeMap newMap = new AttributeMap(); newMap.setAttributeMapId("NEW"); newMap.setResourceId(resId); newMap.setAttributeName("**ENTER ATTRIBUTE NAME**"); newMap.setStatus("ACTIVE"); Policy attrPolicy = new Policy(); attrPolicy.setPolicyId(""); newMap.setAttributePolicy(attrPolicy); attrMap.add(newMap); List<Menu> level3MenuList = navigationDataService.menuGroupByUser(menuGrp, userId, "en").getMenuList(); request.setAttribute("menuL3", level3MenuList); AttributeMapCommand cmd = new AttributeMapCommand(); cmd.setAttrMapList(attrMap); cmd.setResourceName(res.getName()); cmd.setResId(resId); cmd.setManagedSysId(res.getManagedSysId()); return cmd; } @Override protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { log.info("onSubmit called"); AttributeMapCommand attrMapCmd = (AttributeMapCommand) command; String resId = attrMapCmd.getResId(); String userId = (String)request.getSession().getAttribute("userId"); String domainId = (String)request.getSession().getAttribute("domainid"); String login = (String)request.getSession().getAttribute("login"); Resource res = resourceDataService.getResource(resId); //ManagedSys sys; String btn = request.getParameter("btn"); if (btn.equalsIgnoreCase("Delete")) { List<AttributeMap> attrMap = attrMapCmd.getAttrMapList(); if (attrMap != null) { for (AttributeMap a : attrMap) { if (a.getSelected()) { String mapId = a.getAttributeMapId(); if (!mapId.equalsIgnoreCase("NEW")) { this.managedSysService.removeAttributeMap(mapId); auditHelper.addLog("MODIFY", domainId, login, "WEBCONSOLE", userId, "0", "RESOURCE", resId, null, "SUCCESS", null, "DELETE POLICY-MAP", a.getAttributeName(), null, null, res.getName(), request.getRemoteHost()); } } } } } else { List<AttributeMap> attrMap = attrMapCmd.getAttrMapList(); if (attrMap != null) { for (AttributeMap a : attrMap) { if (a.getAttributeMapId() == null || a.getAttributeMapId().equalsIgnoreCase("NEW")) { // new if (a.getAttributePolicy().getPolicyId() != null && a.getAttributePolicy().getPolicyId().length() > 0) { a.setAttributeMapId(null); a.setResourceId(resId); a.setManagedSysId(attrMapCmd.getManagedSysId()); this.managedSysService.addAttributeMap(a); auditHelper.addLog("MODIFY", domainId, login, "WEBCONSOLE", userId, "0", "RESOURCE", resId, null, "SUCCESS", null, "ADD POLICY-MAP", a.getAttributeName(), null, null, res.getName(), request.getRemoteHost()); } } else { // update a.setResourceId(resId); managedSysService.updateAttributeMap(a); auditHelper.addLog("MODIFY", domainId, login, "WEBCONSOLE", userId, "0", "RESOURCE", resId, null, "SUCCESS", null, "MODIFY POLICY-MAP", a.getAttributeName(), null, null, res.getName(), request.getRemoteHost()); } } } } log.info("refreshing attr list for resourceId=" + resId); String view = redirectView + "&menuid=RESPOLICYMAP&menugrp=SECURITY_RES&objId=" + resId; log.info("redirecting to=" + view); return new ModelAndView(new RedirectView(view, true)); } public ResourceDataService getResourceDataService() { return resourceDataService; } public void setResourceDataService(ResourceDataService resourceDataService) { this.resourceDataService = resourceDataService; } public NavigatorDataWebService getNavigationDataService() { return navigationDataService; } public void setNavigationDataService( NavigatorDataWebService navigationDataService) { this.navigationDataService = navigationDataService; } public PolicyDataService getPolicyDataService() { return policyDataService; } public void setPolicyDataService(PolicyDataService policyDataService) { this.policyDataService = policyDataService; } public String getRedirectView() { return redirectView; } public void setRedirectView(String redirectView) { this.redirectView = redirectView; } public ManagedSystemDataService getManagedSysService() { return managedSysService; } public void setManagedSysService(ManagedSystemDataService managedSysService) { this.managedSysService = managedSysService; } public AuditHelper getAuditHelper() { return auditHelper; } public void setAuditHelper(AuditHelper auditHelper) { this.auditHelper = auditHelper; } }