diff --git a/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java b/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java index 2cdb924abf79..509d6fe5b665 100644 --- a/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java +++ b/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java @@ -36,25 +36,16 @@ import java.util.*; public class LinearBekController extends CascadeLinearGraphController { @NotNull private final LinearBekGraph myCompiledGraph; - private final BekIntMap myBekIntMap; - private final BekGraphLayout myBekGraphLayout; + private final LinearBekGraphBuilder myLinearBekGraphBuilder; public LinearBekController(@NotNull BekBaseLinearGraphController controller, @NotNull PermanentGraphInfo permanentGraphInfo) { super(controller, permanentGraphInfo); - myBekIntMap = controller.getBekIntMap(); - myBekGraphLayout = new BekGraphLayout(permanentGraphInfo.getPermanentGraphLayout(), myBekIntMap); - myCompiledGraph = compileGraph(getDelegateLinearGraphController().getCompiledGraph(), myBekGraphLayout); - } + myCompiledGraph = new LinearBekGraph(getDelegateLinearGraphController().getCompiledGraph()); + myLinearBekGraphBuilder = new LinearBekGraphBuilder(myCompiledGraph, new BekGraphLayout(permanentGraphInfo.getPermanentGraphLayout(), controller.getBekIntMap())); - static LinearBekGraph compileGraph(@NotNull LinearGraph graph, @NotNull GraphLayout graphLayout) { long start = System.currentTimeMillis(); - - LinearBekGraph linearBekGraph = new LinearBekGraph(graph); - new LinearBekGraphBuilder(linearBekGraph, graphLayout).collapseAll(); - + myLinearBekGraphBuilder.collapseAll(); System.err.println((System.currentTimeMillis() - start) / 1000.0 + " sec"); - - return linearBekGraph; } @NotNull @@ -77,7 +68,7 @@ public class LinearBekController extends CascadeLinearGraphController { } } else if (graphElement instanceof GraphNode) { - if (new LinearBekGraphBuilder(myCompiledGraph, myBekGraphLayout).collapseFragment(((GraphNode)graphElement).getNodeIndex())) { + if (myLinearBekGraphBuilder.collapseFragment(((GraphNode)graphElement).getNodeIndex())) { return new LinearGraphAnswer(GraphChanges.SOME_CHANGES, null, null, null); } } @@ -92,8 +83,7 @@ public class LinearBekController extends CascadeLinearGraphController { } } else if (graphElement instanceof GraphNode) { - LinearBekGraphBuilder.MergeFragment fragment = - new LinearBekGraphBuilder(myCompiledGraph, myBekGraphLayout).getFragment(((GraphNode)graphElement).getNodeIndex()); + LinearBekGraphBuilder.MergeFragment fragment = myLinearBekGraphBuilder.getFragment(((GraphNode)graphElement).getNodeIndex()); if (fragment != null) { return LinearGraphUtils.createSelectedAnswer(myCompiledGraph, fragment.getAllNodes()); } diff --git a/platform/vcs-log/graph/test/com/intellij/vcs/log/graph/linearBek/TestUtils.kt b/platform/vcs-log/graph/test/com/intellij/vcs/log/graph/linearBek/TestUtils.kt index ceda9c8be901..f4585ad6dc02 100644 --- a/platform/vcs-log/graph/test/com/intellij/vcs/log/graph/linearBek/TestUtils.kt +++ b/platform/vcs-log/graph/test/com/intellij/vcs/log/graph/linearBek/TestUtils.kt @@ -38,7 +38,8 @@ public fun runLinearBek(graphBuilder: TestGraphBuilder.() -> Unit): LinearBekGra val beforeLinearBek = log.graph.graph(graphBuilder) val beforeLinearBekLayout = GraphLayoutBuilder.build(beforeLinearBek, {(nodeIndex1, nodeIndex2) -> nodeIndex1 - nodeIndex2 }) - val afterLinearBek = LinearBekController.compileGraph(beforeLinearBek, beforeLinearBekLayout) + val afterLinearBek = LinearBekGraph(beforeLinearBek) + LinearBekGraphBuilder(afterLinearBek, beforeLinearBekLayout).collapseAll() return afterLinearBek }