package fitnesse.revisioncontrol.svn.client;
import fitnesse.html.HtmlTag;
import fitnesse.revisioncontrol.OperationStatus;
import fitnesse.revisioncontrol.Results;
import fitnesse.revisioncontrol.RevisionControlDetail;
import fitnesse.revisioncontrol.RevisionControlException;
import org.tmatesoft.svn.core.SVNCancelException;
import org.tmatesoft.svn.core.SVNErrorMessage;
import org.tmatesoft.svn.core.wc.ISVNEventHandler;
import org.tmatesoft.svn.core.wc.SVNEvent;
import org.tmatesoft.svn.core.wc.SVNEventAction;
public class SVNResultsHandler implements ISVNEventHandler {
private Results results;
public SVNResultsHandler(Results results) {
this.results = results;
}
public void handleEvent(SVNEvent event, double progress) {
SVNErrorMessage errorMessage = event.getErrorMessage();
if (errorMessage != null) {
results.setStatus(OperationStatus.FAILURE);
throw new RevisionControlException(errorMessage.getFullMessage());
}
SVNEventAction action = event.getAction();
if (isCompletedAction(action)) {
return;
}
String path = event.getFile().getAbsolutePath();
HtmlTag actionName = SVNEventActionTags.getTag(action);
results.addDetail(new RevisionControlDetail(path, actionName));
}
private boolean isCompletedAction(SVNEventAction action) {
return action == SVNEventAction.COMMIT_COMPLETED ||
action == SVNEventAction.UPDATE_COMPLETED ||
action == SVNEventAction.STATUS_COMPLETED;
}
public void checkCancelled() throws SVNCancelException {
}
}