package rocks.inspectit.ui.rcp.wizard; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.progress.IProgressConstants; import rocks.inspectit.shared.cs.storage.LocalStorageData; import rocks.inspectit.ui.rcp.InspectIT; import rocks.inspectit.ui.rcp.InspectITImages; import rocks.inspectit.ui.rcp.provider.ILocalStorageDataProvider; import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition; import rocks.inspectit.ui.rcp.storage.InspectITStorageManager; import rocks.inspectit.ui.rcp.view.impl.StorageManagerView; import rocks.inspectit.ui.rcp.wizard.page.UploadStorageWizardPage; /** * Wizard for uploading a storage. * * @author Ivan Senic * */ public class UploadStorageWizard extends Wizard implements INewWizard { /** * Storage to be uploaded. */ private LocalStorageData localStorageData; /** * Wizard page. */ private UploadStorageWizardPage uploadStorageWizardPage; /** * Default constructor. * * @param localStorageDataProvider * {@link ILocalStorageDataProvider} pointing to the storage to upload. */ public UploadStorageWizard(ILocalStorageDataProvider localStorageDataProvider) { this.localStorageData = localStorageDataProvider.getLocalStorageData(); this.setWindowTitle("Upload Storage to CMR (Central Management Repository)"); this.setDefaultPageImageDescriptor(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_WIZBAN_UPLOAD)); } /** * {@inheritDoc} */ @Override public void init(IWorkbench workbench, IStructuredSelection selection) { } /** * {@inheritDoc} */ @Override public void addPages() { uploadStorageWizardPage = new UploadStorageWizardPage(localStorageData); addPage(uploadStorageWizardPage); } /** * {@inheritDoc} */ @Override public boolean performFinish() { final CmrRepositoryDefinition cmrRepositoryDefinition = uploadStorageWizardPage.getCmrRepositoryDefinition(); Job uploadStorageJob = new Job("Upload storage") { @Override protected IStatus run(IProgressMonitor monitor) { SubMonitor subMonitor = SubMonitor.convert(monitor); InspectITStorageManager storageManager = InspectIT.getDefault().getInspectITStorageManager(); try { storageManager.uploadCompleteStorage(localStorageData, cmrRepositoryDefinition, subMonitor); cmrRepositoryDefinition.getStorageService().createStorageFromUploadedDir(localStorageData); } catch (final Exception e) { return new Status(IStatus.ERROR, InspectIT.ID, "Exception occurred during storage upload", e); } Display.getDefault().asyncExec(new Runnable() { @Override public void run() { InspectIT.getDefault().createInfoDialog("Selected storage successfully uploaded.", -1); IViewPart storageManagerView = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(StorageManagerView.VIEW_ID); if (storageManagerView instanceof StorageManagerView) { ((StorageManagerView) storageManagerView).refresh(cmrRepositoryDefinition); } } }); return Status.OK_STATUS; } }; uploadStorageJob.setUser(true); uploadStorageJob.setProperty(IProgressConstants.ICON_PROPERTY, InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_STORAGE_UPLOAD)); uploadStorageJob.schedule(); return true; } }