/** * This file is part of git-as-svn. It is subject to the license terms * in the LICENSE file found in the top-level directory of this distribution * and at http://www.gnu.org/licenses/gpl-2.0.html. No part of git-as-svn, * including this file, may be copied, modified, propagated, or distributed * except according to the terms contained in the LICENSE file. */ package svnserver.replay; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.tmatesoft.svn.core.SVNException; import org.tmatesoft.svn.core.io.ISVNEditor; import java.util.Map; import java.util.TreeMap; /** * Collect copy-from information. * * @author Artem V. Navrotskiy <bozaro@users.noreply.github.com> */ public class CopyFromSVNEditor extends SVNEditorWrapper { @NotNull private final Map<String, String> copyFrom = new TreeMap<>(); @NotNull private final String basePath; public CopyFromSVNEditor(@Nullable ISVNEditor editor, @NotNull String basePath, boolean checkDelete) { super(editor, checkDelete); this.basePath = basePath; } @Override public void addDir(@NotNull String path, @Nullable String copyFromPath, long copyFromRevision) throws SVNException { if (copyFromPath != null) copyFrom.put(basePath + path, copyFromPath + "@" + copyFromRevision); super.addDir(path, copyFromPath, copyFromRevision); } @Override public void addFile(@NotNull String path, @Nullable String copyFromPath, long copyFromRevision) throws SVNException { if (copyFromPath != null) copyFrom.put(basePath + path, copyFromPath + "@" + copyFromRevision); super.addFile(path, copyFromPath, copyFromRevision); } @NotNull public Map<String, String> getCopyFrom() { return copyFrom; } }