package org.tmatesoft.svn.core.javahl17; import java.io.File; import org.apache.subversion.javahl.ClientNotifyInformation; import org.apache.subversion.javahl.callback.ClientNotifyCallback; import org.tmatesoft.svn.core.SVNCancelException; import org.tmatesoft.svn.core.internal.wc.SVNErrorManager; import org.tmatesoft.svn.core.wc.ISVNEventHandler; import org.tmatesoft.svn.core.wc.SVNEvent; import org.tmatesoft.svn.core.wc.SVNEventAction; import org.tmatesoft.svn.util.SVNLogType; public class JavaHLEventHandler implements ISVNEventHandler { private ClientNotifyCallback notifyCallback; private boolean cancelOperation; private String pathPrefix; public JavaHLEventHandler() { this.cancelOperation = false; resetPathPrefix(); } public void setNotifyCallback(ClientNotifyCallback notifyCallback) { this.notifyCallback = notifyCallback; } public void setCancelOperation(boolean cancelOperation) { this.cancelOperation = cancelOperation; } public void cancelOperation() { setCancelOperation(true); } public void setPathPrefix(String pathPrefix) { this.pathPrefix = pathPrefix; } public void resetPathPrefix() { setPathPrefix(null); } public void handleEvent(SVNEvent event, double progress) { if (event.getAction() == SVNEventAction.UPGRADE) { return; } String path = null; if (event.getFile() != null) { path = event.getFile().getAbsolutePath(); if (path != null) { path = path.replace(File.separatorChar, '/'); } } if (path == null) { path = ""; } if (notifyCallback != null) { String pathPrefix = this.pathPrefix == null ? "" : this.pathPrefix; ClientNotifyInformation ni = SVNClientImpl.getClientNotifyInformation(pathPrefix, event, path); if (ni != null) { notifyCallback.onNotify(ni); } } } public void checkCancelled() throws SVNCancelException { if (cancelOperation) { cancelOperation = false; SVNErrorManager.cancel("operation cancelled", SVNLogType.DEFAULT); } } }