package org.tmatesoft.svn.core.internal.wc2.old; import org.tmatesoft.svn.core.SVNCommitInfo; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc16.SVNCopyClient16; import org.tmatesoft.svn.core.internal.wc2.SvnWcGeneration; import org.tmatesoft.svn.core.internal.wc2.compat.SvnCodec; import org.tmatesoft.svn.core.wc.ISVNExternalsHandler; import org.tmatesoft.svn.core.wc.SVNCopySource; import org.tmatesoft.svn.core.wc2.SvnCopySource; import org.tmatesoft.svn.core.wc2.SvnOperationFactory; import org.tmatesoft.svn.core.wc2.SvnRemoteCopy; import org.tmatesoft.svn.core.wc2.SvnTarget; public class SvnOldRemoteCopy extends SvnOldRunner<SVNCommitInfo, SvnRemoteCopy> { @Override public boolean isApplicable(SvnRemoteCopy operation, SvnWcGeneration wcGeneration) throws SVNException { if (operation.getFirstTarget().isURL()) { for (SvnCopySource source : operation.getSources()) { if (source.getSource().getFile() != null) { SvnWcGeneration sourceFormat = SvnOperationFactory.detectWcGeneration(source.getSource().getFile(), false); if (sourceFormat != SvnWcGeneration.V16) { return false; } } } // copy from old_wc[@rev] to url return true; } return false; } @Override protected SVNCommitInfo run() throws SVNException { SVNCopyClient16 client = new SVNCopyClient16(getOperation().getRepositoryPool(), getOperation().getOptions()); client.setEventHandler(getOperation().getEventHandler()); client.setOptions(getOperation().getOptions()); client.setCommitHandler(SvnCodec.commitHandler(getOperation().getCommitHandler())); client.setExternalsHandler(SvnCodec.externalsHandler(getOperation().getExternalsHandler())); client.setDisableLocalModificationCopying(getOperation().isDisableLocalModifications()); client.setCommitParameters(SvnCodec.commitParameters(getOperation().getCommitParameters())); SvnTarget target = getOperation().getFirstTarget(); SVNCopySource[] sources = new SVNCopySource[getOperation().getSources().size()]; int i = 0; for (SvnCopySource newSource : getOperation().getSources()) { sources[i] = SvnCodec.copySource(newSource); i++; } SVNCommitInfo info = client.doCopy(sources, target.getURL(), getOperation().isMove(), getOperation().isMakeParents(), getOperation().isFailWhenDstExists(), getOperation().getCommitMessage(), getOperation().getRevisionProperties()); if (info != null) { getOperation().receive(getOperation().getFirstTarget(), info); } return info; } }