package rocks.inspectit.ui.rcp.wizard;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import rocks.inspectit.shared.all.exception.BusinessException;
import rocks.inspectit.shared.cs.storage.StorageData;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.InspectITImages;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition.OnlineStatus;
import rocks.inspectit.ui.rcp.view.impl.StorageManagerView;
import rocks.inspectit.ui.rcp.wizard.page.DefineNewStorageWizzardPage;
/**
* Wizard for creating and opening the storage.
*
* @author Ivan Senic
*
*/
public class CreateStorageWizard extends Wizard implements INewWizard {
/**
* New storage page.
*/
private DefineNewStorageWizzardPage defineNewStoragePage;
/**
* Selected CMR repository.
*/
private CmrRepositoryDefinition cmrRepositoryDefinition;
/**
* Default constructor.
*/
public CreateStorageWizard() {
super();
this.setWindowTitle("Create Storage Wizard");
this.setDefaultPageImageDescriptor(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_WIZBAN_STORAGE));
}
/**
* This constructor will set provided {@link CmrRepositoryDefinition} as the initially selected
* repository to create storage to. Force open, means that the option if the storage will be
* opened or not, will not be available for the user.
*
* @param cmrRepositoryDefinition
* {@link CmrRepositoryDefinition} to create storage on.
*/
public CreateStorageWizard(CmrRepositoryDefinition cmrRepositoryDefinition) {
this();
this.cmrRepositoryDefinition = cmrRepositoryDefinition;
}
/**
* {@inheritDoc}
*/
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
}
/**
* {@inheritDoc}
*/
@Override
public void addPages() {
defineNewStoragePage = new DefineNewStorageWizzardPage(cmrRepositoryDefinition, false);
addPage(defineNewStoragePage);
}
/**
* {@inheritDoc}
*/
@Override
public boolean performFinish() {
CmrRepositoryDefinition cmrRepositoryDefinition = defineNewStoragePage.getSelectedRepository();
if (cmrRepositoryDefinition.getOnlineStatus() != OnlineStatus.OFFLINE) {
StorageData storageData = defineNewStoragePage.getStorageData();
try {
cmrRepositoryDefinition.getStorageService().createAndOpenStorage(storageData);
IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(StorageManagerView.VIEW_ID);
if (viewPart instanceof StorageManagerView) {
((StorageManagerView) viewPart).refresh();
}
} catch (BusinessException e) {
InspectIT.getDefault().createErrorDialog("Storage can not be created.", e, -1);
return false;
}
} else {
InspectIT.getDefault().createErrorDialog("Storage can not be created. Selected CMR repository is currently not available.", -1);
return false;
}
return true;
}
}