package org.tmatesoft.svn.core.internal.wc2.ng; import java.io.File; import java.util.Collection; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc.SVNFileUtil; import org.tmatesoft.svn.core.internal.wc17.SVNCommitter17; import org.tmatesoft.svn.core.internal.wc17.SVNWCContext; import org.tmatesoft.svn.core.internal.wc2.SvnLocalOperationRunner; import org.tmatesoft.svn.core.internal.wc2.SvnWcGeneration; import org.tmatesoft.svn.core.wc2.ISvnCommitParameters; import org.tmatesoft.svn.core.wc2.SvnOperation; public abstract class SvnNgOperationRunner<V, T extends SvnOperation<V>> extends SvnLocalOperationRunner<V, T> { private SvnNgRepositoryAccess repositoryAccess; protected V run() throws SVNException { return run(getWcContext()); } protected boolean matchesChangelist(File target) { return getWcContext().matchesChangelist(target, getOperation().getApplicableChangelists()); } protected SvnNgRepositoryAccess getRepositoryAccess() throws SVNException { if (repositoryAccess == null) { repositoryAccess = new SvnNgRepositoryAccess(getOperation(), getWcContext()); } return repositoryAccess; } protected void setRepositoryAccess(SvnNgRepositoryAccess repositoryAccess) { this.repositoryAccess = repositoryAccess; } protected abstract V run(SVNWCContext context) throws SVNException; @Override public void reset(SvnWcGeneration wcGeneration) { super.reset(wcGeneration); repositoryAccess = null; } public SvnWcGeneration getWcGeneration() { return SvnWcGeneration.V17; } protected void deleteDeleteFiles(SVNCommitter17 committer, ISvnCommitParameters parameters) { if (parameters == null) { return; } Collection<File> deletedPaths = committer.getDeletedPaths(); for (File deletedPath : deletedPaths) { boolean delete = false; if (deletedPath.isFile()) { delete = parameters.onFileDeletion(deletedPath); } else if (deletedPath.isDirectory()) { delete = parameters.onDirectoryDeletion(deletedPath); } if (delete) { SVNFileUtil.deleteAll(deletedPath, true); } } } }