package rocks.inspectit.ui.rcp.ci.handler; import org.apache.commons.lang.StringUtils; 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.viewers.StructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; import rocks.inspectit.shared.all.exception.BusinessException; import rocks.inspectit.shared.cs.ci.Profile; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.provider.IProfileProvider; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; /** * Handler for making profiles default or not. * * @author Ivan Senic * */ public class SetDefaultProfileHandler extends AbstractHandler implements IHandler { /** * Active parameter. If profile should be activated or deactivated. */ public static final String DEFAULT_PARAM = "rocks.inspectit.ui.rcp.ci.setDefaultProfile.default"; /** * {@inheritDoc} */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { String param = event.getParameter(DEFAULT_PARAM); if (StringUtils.isEmpty(param)) { return null; } Boolean isDefault = Boolean.parseBoolean(param); StructuredSelection selection = (StructuredSelection) HandlerUtil.getCurrentSelection(event); if (selection.isEmpty()) { return null; } Object selected = selection.getFirstElement(); if (selected instanceof IProfileProvider) { IProfileProvider profileProvider = (IProfileProvider) selected; Profile profile = profileProvider.getProfile(); CmrRepositoryDefinition repositoryDefinition = profileProvider.getCmrRepositoryDefinition(); if (profile.isDefaultProfile() != isDefault.booleanValue()) { profile.setDefaultProfile(isDefault.booleanValue()); try { profile = repositoryDefinition.getConfigurationInterfaceService().updateProfile(profile); // notify listeners InspectIT.getDefault().getInspectITConfigurationInterfaceManager().profileUpdated(profile, repositoryDefinition, true); } catch (final BusinessException e) { throw new ExecutionException("Update of the profile default state failed.", e); } } } return null; } }