From e77d7053fe0e6c6ce480dc746b8f5324768b3821 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Tue, 27 Sep 2016 03:22:37 +0300 Subject: [PATCH] svn: Made "LoadRecentBranchRevisions" and "ShowRevisionSelector" extend "BaseMergeTask" Code simplified --- .../integrate/LoadRecentBranchRevisions.java | 45 +++++++------------ .../MergeAllOrSelectedChooserTask.java | 2 +- .../svn/integrate/MergeCalculatorTask.java | 22 ++++----- .../idea/svn/integrate/ToBeMergedDialog.java | 4 +- 4 files changed, 32 insertions(+), 41 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 4df24119c973..070611bd7359 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/LoadRecentBranchRevisions.java @@ -21,13 +21,9 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.versionBrowser.ChangeBrowserSettings; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; -import com.intellij.util.PairConsumer; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.continuation.ContinuationContext; -import com.intellij.util.continuation.TaskDescriptor; import com.intellij.util.continuation.Where; import org.jetbrains.annotations.NotNull; -import org.jetbrains.idea.svn.SvnBundle; import org.jetbrains.idea.svn.history.LogHierarchyNode; import org.jetbrains.idea.svn.history.SvnChangeList; import org.jetbrains.idea.svn.history.SvnCommittedChangesProvider; @@ -36,13 +32,10 @@ import org.jetbrains.idea.svn.mergeinfo.OneShotMergeInfoHelper; import java.util.List; -/** -* Created with IntelliJ IDEA. -* User: Irina.Chernushina -* Date: 3/30/13 -* Time: 7:40 PM -*/ -public class LoadRecentBranchRevisions extends TaskDescriptor { +import static com.intellij.util.containers.ContainerUtil.newArrayList; +import static org.jetbrains.idea.svn.SvnBundle.message; + +public class LoadRecentBranchRevisions extends BaseMergeTask { public static final String PROP_BUNCH_SIZE = "idea.svn.quick.merge.bunch.size"; private final static int BUNCH_SIZE = 100; private int myBunchSize; @@ -50,15 +43,13 @@ public class LoadRecentBranchRevisions extends TaskDescriptor { private boolean myLastLoaded; private OneShotMergeInfoHelper myHelper; private List myCommittedChangeLists; - @NotNull private final MergeContext myMergeContext; - public LoadRecentBranchRevisions(@NotNull MergeContext mergeContext, long first) { - this(mergeContext, first, -1); + public LoadRecentBranchRevisions(@NotNull QuickMerge mergeProcess, long first) { + this(mergeProcess, first, -1); } - public LoadRecentBranchRevisions(@NotNull MergeContext mergeContext, long first, int bunchSize) { - super("Loading recent " + mergeContext.getBranchName() + " revisions", Where.POOLED); - myMergeContext = mergeContext; + public LoadRecentBranchRevisions(@NotNull QuickMerge mergeProcess, long first, int bunchSize) { + super(mergeProcess, "Loading recent " + mergeProcess.getMergeContext().getBranchName() + " revisions", Where.POOLED); myFirst = first; Integer testBunchSize = Integer.getInteger(PROP_BUNCH_SIZE); @@ -94,28 +85,24 @@ public class LoadRecentBranchRevisions extends TaskDescriptor { settings.USE_CHANGE_BEFORE_FILTER = true; } - final ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); - ProgressManager.progress2( - SvnBundle.message("progress.text2.collecting.history", myMergeContext.getSourceUrl() + (revision > 0 ? ("@" + revision) : ""))); - final List> result = ContainerUtil.newArrayList(); + ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); + ProgressManager + .progress2(message("progress.text2.collecting.history", myMergeContext.getSourceUrl() + (revision > 0 ? ("@" + revision) : ""))); + List> result = newArrayList(); ((SvnCommittedChangesProvider)myMergeContext.getVcs().getCommittedChangesProvider()) .getCommittedChangesWithMergedRevisons(settings, new SvnRepositoryLocation(myMergeContext.getSourceUrl()), myBunchSize + (revision > 0 ? 2 : 1), - new PairConsumer() { - public void consume(SvnChangeList svnList, LogHierarchyNode tree) { - indicator.setText2( - SvnBundle.message("progress.text2.processing.revision", svnList.getNumber())); - result.add(Pair.create(svnList, tree)); - } + (list, tree) -> { + indicator.setText2(message("progress.text2.processing.revision", list.getNumber())); + result.add(Pair.create(list, tree)); }); - return result; } @NotNull private List getNotMergedChangeLists(@NotNull List> changeLists) { - List result = ContainerUtil.newArrayList(); + List result = newArrayList(); for (Pair pair : changeLists) { // do not take first since it's equal diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java index 7d4f34d7cb28..e1a6b27fa99a 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeAllOrSelectedChooserTask.java @@ -36,7 +36,7 @@ public class MergeAllOrSelectedChooserTask extends BaseMergeTask { context.next(getMergeAllTasks()); break; case showLatest: - LoadRecentBranchRevisions loader = new LoadRecentBranchRevisions(myMergeContext, -1); + LoadRecentBranchRevisions loader = new LoadRecentBranchRevisions(myMergeProcess, -1); ShowRecentInDialogTask dialog = new ShowRecentInDialogTask(myMergeProcess, loader); context.next(loader, dialog); diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java index 19bed5f90c55..d3ad6698af6a 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/MergeCalculatorTask.java @@ -25,7 +25,6 @@ import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.util.Consumer; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.continuation.ContinuationContext; -import com.intellij.util.continuation.TaskDescriptor; import com.intellij.util.continuation.Where; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,7 +48,6 @@ public class MergeCalculatorTask extends BaseMergeTask @NotNull private final AtomicReference> myCopyData; - @NotNull private final String myMergeTitle; @NotNull private final MergeChecker myMergeChecker; @Override @@ -60,7 +58,6 @@ public class MergeCalculatorTask extends BaseMergeTask public MergeCalculatorTask(@NotNull QuickMerge mergeProcess) throws VcsException { super(mergeProcess, "Calculating not merged revisions", Where.POOLED); - myMergeTitle = "Merge from " + myMergeContext.getBranchName(); // TODO: Previously it was configurable - either to use OneShotMergeInfoHelper or BranchInfo as merge checker, but later that logic // TODO: was commented (in 80ebdbfea5210f6c998e67ddf28ca9c670fa4efe on 5/28/2010). // TODO: Still check if we need to preserve such configuration or it is sufficient to always use OneShotMergeInfoHelper. @@ -79,7 +76,7 @@ public class MergeCalculatorTask extends BaseMergeTask List notMergedChangeLists = getNotMergedChangeLists(afterCopyPointChangeLists); if (!notMergedChangeLists.isEmpty()) { - context.next(new ShowRevisionSelector(copyPoint, notMergedChangeLists)); + context.next(new ShowRevisionSelector(myMergeProcess, copyPoint, notMergedChangeLists, myMergeChecker)); } else { finishWithError(context, "Everything is up-to-date", false); @@ -163,22 +160,27 @@ public class MergeCalculatorTask extends BaseMergeTask return result; } - private class ShowRevisionSelector extends TaskDescriptor { + private static class ShowRevisionSelector extends BaseMergeTask { @NotNull private final List myChangeLists; + @NotNull private final MergeChecker myMergeChecker; @NotNull private final SvnBranchPointsCalculator.WrapperInvertor myCopyPoint; - private ShowRevisionSelector(@NotNull SvnBranchPointsCalculator.WrapperInvertor copyPoint, - @NotNull List changeLists) { - super("show revisions to merge", Where.AWT); + private ShowRevisionSelector(@NotNull QuickMerge mergeProcess, + @NotNull SvnBranchPointsCalculator.WrapperInvertor copyPoint, + @NotNull List changeLists, + @NotNull MergeChecker mergeChecker) { + super(mergeProcess, "show revisions to merge", Where.AWT); myCopyPoint = copyPoint; myChangeLists = changeLists; + myMergeChecker = mergeChecker; } @Override public void run(ContinuationContext context) { - QuickMergeInteraction.SelectMergeItemsResult result = myInteraction.selectMergeItems(myChangeLists, myMergeTitle, myMergeChecker); + QuickMergeInteraction.SelectMergeItemsResult result = + myInteraction.selectMergeItems(myChangeLists, myMergeContext.getTitle(), myMergeChecker); switch (result.getResultCode()) { case cancel: @@ -191,7 +193,7 @@ public class MergeCalculatorTask extends BaseMergeTask List lists = result.getSelectedLists(); if (!lists.isEmpty()) { - runChangeListsMerge(context, lists, myCopyPoint, myMergeTitle); + runChangeListsMerge(context, lists, myCopyPoint, myMergeContext.getTitle()); } break; } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java index ff9dbe46b901..1f91553b2595 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java @@ -490,7 +490,9 @@ public class ToBeMergedDialog extends DialogWrapper { @Override public void run(@NotNull ProgressIndicator indicator) { - LoadRecentBranchRevisions loader = new LoadRecentBranchRevisions(myMergeContext, myStartNumber, myQuantity); + // TODO: Update this not to create new "QuickMerge" instance + QuickMerge mergeProcess = new QuickMerge(myMergeContext, new QuickMergeInteractionImpl(myMergeContext)); + LoadRecentBranchRevisions loader = new LoadRecentBranchRevisions(mergeProcess, myStartNumber, myQuantity); try { loader.run();