Lines 12-27
Link Here
|
12 |
package org.eclipse.equinox.internal.p2.metadata.repository; |
12 |
package org.eclipse.equinox.internal.p2.metadata.repository; |
13 |
|
13 |
|
14 |
import java.net.URI; |
14 |
import java.net.URI; |
15 |
import java.util.*; |
15 |
import java.util.Map; |
16 |
import org.eclipse.core.runtime.*; |
16 |
import org.eclipse.core.runtime.*; |
17 |
import org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager; |
17 |
import org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager; |
18 |
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; |
18 |
import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; |
19 |
import org.eclipse.equinox.internal.provisional.p2.metadata.query.*; |
|
|
20 |
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; |
19 |
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepository; |
21 |
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager; |
20 |
import org.eclipse.equinox.internal.provisional.p2.metadata.repository.IMetadataRepositoryManager; |
22 |
import org.eclipse.equinox.internal.provisional.p2.repository.IRepository; |
21 |
import org.eclipse.equinox.internal.provisional.p2.repository.IRepository; |
23 |
import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.MetadataRepositoryFactory; |
22 |
import org.eclipse.equinox.internal.provisional.spi.p2.metadata.repository.MetadataRepositoryFactory; |
24 |
import org.eclipse.equinox.p2.metadata.query.IQuery; |
|
|
25 |
import org.eclipse.osgi.util.NLS; |
23 |
import org.eclipse.osgi.util.NLS; |
26 |
|
24 |
|
27 |
/** |
25 |
/** |
Lines 82-90
Link Here
|
82 |
return IRepository.TYPE_METADATA; |
80 |
return IRepository.TYPE_METADATA; |
83 |
} |
81 |
} |
84 |
|
82 |
|
85 |
/** |
|
|
86 |
* @deprecated see {@link #loadRepository(URI, int, IProgressMonitor)} |
87 |
*/ |
88 |
public IMetadataRepository loadRepository(URI location, IProgressMonitor monitor) throws ProvisionException { |
83 |
public IMetadataRepository loadRepository(URI location, IProgressMonitor monitor) throws ProvisionException { |
89 |
return loadRepository(location, 0, monitor); |
84 |
return loadRepository(location, 0, monitor); |
90 |
} |
85 |
} |
Lines 93-141
Link Here
|
93 |
return (IMetadataRepository) loadRepository(location, monitor, null, flags); |
88 |
return (IMetadataRepository) loadRepository(location, monitor, null, flags); |
94 |
} |
89 |
} |
95 |
|
90 |
|
96 |
/** |
|
|
97 |
* Performs a query against all of the installable units of each known |
98 |
* repository, accumulating any objects that satisfy the query in the |
99 |
* provided collector. |
100 |
* <p> |
101 |
* Note that using this method can be quite expensive, as every known |
102 |
* metadata repository will be loaded in order to query each one. If a |
103 |
* client wishes to query only certain repositories, it is better to use |
104 |
* {@link #getKnownRepositories(int)} to filter the list of repositories |
105 |
* loaded and then query each of the returned repositories. |
106 |
* <p> |
107 |
* This method is long-running; progress and cancellation are provided |
108 |
* by the given progress monitor. |
109 |
* |
110 |
* @param query The query to perform against each installable unit in each known repository |
111 |
* @param collector Collects the results of the query |
112 |
* @param monitor a progress monitor, or <code>null</code> if progress |
113 |
* reporting is not desired |
114 |
* @return The collector argument |
115 |
*/ |
116 |
public Collector query(IQuery query, Collector collector, IProgressMonitor monitor) { |
117 |
URI[] locations = getKnownRepositories(REPOSITORIES_ALL); |
118 |
List queryables = new ArrayList(locations.length); // use a list since we don't know exactly how many will load |
119 |
SubMonitor sub = SubMonitor.convert(monitor, locations.length * 10); |
120 |
for (int i = 0; i < locations.length; i++) { |
121 |
try { |
122 |
if (sub.isCanceled()) |
123 |
throw new OperationCanceledException(); |
124 |
queryables.add(loadRepository(locations[i], sub.newChild(9))); |
125 |
} catch (ProvisionException e) { |
126 |
//ignore this repository for this query |
127 |
} |
128 |
} |
129 |
try { |
130 |
IQueryable[] queryablesArray = (IQueryable[]) queryables.toArray(new IQueryable[queryables.size()]); |
131 |
CompoundQueryable compoundQueryable = new CompoundQueryable(queryablesArray); |
132 |
compoundQueryable.query(query, collector, sub.newChild(locations.length * 1)); |
133 |
} finally { |
134 |
sub.done(); |
135 |
} |
136 |
return collector; |
137 |
} |
138 |
|
139 |
public IMetadataRepository refreshRepository(URI location, IProgressMonitor monitor) throws ProvisionException { |
91 |
public IMetadataRepository refreshRepository(URI location, IProgressMonitor monitor) throws ProvisionException { |
140 |
return (IMetadataRepository) basicRefreshRepository(location, monitor); |
92 |
return (IMetadataRepository) basicRefreshRepository(location, monitor); |
141 |
} |
93 |
} |