Mercurial > hg > mercurial
view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/diff/DiffTree.java @ 701:ec3a72046099
more code for diffs. Handle commit not reported case
author | eugene.petrenko@jetbrains.com |
---|---|
date | Tue, 07 Jan 2014 12:51:27 +0100 |
parents | |
children |
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial.command.diff; import jetbrains.buildServer.vcs.VcsException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; /** * Created 03.01.14 16:12 * * @author Eugene Petrenko (eugene.petrenko@jetbrains.com) */ public class DiffTree { private final Map<String, DiffFileTree> myFileToDiffs = new HashMap<String, DiffFileTree>(); private DiffFileTree getOrCreateTree(@NotNull final String file) { DiffFileTree tree = myFileToDiffs.get(file); if (tree != null) return tree; tree = createDiffFileTree(file); myFileToDiffs.put(file, tree); return tree; } @NotNull protected DiffFileTree createDiffFileTree(@NotNull final String file) { return new DiffFileTree(); } @NotNull public DiffProcessor processor() { return new DiffProcessor() { public void append(@NotNull String revision, @Nullable String baseRevision, @NotNull String file, @NotNull String line) { getOrCreateTree(file).processor().append(revision, baseRevision, file, line); } public void unchanged(@NotNull String revision, @Nullable String baseRevision, @NotNull String file, @NotNull String line) { getOrCreateTree(file).processor().unchanged(revision, baseRevision, file, line); } public void remove(@NotNull String revision, @Nullable String baseRevision, @NotNull String file, @NotNull String line) { getOrCreateTree(file).processor().remove(revision, baseRevision, file, line); } }; } public void processDiffs(@NotNull final ContentProcessor processor) throws VcsException { for (Map.Entry<String, DiffFileTree> e : myFileToDiffs.entrySet()) { final String file = e.getKey(); e.getValue().resolve(new FileContentProcessor() { public void processContent(@NotNull final String commit, @NotNull final Collection<String> lines) { processor.processContent(commit, file, lines); } }); } } }