24 import java.util.Set; |
24 import java.util.Set; |
25 |
25 |
26 import org.eclipse.core.runtime.CoreException; |
26 import org.eclipse.core.runtime.CoreException; |
27 import org.eclipse.core.runtime.IProgressMonitor; |
27 import org.eclipse.core.runtime.IProgressMonitor; |
28 import org.eclipse.core.runtime.IStatus; |
28 import org.eclipse.core.runtime.IStatus; |
|
29 import org.eclipse.core.runtime.NullProgressMonitor; |
29 import org.eclipse.core.runtime.OperationCanceledException; |
30 import org.eclipse.core.runtime.OperationCanceledException; |
30 import org.eclipse.core.runtime.SubMonitor; |
31 import org.eclipse.core.runtime.SubMonitor; |
31 import org.eclipse.equinox.p2.core.ProvisionException; |
32 import org.eclipse.equinox.p2.core.ProvisionException; |
32 import org.eclipse.equinox.p2.metadata.IInstallableUnit; |
33 import org.eclipse.equinox.p2.metadata.IInstallableUnit; |
33 import org.eclipse.equinox.p2.operations.InstallOperation; |
34 import org.eclipse.equinox.p2.operations.InstallOperation; |
34 import org.eclipse.equinox.p2.operations.ProvisioningSession; |
35 import org.eclipse.equinox.p2.operations.ProvisioningSession; |
35 import org.eclipse.equinox.p2.operations.RepositoryTracker; |
36 import org.eclipse.equinox.p2.operations.RepositoryTracker; |
36 import org.eclipse.equinox.p2.query.IQuery; |
37 import org.eclipse.equinox.p2.query.IQuery; |
37 import org.eclipse.equinox.p2.query.IQueryResult; |
38 import org.eclipse.equinox.p2.query.IQueryResult; |
|
39 import org.eclipse.equinox.p2.query.IQueryable; |
38 import org.eclipse.equinox.p2.query.QueryUtil; |
40 import org.eclipse.equinox.p2.query.QueryUtil; |
39 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository; |
41 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository; |
40 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager; |
42 import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager; |
41 import org.eclipse.equinox.p2.ui.ProvisioningUI; |
43 import org.eclipse.equinox.p2.ui.ProvisioningUI; |
42 import org.eclipse.jface.operation.IRunnableWithProgress; |
44 import org.eclipse.jface.operation.IRunnableWithProgress; |
43 import org.eclipse.swt.widgets.Display; |
45 import org.eclipse.swt.widgets.Display; |
44 |
46 |
45 import com.nokia.carbide.discovery.ui.Messages; |
47 import com.nokia.carbide.discovery.ui.Messages; |
46 |
48 |
47 public class FeatureInstallOperation implements IRunnableWithProgress { |
49 class FeatureInstallOperation implements IRunnableWithProgress { |
48 |
50 |
49 private Collection<URI> uris; |
51 private Collection<URI> uris; |
50 private Collection<FeatureInfo> featureInfos; |
52 private Collection<FeatureInfo> featureInfos; |
51 private boolean wantVersions; |
53 private boolean wantVersions; |
52 private ProvisioningUI provisioningUI; |
54 private ProvisioningUI provisioningUI; |
78 findInstallableUnits(subMonitor.newChild(40)); |
80 findInstallableUnits(subMonitor.newChild(40)); |
79 final InstallOperation operation = resolve(subMonitor.newChild(30)); |
81 final InstallOperation operation = resolve(subMonitor.newChild(30)); |
80 Display.getDefault().asyncExec(new Runnable() { |
82 Display.getDefault().asyncExec(new Runnable() { |
81 @Override |
83 @Override |
82 public void run() { |
84 public void run() { |
83 provisioningUI.openInstallWizard(ius, operation, null); |
85 IQueryable<IInstallableUnit> additions = operation.getProvisioningPlan().getAdditions(); |
|
86 IQueryResult<IInstallableUnit> result = additions.query(QueryUtil.createIUGroupQuery(), new NullProgressMonitor()); |
|
87 provisioningUI.openInstallWizard(result.toSet(), operation, null); |
84 } |
88 } |
85 }); |
89 }); |
86 } |
90 } |
87 |
91 |
88 private void getRepositories(SubMonitor monitor) throws ProvisionException, OperationCanceledException { |
92 private void getRepositories(SubMonitor monitor) throws ProvisionException, OperationCanceledException { |
138 throw new ProvisionException(sb.toString()); |
142 throw new ProvisionException(sb.toString()); |
139 } |
143 } |
140 monitor.done(); |
144 monitor.done(); |
141 } |
145 } |
142 |
146 |
143 // private FeatureInfo findInfo(Collection<FeatureInfo> featureInfos, String id, Version version) { |
|
144 // for (FeatureInfo featureInfo : featureInfos) { |
|
145 // boolean sameId = featureInfo.getId().equals(id); |
|
146 // if (sameId && (!wantVersions || version.toString().equals(featureInfo.getVersion().toString()))) |
|
147 // return featureInfo; |
|
148 // } |
|
149 // return null; |
|
150 // } |
|
151 |
|
152 private InstallOperation resolve(SubMonitor monitor) throws CoreException { |
147 private InstallOperation resolve(SubMonitor monitor) throws CoreException { |
153 checkIfCanceled(monitor); |
148 checkIfCanceled(monitor); |
154 URI[] uris = (URI[]) urisUsed.toArray(new URI[urisUsed.size()]); |
149 URI[] uris = (URI[]) urisUsed.toArray(new URI[urisUsed.size()]); |
155 InstallOperation installOperation = provisioningUI.getInstallOperation(ius, uris); |
150 InstallOperation installOperation = provisioningUI.getInstallOperation(ius, uris); |
156 IStatus operationStatus = installOperation.resolveModal(monitor); |
151 IStatus operationStatus = installOperation.resolveModal(monitor); |