package rocks.inspectit.ui.rcp.handlers; import java.util.Iterator; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; import rocks.inspectit.shared.all.cmr.model.PlatformIdent; import rocks.inspectit.shared.all.exception.BusinessException; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.model.AgentLeaf; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; /** * Handler for deleting the agent from the CMR. * * @author Ivan Senic * */ public class DeleteAgentHandler extends AbstractHandler implements IHandler { /** * {@inheritDoc} */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); boolean confirmed = MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Delete", "Are you sure you want to permanently delete the selected Agent(s)? Note that all monitoring data related to the Agent(s) will be deleted from the repository database."); if (confirmed) { for (Iterator<?> it = selection.iterator(); it.hasNext();) { Object selected = it.next(); if (selected instanceof AgentLeaf) { AgentLeaf agentLeaf = (AgentLeaf) selected; PlatformIdent platformIdent = agentLeaf.getPlatformIdent(); CmrRepositoryDefinition cmrRepositoryDefinition = agentLeaf.getCmrRepositoryDefinition(); try { cmrRepositoryDefinition.getGlobalDataAccessService().deleteAgent(platformIdent.getId()); InspectIT.getDefault().getCmrRepositoryManager().repositoryAgentDeleted(cmrRepositoryDefinition, platformIdent); } catch (BusinessException e) { throw new ExecutionException("Exception occurred trying to delete the Agent from the CMR.", e); } } } } return null; } }