package rocks.inspectit.ui.rcp.ci.wizard;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import rocks.inspectit.shared.all.exception.BusinessException;
import rocks.inspectit.shared.cs.ci.Environment;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.ci.job.OpenEnvironmentJob;
import rocks.inspectit.ui.rcp.ci.wizard.page.DefineNameAndDescriptionWizardPage;
import rocks.inspectit.ui.rcp.provider.ICmrRepositoryProvider;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition.OnlineStatus;
/**
* Wizard for creating new environment.
*
* @author Ivan Senic
*
*/
public class CreateEnvironmentWizard extends Wizard implements INewWizard {
/**
* Wizard title.
*/
private static final String TITLE = "Create New Environment";
/**
* Wizard default message.
*/
private static final String MESSAGE = "Define the information for the new Environment";
/**
* {@link CmrRepositoryDefinition} to create environment on.
*/
private CmrRepositoryDefinition cmrRepositoryDefinition;
/**
* {@link DefineNameAndDescriptionWizardPage}.
*/
private DefineNameAndDescriptionWizardPage defineNameAndDescriptionWizardPage;
/**
* The workbench for wizard.
*/
private IWorkbench workbench;
/**
* Default constructor.
*/
public CreateEnvironmentWizard() {
this.setWindowTitle(TITLE);
}
/**
* {@inheritDoc}
*/
@Override
public void addPages() {
defineNameAndDescriptionWizardPage = new DefineNameAndDescriptionWizardPage(TITLE, MESSAGE);
addPage(defineNameAndDescriptionWizardPage);
}
/**
* {@inheritDoc}
*/
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
this.workbench = workbench;
StructuredSelection structuredSelection = (StructuredSelection) selection;
if (structuredSelection.getFirstElement() instanceof ICmrRepositoryProvider) {
cmrRepositoryDefinition = ((ICmrRepositoryProvider) structuredSelection.getFirstElement()).getCmrRepositoryDefinition();
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean performFinish() {
String name = defineNameAndDescriptionWizardPage.getName();
String description = defineNameAndDescriptionWizardPage.getDescription();
Environment environment = new Environment();
environment.setName(name);
if (StringUtils.isNotBlank(description)) {
environment.setDescription(description);
}
if (cmrRepositoryDefinition.getOnlineStatus() != OnlineStatus.OFFLINE) {
try {
Environment created = cmrRepositoryDefinition.getConfigurationInterfaceService().createEnvironment(environment);
// open created one
new OpenEnvironmentJob(cmrRepositoryDefinition, created.getId(), workbench.getActiveWorkbenchWindow().getActivePage()).schedule();
InspectIT.getDefault().getInspectITConfigurationInterfaceManager().environmentCreated(created, cmrRepositoryDefinition);
} catch (BusinessException e) {
InspectIT.getDefault().createErrorDialog("Environment can not be created.", e, -1);
return false;
}
} else {
InspectIT.getDefault().createErrorDialog("Environment can not be created. Selected CMR repository is currently not available.", -1);
return false;
}
return true;
}
}