use of org.tigris.subversion.subclipse.core.resources.RemoteResourceStatus in project subclipse by subclipse.
the class SVNWorkspaceSubscriber method getSyncInfo.
/* (non-Javadoc)
* @see org.eclipse.team.core.subscribers.Subscriber#getSyncInfo(org.eclipse.core.resources.IResource)
*/
public SyncInfo getSyncInfo(IResource resource) throws TeamException {
if (resource == null)
return null;
if (!isSupervised(resource))
return null;
if (ignoreHiddenChanges && Util.isHidden(resource)) {
return null;
}
// LocalResourceStatus localStatus = SVNWorkspaceRoot.getSVNResourceFor( resource );
LocalResourceStatus localStatus = SVNProviderPlugin.getPlugin().getStatusCacheManager().getStatus(resource);
RemoteResourceStatus remoteStatusInfo = null;
byte[] remoteBytes = remoteSyncStateStore.getBytes(resource);
if ((remoteBytes != null) && (remoteBytes != DUMMY_SYNC_BYTES)) {
remoteStatusInfo = RemoteResourceStatus.fromBytes(remoteBytes);
}
SyncInfo syncInfo = new SVNStatusSyncInfo(resource, localStatus, remoteStatusInfo, comparator);
syncInfo.init();
return syncInfo;
}
use of org.tigris.subversion.subclipse.core.resources.RemoteResourceStatus 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();
}
}
use of org.tigris.subversion.subclipse.core.resources.RemoteResourceStatus in project subclipse by subclipse.
the class StatusAndInfoCommand method collectRemoteStatuses.
private RemoteResourceStatus[] collectRemoteStatuses(ISVNStatus[] statuses, ISVNClientAdapter client, final IProgressMonitor monitor) {
monitor.beginTask("", statuses.length);
try {
RemoteResourceStatus[] result = new RemoteResourceStatus[statuses.length];
Arrays.sort(statuses, new Comparator() {
public int compare(Object o1, Object o2) {
return ((ISVNStatus) o1).getPath().compareTo(((ISVNStatus) o2).getPath());
}
});
for (int i = 0; i < statuses.length; i++) {
ISVNStatus status = statuses[i];
SVNStatusKind localTextStatus = status.getTextStatus();
if (SVNStatusKind.UNVERSIONED.equals(localTextStatus) || SVNStatusKind.ADDED.equals(localTextStatus) || SVNStatusKind.IGNORED.equals(localTextStatus)) {
if (SVNStatusKind.NONE.equals(status.getRepositoryTextStatus()))
result[i] = RemoteResourceStatus.NONE;
else
result[i] = new RemoteResourceStatus(statuses[i], getRevisionFor(statuses[i]));
} else {
result[i] = new RemoteResourceStatus(statuses[i], getRevisionFor(statuses[i]));
}
monitor.worked(1);
}
return result;
} finally {
monitor.done();
}
}
Aggregations