use of org.tigris.subversion.subclipse.core.client.StatusAndInfoCommand in project subclipse by subclipse.
the class SVNWorkspaceSubscriber method findChanges.
private IResource[] findChanges(IResource resource, int depth, IProgressMonitor monitor) throws TeamException {
try {
monitor.beginTask("", 100);
remoteSyncStateStore.flushBytes(resource, depth);
// ISVNClientAdapter client = SVNProviderPlugin.getPlugin().createSVNClient();
boolean descend = (depth == IResource.DEPTH_INFINITE) ? true : false;
boolean showOutOfDate = SVNProviderPlugin.getPlugin().getPluginPreferences().getBoolean(ISVNCoreConstants.PREF_SHOW_OUT_OF_DATE_FOLDERS);
StatusAndInfoCommand cmd = new StatusAndInfoCommand(SVNWorkspaceRoot.getSVNResourceFor(resource), descend, showOutOfDate, true);
cmd.setCallback(new CancelableSVNStatusCallback(monitor));
cmd.run(monitor);
if (monitor.isCanceled()) {
return new IResource[0];
}
monitor.worked(70);
RemoteResourceStatus[] statuses = cmd.getRemoteResourceStatuses();
List<IResource> result = new ArrayList<IResource>(statuses.length);
for (RemoteResourceStatus status : statuses) {
IResource changedResource = SVNWorkspaceRoot.getResourceFor(resource, status);
if (changedResource == null)
continue;
if (isSupervised(changedResource) || (status.getTextStatus() != SVNStatusKind.NONE)) {
if (!ignoreHiddenChanges || !Util.isHidden(changedResource)) {
result.add(changedResource);
remoteSyncStateStore.setBytes(changedResource, status.getBytes());
registerChangedResourceParent(changedResource);
}
}
}
// Ensure that the local sync state is also updated
IContainer container = resource.getType() == IResource.FILE ? resource.getParent() : (IContainer) resource;
SVNProviderPlugin.getPlugin().getStatusCacheManager().refreshStatus(container, true);
monitor.worked(30);
return (IResource[]) result.toArray(new IResource[result.size()]);
} catch (SVNException e) {
if (e.getMessage().contains("Operation cancelled")) {
return new IResource[0];
} else {
throw new TeamException("Error getting status for resource " + resource + " " + e.getMessage(), e);
}
} finally {
monitor.done();
}
}
Aggregations