use of com.intellij.cvsSupport2.cvsoperations.javacvsSpecificImpls.AdminReaderOnStoredRepositoryPath in project intellij-community by JetBrains.
the class GetModuleContentOperation method createGetModuleContentOperation.
private LocalPathIndifferentOperation createGetModuleContentOperation(RepositoryPathProvider adminWriter, CvsEnvironment environment, final String moduleName) {
final LocalPathIndifferentOperation operation = new LocalPathIndifferentOperation(new AdminReaderOnStoredRepositoryPath(adminWriter), environment) {
private boolean myIsInModule = false;
@Override
protected Command createCommand(CvsRootProvider root, CvsExecutionEnvironment cvsExecutionEnvironment) {
final CheckoutCommand result = new CheckoutCommand(null);
result.addModule(moduleName);
result.setRecursive(true);
return result;
}
@Override
protected ILocalFileReader createLocalFileReader() {
return ConstantLocalFileReader.FOR_EXISTING_FILE;
}
@Override
protected String getOperationName() {
return "checkout";
}
@Override
protected ILocalFileWriter createLocalFileWriter(String cvsRoot, UpdatedFilesManager mergedFilesCollector, CvsExecutionEnvironment cvsExecutionEnvironment) {
return DeafLocalFileWriter.INSTANCE;
}
@Override
public void messageSent(String message, final byte[] byteMessage, boolean error, boolean tagged) {
super.messageSent(message, byteMessage, error, tagged);
myStreamingDirectoryContentListener.setModulePath(myAdminWriterStoringRepositoryPath.getModulePath());
final Matcher matcher = UPDATING_PATTERN.matcher(message);
if (matcher.matches()) {
if (myModuleLocation != null && myModuleLocation.equals(matcher.group(1))) {
myIsInModule = true;
} else {
myStreamingDirectoryContentListener.messageSent(message);
myIsInModule = false;
}
} else if (DirectoryContentListener.moduleMessage_ver1(message)) {
myIsInModule = true;
}
if (myIsInModule) {
myStreamingDirectoryContentListener.messageSent(message);
}
final DirectoryContent streamingDirectoryContent = myStreamingDirectoryContentListener.getDirectoryContent();
if (myStreamingListener != null) {
final long timePassed = System.currentTimeMillis() - timeStamp;
if (streamingDirectoryContent.getTotalSize() > 0 && timePassed > 25L) {
myStreamingListener.consume(streamingDirectoryContent);
final DirectoryContentListener newListener = new DirectoryContentListener();
newListener.setModuleName(myStreamingDirectoryContentListener.getModuleName());
myStreamingDirectoryContentListener = newListener;
timeStamp = System.currentTimeMillis();
}
} else {
myDirectoryContentListener.getDirectoryContent().copyDataFrom(streamingDirectoryContent);
}
}
@Override
public void modifyOptions(GlobalOptions options) {
super.modifyOptions(options);
options.setDoNoChanges(true);
}
};
operation.addFinishAction(() -> myStreamingListener.consume(myStreamingDirectoryContentListener.getDirectoryContent()));
return operation;
}
Aggregations