From e60c03e0adae8fdb5ce90046cf3138bfb99c3fcb Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Thu, 20 Oct 2016 02:02:50 +0300 Subject: [PATCH] svn: Refactored "LoadRecentBranchRevisions" - code simplified --- .../integrate/LoadRecentBranchRevisions.java | 48 ++++++++----------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java index 7512a8ee40de..648e509f5cef 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java @@ -19,6 +19,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings; import com.intellij.util.Consumer; +import com.intellij.util.PairFunction; import com.intellij.util.continuation.Where; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.svn.history.LogHierarchyNode; @@ -72,8 +73,13 @@ public class LoadRecentBranchRevisions extends BaseMergeTask { @NotNull public static Pair, Boolean> loadChangeLists(@NotNull MergeContext mergeContext, long beforeRevision, int size) throws VcsException { - List changeLists = getNotMergedChangeLists(getChangeListsBefore(mergeContext, beforeRevision, size), beforeRevision); + ChangeBrowserSettings settings = new ChangeBrowserSettings(); + if (beforeRevision > 0) { + settings.CHANGE_BEFORE = String.valueOf(beforeRevision); + settings.USE_CHANGE_BEFORE_FILTER = true; + } + List changeLists = getChangeLists(mergeContext, settings, beforeRevision, size, (changeList, tree) -> changeList); return Pair.create( changeLists.subList(0, min(size, changeLists.size())), changeLists.size() < size + 1); @@ -86,37 +92,21 @@ public class LoadRecentBranchRevisions extends BaseMergeTask { } @NotNull - private static List> getChangeListsBefore(@NotNull MergeContext mergeContext, - long beforeRevision, - int size) throws VcsException { - ChangeBrowserSettings settings = new ChangeBrowserSettings(); - if (beforeRevision > 0) { - settings.CHANGE_BEFORE = String.valueOf(beforeRevision); - settings.USE_CHANGE_BEFORE_FILTER = true; - } - - List> result = newArrayList(); + private static List getChangeLists(@NotNull MergeContext mergeContext, + @NotNull ChangeBrowserSettings settings, + long revisionToExclude, + int size, + @NotNull PairFunction resultProvider) throws VcsException { + List result = newArrayList(); ((SvnCommittedChangesProvider)mergeContext.getVcs().getCommittedChangesProvider()) .getCommittedChangesWithMergedRevisons(settings, new SvnRepositoryLocation(mergeContext.getSourceUrl()), - size + (beforeRevision > 0 ? 2 : 1), - (list, tree) -> result.add(Pair.create(list, tree))); - return result; - } - - @NotNull - private static List getNotMergedChangeLists(@NotNull List> changeLists, - long revision) { - List result = newArrayList(); - - for (Pair pair : changeLists) { - // do not take first since it's equal - if (revision <= 0 || revision != pair.getFirst().getNumber()) { - // TODO: Currently path filtering from MergeCalculatorTask.checkListForPaths is not applied as it removes some necessary revisions - // TODO: (i.e. merge revisions) from list. Check if that filtering is really necessary for "Quick Manual Select" option. - result.add(pair.getFirst()); - } - } + size + (revisionToExclude > 0 ? 2 : 1), + (changeList, tree) -> { + if (revisionToExclude != changeList.getNumber()) { + result.add(resultProvider.fun(changeList, tree)); + } + }); return result; }