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.meta.dto.MetadataElement; import org.openiam.idm.srvc.meta.ws.MetadataWebService; import org.openiam.idm.srvc.mngsys.dto.ManagedSys; import org.openiam.idm.srvc.mngsys.service.ManagedSystemDataService; import org.openiam.idm.srvc.res.dto.Resource; import org.openiam.idm.srvc.res.dto.ResourceProp; import org.openiam.idm.srvc.res.dto.ResourceType; 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.Date; import java.util.HashSet; import java.util.List; import java.util.Set; /** * Controller to manage connectivity information for a managed system * * @author suneet */ public class ResourceDetailController extends CancellableFormController { private static final Log log = LogFactory.getLog(ResourceDetailController.class); protected ResourceDataService resourceDataService; protected NavigatorDataWebService navigationDataService; protected MetadataWebService metadataService; protected String redirectView; protected ManagedSystemDataService managedSysClient; protected AuditHelper auditHelper; public ResourceDetailController() { 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)); } @Override protected Object formBackingObject(HttpServletRequest request) throws Exception { Resource res = null; HttpSession session = request.getSession(); String userId = (String) session.getAttribute("userId"); String resId = request.getParameter("resId"); String resTypeId = request.getParameter("restype"); String mode = request.getParameter("mode"); if (mode != null && mode.equalsIgnoreCase("1")) { request.setAttribute("msg", "Information has been successfully updated."); } if (resId != null && resId.length() > 0) { request.setAttribute("objId", resId); } else { resId = request.getParameter("objId"); request.setAttribute("objId", resId); } log.info("ResourceId = " + resId); String menuGrp = request.getParameter("menugrp"); if (resId != null && resId.length() > 0) { // existing res = resourceDataService.getResource(resId); } else { // new res = new Resource(); ResourceType resType = new ResourceType(); resType.setResourceTypeId(resTypeId); res.setResourceType(resType); MetadataElement[] elementAry = metadataService.getMetadataElementByType(resTypeId).getMetadataElementAry(); Set<ResourceProp> propSet = new HashSet<ResourceProp>(); if (elementAry != null) { for (MetadataElement m : elementAry) { ResourceProp p = new ResourceProp(); p.setMetadataId(m.getMetadataElementId()); p.setName(m.getAttributeName()); propSet.add(p); } } res.setResourceProps(propSet); } ManagedSys[] sysAry = managedSysClient.getAllManagedSys(); List<Menu> level3MenuList = navigationDataService.menuGroupByUser(menuGrp, userId, "en").getMenuList(); request.setAttribute("menuL3", level3MenuList); ResourceDetailCommand cmd = new ResourceDetailCommand(); cmd.setResource(res); if (res != null && res.getResourceProps() != null) { cmd.setResourceProp(res.getResourceProps()); } cmd.setManagedSysAry(sysAry); cmd.setResourceType(resTypeId); return cmd; } @Override protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { log.debug("onSubmit called"); ResourceDetailCommand resCommand = (ResourceDetailCommand) command; ManagedSys sys; String userId = (String)request.getSession().getAttribute("userId"); String domainId = (String)request.getSession().getAttribute("domainid"); String login = (String)request.getSession().getAttribute("login"); String btn = request.getParameter("btn"); if (btn != null && btn.equalsIgnoreCase("Delete")) { Resource res = resCommand.getResource(); resourceDataService.removeResource(res.getResourceId()); auditHelper.addLog("DELETE", domainId, login, "WEBCONSOLE", userId, "0", "RESOURCE", res.getResourceId(), null, "SUCCESS", null, null, null, null, null, res.getName(), request.getRemoteHost()); return new ModelAndView(new RedirectView("resourcelist.cnt", true)); } Resource res = resCommand.getResource(); if (resCommand.getResource().getResourceId() == null || resCommand.getResource().getResourceId().length() == 0) { // new log.info("Creating new resource.."); res.setResourceId(null); Set<ResourceProp> propSet = resCommand.getResourceProp(); Set<ResourceProp> newPropSet = new HashSet<ResourceProp>(); if (propSet != null) { for (ResourceProp rp : propSet) { rp.setResourcePropId(null); rp.setResourceId(null); newPropSet.add(rp); } } res.setResourceProps(newPropSet); res = resourceDataService.addResource(res); auditHelper.addLog("CREATE", domainId, login, "WEBCONSOLE", userId, "0", "RESOURCE", res.getResourceId(), null, "SUCCESS", null, null, null, null, null, res.getName(), request.getRemoteHost()); } else { // existing record res.setResourceProps(resCommand.getResourceProp()); resourceDataService.updateResource(res); auditHelper.addLog("MODIFY", domainId, login, "WEBCONSOLE", userId, "0", "RESOURCE", res.getResourceId(), null, "SUCCESS", null, null, null, null, null, res.getName(), request.getRemoteHost()); } // create a link with the managed sys object if (res != null) { String managedSysId = res.getManagedSysId(); if (managedSysId != null && managedSysId.length() > 0) { ManagedSys mSys = managedSysClient.getManagedSys(managedSysId); mSys.setPswd( mSys.getDecryptPassword()); mSys.setResourceId(res.getResourceId()); log.info("Password=" + mSys.getPswd()); managedSysClient.updateManagedSystem(mSys); } } /* http://localhost:8080/webconsole/resourceDetail.cnt?resId=101&menugrp=SECURITY_RES log.info("refreshing attr list for resourceId=" + resId); String view = redirectView + "&menuid=RESAPPROVER&menugrp=SECURITY_RES&objId=" + resId; log.info("redirecting to=" + view); return new ModelAndView(new RedirectView(view, true)); */ String view = redirectView + "&menugrp=SECURITY_RES&resId=" + res.getResourceId(); 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 String getRedirectView() { return redirectView; } public void setRedirectView(String redirectView) { this.redirectView = redirectView; } public MetadataWebService getMetadataService() { return metadataService; } public void setMetadataService(MetadataWebService metadataService) { this.metadataService = metadataService; } public ManagedSystemDataService getManagedSysClient() { return managedSysClient; } public void setManagedSysClient(ManagedSystemDataService managedSysClient) { this.managedSysClient = managedSysClient; } public AuditHelper getAuditHelper() { return auditHelper; } public void setAuditHelper(AuditHelper auditHelper) { this.auditHelper = auditHelper; } }