package rocks.inspectit.ui.rcp.ci.job; import java.util.Collection; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PartInitException; import rocks.inspectit.shared.cs.ci.AgentMapping; import rocks.inspectit.shared.cs.ci.AgentMappings; import rocks.inspectit.shared.cs.ci.Environment; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.ci.form.editor.AgentMappingEditor; import rocks.inspectit.ui.rcp.ci.form.input.AgentMappingInput; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition.OnlineStatus; /** * Job for loading of the {@link AgentMapping}s from the CMR and opening the editor. * * @author Ivan Senic * */ public class OpenMappingsJob extends Job { /** * {@link CmrRepositoryDefinition}. */ private CmrRepositoryDefinition cmrRepositoryDefinition; /** * Active page. */ private IWorkbenchPage activePage; /** * @param cmrRepositoryDefinition * {@link CmrRepositoryDefinition} * @param activePage * active page from the handler */ public OpenMappingsJob(CmrRepositoryDefinition cmrRepositoryDefinition, IWorkbenchPage activePage) { super("Loading mappings.."); this.cmrRepositoryDefinition = cmrRepositoryDefinition; this.activePage = activePage; setUser(true); } /** * {@inheritDoc} */ @Override protected IStatus run(IProgressMonitor monitor) { if (cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.OFFLINE) { return Status.CANCEL_STATUS; } try { AgentMappings mappings = cmrRepositoryDefinition.getConfigurationInterfaceService().getAgentMappings(); Collection<Environment> environments = cmrRepositoryDefinition.getConfigurationInterfaceService().getAllEnvironments(); final AgentMappingInput input = new AgentMappingInput(cmrRepositoryDefinition, mappings, environments); Display.getDefault().asyncExec(new Runnable() { @Override public void run() { try { activePage.openEditor(input, AgentMappingEditor.ID, true); } catch (PartInitException e) { InspectIT.getDefault().createErrorDialog("Exception occurred opening the Agent mapping settings editor.", e, -1); } } }); return Status.OK_STATUS; } catch (Exception e) { return new Status(IStatus.ERROR, InspectIT.ID, "Exception occurred loading the data from the CMR.", e); } } }