blob: 2d0eeb3c5d5099f4e63b435e9471b6750da97f98 [file] [log] [blame]
package org.netbeans.lib.cvsclient.progress.receiving;
import org.netbeans.lib.cvsclient.command.CommandUtils;
import org.netbeans.lib.cvsclient.command.ICvsFiles;
import org.netbeans.lib.cvsclient.command.IFileInfo;
import org.netbeans.lib.cvsclient.event.ICvsListener;
import org.netbeans.lib.cvsclient.event.ICvsListenerRegistry;
import org.netbeans.lib.cvsclient.event.IFileInfoListener;
import org.netbeans.lib.cvsclient.event.IMessageListener;
import org.netbeans.lib.cvsclient.file.FileUtils;
import org.netbeans.lib.cvsclient.progress.IProgressViewer;
import org.netbeans.lib.cvsclient.util.BugLog;
/**
* @author Thomas Singer
*/
public final class FileInfoAndMessageResponseProgressHandler extends AbstractResponseProgressHandler
implements ICvsListener, IMessageListener, IFileInfoListener {
// Fields =================================================================
private final String examinePattern;
// Setup ==================================================================
public FileInfoAndMessageResponseProgressHandler(IProgressViewer progressViewer, ICvsFiles cvsFiles, String examinePattern) {
super(progressViewer, cvsFiles);
BugLog.getInstance().assertNotNull(examinePattern);
this.examinePattern = examinePattern;
}
// Implemented ============================================================
public void registerListeners(ICvsListenerRegistry listenerRegistry) {
listenerRegistry.addMessageListener(this);
listenerRegistry.addFileInfoListener(this);
}
public void unregisterListeners(ICvsListenerRegistry listenerRegistry) {
listenerRegistry.removeMessageListener(this);
listenerRegistry.removeFileInfoListener(this);
}
public void messageSent(String message, final byte[] byteMessage, boolean error, boolean tagged) {
if (!error || tagged) {
return;
}
final String directoryPath = CommandUtils.getExaminedDirectory(message, examinePattern);
if (directoryPath == null) {
return;
}
if (directoryPath.equals(".")) {
directoryProcessed("/");
}
else {
directoryProcessed(FileUtils.ensureLeadingSlash(directoryPath));
}
}
public void fileInfoGenerated(Object info) {
if (info instanceof IFileInfo) {
final IFileInfo fileInfo = (IFileInfo)info;
fileProcessed(fileInfo.getFileObject());
}
}
public void binaryMessageSent(final byte[] bytes) {
}
}