package org.tmatesoft.svn.core.internal.wc2.ng; import java.io.File; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.internal.wc17.SVNWCContext; import org.tmatesoft.svn.core.internal.wc17.SVNWCContext.ISVNWCNodeHandler; import org.tmatesoft.svn.core.internal.wc17.db.ISVNWCDb.SVNWCDbKind; import org.tmatesoft.svn.core.internal.wc17.db.ISVNWCDb.WCDbInfo; import org.tmatesoft.svn.core.internal.wc17.db.ISVNWCDb.WCDbInfo.InfoField; import org.tmatesoft.svn.core.wc.ISVNChangelistHandler; import org.tmatesoft.svn.core.wc2.SvnGetChangelistPaths; import org.tmatesoft.svn.core.wc2.SvnTarget; public class SvnNgGetChangelistPaths extends SvnNgOperationRunner<String, SvnGetChangelistPaths> implements ISVNChangelistHandler, ISVNWCNodeHandler { private SVNWCContext context; @Override protected String run(SVNWCContext context) throws SVNException { this.context = context; for (SvnTarget target: getOperation().getTargets()) { doGetChangeLists(target.getFile()); } return getOperation().first(); } public void doGetChangeLists(File file) throws SVNException { context.nodeWalkChildren(file, this, false, getOperation().getDepth(), getOperation().getApplicableChangelists()); } public void nodeFound(File localAbsPath, SVNWCDbKind kind) throws SVNException { WCDbInfo info = context.getDb().readInfo(localAbsPath, InfoField.changelist); if (context.matchesChangelist(localAbsPath, getOperation().getApplicableChangelists())) { handle(localAbsPath, info.changelist); } } public void handle(File path, String changelistName) { try { getOperation().receive(SvnTarget.fromFile(path), changelistName); } catch (SVNException e) { } } }