use of org.netbeans.lib.cvsclient.progress.receiving.FileInfoAndDirectoryResponseProgressHandler in project intellij-community by JetBrains.
the class UpdateCommand method execute.
// Implemented ============================================================
/**
* Execute the command.
* @param requestProcessor the client services object that provides any necessary
* services to this command, including the ability to actually
* process all the requests
*/
public boolean execute(IRequestProcessor requestProcessor, IEventSender eventSender, ICvsListenerRegistry listenerRegistry, IClientEnvironment clientEnvironment, IProgressViewer progressViewer) throws CommandException, AuthenticationException {
final ICvsFiles cvsFiles;
try {
cvsFiles = scanFileSystem(clientEnvironment);
} catch (IOException ex) {
throw new IOCommandException(ex);
}
final Requests requests = new Requests(CommandRequest.UPDATE, clientEnvironment);
requests.addArgumentRequest(isBuildDirectories(), "-d");
requests.addArgumentRequest(isCleanCopy(), "-C");
requests.addArgumentRequest(isResetStickyOnes(), "-A");
requests.addArgumentRequest(isUseHeadIfNotFound(), "-f");
requests.addArgumentRequest(getUpdateByDate(), "-D");
requests.addArgumentRequest(getUpdateByRevision(), "-r");
requests.addArgumentRequests(getMergeRevision1(), "-j");
requests.addArgumentRequests(getMergeRevision2(), "-j");
requests.addArgumentRequest(getKeywordSubst(), "-k");
addFileRequests(cvsFiles, requests, clientEnvironment);
requests.addLocalPathDirectoryRequest();
addArgumentRequests(requests);
DirectoryPruner directoryPruner = null;
if (isPruneDirectories()) {
directoryPruner = new DirectoryPruner(clientEnvironment);
directoryPruner.registerListeners(listenerRegistry);
}
final IRequestsProgressHandler requestsProgressHandler = new FileStateRequestsProgressHandler(new RangeProgressViewer(progressViewer, 0.0, 0.5), cvsFiles);
final ICvsListener responseProgressViewer = new FileInfoAndDirectoryResponseProgressHandler(new RangeProgressViewer(progressViewer, 0.5, 1.0), cvsFiles);
final ICvsListener updateMessageParser = new UpdateMessageParser(eventSender, clientEnvironment.getCvsFileSystem());
final ICvsListener listener = new DualListener(updateMessageParser, responseProgressViewer);
listener.registerListeners(listenerRegistry);
try {
return requestProcessor.processRequests(requests, requestsProgressHandler);
} finally {
listener.unregisterListeners(listenerRegistry);
if (directoryPruner != null) {
directoryPruner.unregisterListeners(listenerRegistry);
try {
directoryPruner.pruneEmptyDirectories();
} catch (IOException ex) {
throw new IOCommandException(ex);
}
}
}
}
Aggregations