/* (non-Javadoc) * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#getProfileChangeOperation(java.lang.Object[]) */ protected ProfileChangeOperation getProfileChangeOperation(Object[] elements) { InstallOperation op = new InstallOperation(ui.getSession(), ElementUtils.elementsToIUs(elements)); op.setProfileId(getProfileId()); // op.setRootMarkerKey(getRootMarkerKey()); return op; }
/** * Install selected features in to developer studio. Note: call {@link * #setSelectedFeaturesToInstall(List) setSelectedFeaturesToInstall} first. * * @param monitor */ public void installSelectedFeatures(IProgressMonitor monitor) { SubMonitor progress = SubMonitor.convert(monitor, Messages.UpdateManager_32, 2); URI[] repos = new URI[] {getDevStudioReleaseSite()}; session = new ProvisioningSession(p2Agent); installOperation = new InstallOperation(session, selectedFeatures); installOperation.getProvisioningContext().setArtifactRepositories(repos); installOperation.getProvisioningContext().setMetadataRepositories(repos); IStatus status = installOperation.resolveModal(progress.newChild(1)); if (status.getSeverity() == IStatus.CANCEL || progress.isCanceled()) { throw new OperationCanceledException(); } else if (status.getSeverity() == IStatus.ERROR) { String message = status.getChildren()[0].getMessage(); log.error(Messages.UpdateManager_33 + message); } else { ProvisioningJob provisioningJob = installOperation.getProvisioningJob(progress.newChild(1)); if (provisioningJob != null) { provisioningJob.addJobChangeListener( new JobChangeAdapter() { @Override public void done(IJobChangeEvent arg0) { Display.getDefault() .syncExec( new Runnable() { @Override public void run() { boolean restart = MessageDialog.openQuestion( Display.getDefault().getActiveShell(), Messages.UpdateManager_34, Messages.UpdateManager_35 + Messages.UpdateManager_36); if (restart) { PlatformUI.getWorkbench().restart(); } } }); } }); provisioningJob.schedule(); Display.getDefault() .syncExec( new Runnable() { @Override public void run() { try { PlatformUI.getWorkbench() .getActiveWorkbenchWindow() .getActivePage() .showView(IProgressConstants.PROGRESS_VIEW_ID); } catch (PartInitException e) { log.error(e); } } }); } else { log.error(Messages.UpdateManager_37); } } }
/** * (inheritDoc) * * @param listener * @see org.goko.featuremanager.service.IFeatureManager#install(java.util.List) */ @Override public IStatus install( List<GkInstallableUnit> units, IProgressMonitor monitor, IJobChangeListener listener) throws GkException { // get the repository managers and define our repositories IMetadataRepositoryManager manager = (IMetadataRepositoryManager) getProvisioningAgent().getService(IMetadataRepositoryManager.SERVICE_NAME); List<IInstallableUnit> p2Units = new ArrayList<IInstallableUnit>(); for (GkInstallableUnit gkInstallableUnit : units) { if (!gkInstallableUnit.isInstalled()) { p2Units.add(gkInstallableUnit.getBaseUnit()); } } final InstallOperation installOperation = new InstallOperation(new ProvisioningSession(getProvisioningAgent()), p2Units); LOG.info("installOperation created " + String.valueOf(installOperation)); IStatus operationStatus = installOperation.resolveModal(monitor); LOG.info("operationStatus " + String.valueOf(operationStatus)); if (operationStatus.getSeverity() > IStatus.WARNING) { LOG.error("installOperation detail :" + installOperation.getResolutionDetails()); LOG.error("Install operation failed :" + operationStatus.toString()); if (operationStatus.isMultiStatus()) { for (IStatus status : operationStatus.getChildren()) { LOG.error(" + " + status.getMessage()); } } LOG.error(new CoreException(operationStatus)); return operationStatus; } final ProvisioningJob provisioningJob = installOperation.getProvisioningJob(monitor); LOG.info("ProvisioningJob created " + String.valueOf(provisioningJob)); provisioningJob.schedule(); provisioningJob.addJobChangeListener(listener); LOG.info("Installation of feature done"); return operationStatus; }