subMonitor.checkCanceled(); Set<IPackageFragment> allPackages= allPackages(root); int numberOfPackages= allPackages.size(); subMonitor.checkCanceled(); Set<IPackageFragment> unselectedPackages= allPackages; unselectedPackages.removeAll(selectedPackages); subMonitor.checkCanceled(); Set<IPackageFragment> completelySelectedPackages= new HashSet<>(selectedPackages); subMonitor.checkCanceled();
private static Set<IPackageFragment> completelySelectedPackages(Collection<IPackageFragment> selectedPackages, IProgressMonitor monitor) throws JavaModelException { SubMonitor subMonitor= SubMonitor.convert(monitor, selectedPackages.size()); // we group the selected packages by package root, to hopefully work with smaller containers Map<IPackageFragmentRoot, Set<IPackageFragment>> packagesByRoot= groupByPackageRoot(selectedPackages, subMonitor); Set<IPackageFragment> completelySelectedPackages= new HashSet<>(selectedPackages.size()); for (Entry<IPackageFragmentRoot, Set<IPackageFragment>> packages : packagesByRoot.entrySet()) { subMonitor.checkCanceled(); IPackageFragmentRoot root= packages.getKey(); Set<IPackageFragment> selectedInRoot= packages.getValue(); Set<IPackageFragment> completelySelectedPackagesOfRoot= completelySelectedPackages(root, selectedInRoot, subMonitor); completelySelectedPackages.addAll(completelySelectedPackagesOfRoot); subMonitor.worked(1); } return completelySelectedPackages; }
/** * Groups the specified packages by their package roots. * * @param packages the packages to group * @param monitor may be null * @return a mapping to the specified packages, from their package roots */ private static Map<IPackageFragmentRoot, Set<IPackageFragment>> groupByPackageRoot(Collection<IPackageFragment> packages, IProgressMonitor monitor) { SubMonitor subMonitor= SubMonitor.convert(monitor, packages.size()); Map<IPackageFragmentRoot, Set<IPackageFragment>> packageRoots= new HashMap<>(); for (IPackageFragment packageFragment : packages) { subMonitor.checkCanceled(); IPackageFragmentRoot root= (IPackageFragmentRoot) packageFragment.getParent(); Set<IPackageFragment> packagesOfRoot= packageRoots.get(root); if (packagesOfRoot == null) { packagesOfRoot= new HashSet<>(); packageRoots.put(root, packagesOfRoot); } packagesOfRoot.add(packageFragment); subMonitor.worked(1); } return packageRoots; }
/** * @param monitor may be null * @return a List of IResources that are removed by package deletes * @throws CoreException if accessing package structure of packages to delete fails */ public List<IResource> postProcess(IProgressMonitor monitor) throws CoreException { String taskName= RefactoringCoreMessages.DeleteRefactoring_progress_collecting_resources; SubMonitor subMonitor= SubMonitor.convert(monitor, taskName, fPackagesToDelete.size()); IsCompletelySelected isCompletelySelected = new IsCompletelySelected(fPackagesToDelete, subMonitor); ArrayList<IResource> resourcesCollector= new ArrayList<>(); for (Iterator<IPackageFragment> iter= fPackagesToDelete.iterator(); iter.hasNext(); ) { subMonitor.checkCanceled(); IPackageFragment pack= iter.next(); handlePackageFragmentDelete(pack, resourcesCollector, isCompletelySelected); subMonitor.worked(1); } return resourcesCollector; }
try { performNextTask(progress); progress.checkCanceled(); } catch (OperationCanceledException e) { progress.checkCanceled(); } catch (InterruptedException e) { progress.checkCanceled(); } catch (InvocationTargetException e) { handleError(e.getTargetException());
@Deprecated @Override public void setLocal(boolean flag, int depth, IProgressMonitor monitor) throws CoreException { String message = Messages.resources_setLocal; SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); try { workspace.prepareOperation(null, progress.split(1)); workspace.beginOperation(true); internalSetLocal(flag, depth); progress.split(98); } finally { workspace.endOperation(null, true); } }
@Override public IStatus runInWorkspace(IProgressMonitor monitor) { IStatus status = Status.OK_STATUS; String projectName = project.getName(); SubMonitor progress = SubMonitor.convert(monitor, 100).checkCanceled(); try { long start = System.currentTimeMillis(); project.refreshLocal(IResource.DEPTH_INFINITE, progress.split(5)); Optional<IBuildSupport> buildSupport = getBuildSupport(project); if (buildSupport.isPresent()) { buildSupport.get().update(project, force, progress.split(95)); registerWatcherJob.schedule(); } long elapsed = System.currentTimeMillis() - start; JavaLanguageServerPlugin.logInfo("Updated " + projectName + " in " + elapsed + " ms"); } catch (CoreException e) { String msg = "Error updating " + projectName; JavaLanguageServerPlugin.logError(msg); status = StatusFactory.newErrorStatus(msg, e); } return status; } };
@Override public void touch(IProgressMonitor monitor) throws CoreException { String message = NLS.bind(Messages.resources_touch, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); final ISchedulingRule rule = workspace.getRuleFactory().modifyRule(this); try { workspace.prepareOperation(rule, progress.split(1)); ResourceInfo info = checkAccessibleAndLocal(DEPTH_ZERO); workspace.beginOperation(true); // Fake a change by incrementing the content ID. info = getResourceInfo(false, true); info.incrementContentId(); // Forget content-related caching flags. info.clear(M_CONTENT_CACHE); workspace.updateModificationStamp(info); progress.split(98); } catch (OperationCanceledException e) { workspace.getWorkManager().operationCanceled(); throw e; } finally { workspace.endOperation(rule, true); } }
@Override public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException { String message = NLS.bind(Messages.resources_copying, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); destination = makePathAbsolute(destination); checkValidPath(destination, getType(), false); Resource destResource = workspace.newResource(destination, getType()); final ISchedulingRule rule = workspace.getRuleFactory().copyRule(this, destResource); try { workspace.prepareOperation(rule, progress.split(1)); // The following assert method throws CoreExceptions as stated in the IResource.copy API // and assert for programming errors. See checkCopyRequirements for more information. assertCopyRequirements(destination, getType(), updateFlags); workspace.beginOperation(true); getLocalManager().copy(this, destResource, updateFlags, progress.split(98)); } catch (OperationCanceledException e) { workspace.getWorkManager().operationCanceled(); throw e; } finally { workspace.endOperation(rule, true); } }
@Override public void setDerived(boolean isDerived, IProgressMonitor monitor) throws CoreException { String message = NLS.bind(Messages.resources_settingDerivedFlag, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); final ISchedulingRule rule = workspace.getRuleFactory().derivedRule(this); try { workspace.prepareOperation(rule, progress.split(1)); ResourceInfo info = getResourceInfo(false, false); checkAccessible(getFlags(info)); // Ignore attempts to set derived flag on anything except files and folders. if (info.getType() != FILE && info.getType() != FOLDER) return; workspace.beginOperation(true); info = getResourceInfo(false, true); if (isDerived) { info.set(ICoreConstants.M_DERIVED); } else { info.clear(ICoreConstants.M_DERIVED); } progress.split(98); } catch (OperationCanceledException e) { workspace.getWorkManager().operationCanceled(); throw e; } finally { workspace.endOperation(rule, true); } }
Assert.isNotNull(destDesc); String message = NLS.bind(Messages.resources_copying, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); try { workspace.prepareOperation(workspace.getRoot(), progress.split(1));
@Override public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException { boolean isRoot = getType() == ROOT; String message = isRoot ? Messages.resources_refreshingRoot : NLS.bind(Messages.resources_refreshing, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, 100).checkCanceled(); progress.subTask(message); boolean build = false; final ISchedulingRule rule = workspace.getRuleFactory().refreshRule(this); try { workspace.prepareOperation(rule, progress.split(1)); if (!isRoot && !getProject().isAccessible()) return; if (!exists() && isFiltered()) return; workspace.beginOperation(true); if (getType() == IResource.PROJECT || getType() == IResource.ROOT) workspace.broadcastEvent(LifecycleEvent.newEvent(LifecycleEvent.PRE_REFRESH, this)); build = getLocalManager().refresh(this, depth, true, progress.split(98)); } catch (OperationCanceledException e) { workspace.getWorkManager().operationCanceled(); throw e; } finally { workspace.endOperation(rule, build); } }
SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); final ISchedulingRule rule = workspace.getRuleFactory().createRule(this); try {
SubMonitor progress = SubMonitor.convert(monitor, 2).checkCanceled(); switch (getType()) { case IResource.FILE :
SubMonitor progress = SubMonitor.convert(monitor, 2).checkCanceled(); switch (getType()) { case IResource.FILE :
SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); checkValidPath(path, FOLDER, true); final ISchedulingRule rule = workspace.getRuleFactory().createRule(this);
@Override public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException { String message = NLS.bind(Messages.resources_moving, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, message, 100).checkCanceled(); destination = makePathAbsolute(destination); checkValidPath(destination, getType(), false);
@Override public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException { String message = NLS.bind(Messages.resources_deleting, getFullPath()); SubMonitor progress = SubMonitor.convert(monitor, 100).checkCanceled(); progress.subTask(message); final ISchedulingRule rule = workspace.getRuleFactory().deleteRule(this);