Skip to content

Commit 6bda857

Browse files
author
David Hasani
committed
only show plan once
1 parent 8531334 commit 6bda857

File tree

4 files changed

+50
-4
lines changed

4 files changed

+50
-4
lines changed

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.STATES_AFTE
5151
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.calculateTotalLatency
5252
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getModuleOrProjectNameForFile
5353
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getPathToHilDependencyReportDir
54+
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isPlanComplete
5455
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isValidCodeTransformConnection
5556
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.pollTransformationStatusAndPlan
5657
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.toTransformationLanguage
@@ -441,6 +442,7 @@ class CodeModernizerSession(
441442
// add delay to avoid the throttling error
442443
delay(1000)
443444

445+
var isTransformationPlanEditorOpened = false
444446
var passedBuild = false
445447
var passedStart = false
446448

@@ -477,9 +479,12 @@ class CodeModernizerSession(
477479
}
478480
}
479481

480-
// open plan once available (N/A for SQL conversions)
481-
if (transformType != CodeTransformType.SQL_CONVERSION) {
482-
tryOpenTransformationPlanEditor()
482+
if (!isTransformationPlanEditorOpened) {
483+
val isPlanComplete = isPlanComplete(state.transformationPlan)
484+
if (isPlanComplete) {
485+
tryOpenTransformationPlanEditor()
486+
isTransformationPlanEditorOpened = true
487+
}
483488
}
484489
val instant = Instant.now()
485490
// Set the job start time

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManager.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.panels.CodeModern
2828
import software.aws.toolkits.jetbrains.services.codemodernizer.panels.LoadingPanel
2929
import software.aws.toolkits.jetbrains.services.codemodernizer.state.CodeModernizerSessionState
3030
import software.aws.toolkits.jetbrains.services.codemodernizer.toolwindow.CodeModernizerBottomToolWindowFactory
31+
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isPlanComplete
3132
import software.aws.toolkits.resources.message
3233
import java.awt.BorderLayout
3334
import java.awt.Component
@@ -251,7 +252,7 @@ class CodeModernizerBottomWindowPanelManager(private val project: Project) : JPa
251252
TransformationStatus.PAUSED,
252253
TransformationStatus.COMPLETED,
253254
TransformationStatus.PARTIALLY_COMPLETED
254-
) && transformType != CodeTransformType.SQL_CONVERSION // no plan for SQL conversions
255+
) && transformType == CodeTransformType.LANGUAGE_UPGRADE && isPlanComplete(plan)
255256
) {
256257
addPlanToBanner()
257258
}

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/utils/CodeTransformApiUtils.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package software.aws.toolkits.jetbrains.services.codemodernizer.utils
55

66
import com.fasterxml.jackson.module.kotlin.readValue
7+
import com.intellij.grazie.utils.orFalse
78
import com.intellij.notification.NotificationAction
89
import com.intellij.openapi.application.runInEdt
910
import com.intellij.openapi.application.runWriteAction
@@ -285,6 +286,9 @@ fun findDownloadArtifactProgressUpdate(transformationSteps: List<TransformationS
285286
update.downloadArtifacts()?.firstOrNull()?.downloadArtifactId() != null
286287
}
287288

289+
// once dependency changes table (key of "1") available, plan is complete
290+
fun isPlanComplete(plan: TransformationPlan?) = plan?.transformationSteps()?.get(0)?.progressUpdates()?.any { update -> update.name() == "1" }.orFalse()
291+
288292
// "name" holds the ID of the corresponding plan step (where table will go) and "description" holds the plan data
289293
fun getTableMapping(stepZeroProgressUpdates: List<TransformationProgressUpdate>): Map<String, List<String>> =
290294
stepZeroProgressUpdates.groupBy(

plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerUtilsTest.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.createClien
3535
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getBillingText
3636
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getClientInstructionArtifactId
3737
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getTableMapping
38+
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isPlanComplete
3839
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.parseBuildFile
3940
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.pollTransformationStatusAndPlan
4041
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.refreshToken
@@ -252,6 +253,41 @@ class CodeWhispererCodeModernizerUtilsTest : CodeWhispererCodeModernizerTestBase
252253
assertThat(combinedTable?.columns).hasSize(4)
253254
}
254255

256+
@Test
257+
fun `isPlanComplete returns true when plan has progress update with name '1'`() {
258+
// Arrange
259+
val plan = TransformationPlan.builder()
260+
.transformationSteps(listOf(
261+
TransformationStep.builder()
262+
.progressUpdates(listOf(
263+
TransformationProgressUpdate.builder()
264+
.name("1")
265+
.build()
266+
))
267+
.build()
268+
))
269+
.build()
270+
val result = isPlanComplete(plan)
271+
assertThat(result).isTrue()
272+
}
273+
274+
@Test
275+
fun `isPlanComplete returns false when plan has no progress update with name '1'`() {
276+
val plan = TransformationPlan.builder()
277+
.transformationSteps(listOf(
278+
TransformationStep.builder()
279+
.progressUpdates(listOf(
280+
TransformationProgressUpdate.builder()
281+
.name("2")
282+
.build()
283+
))
284+
.build()
285+
))
286+
.build()
287+
val result = isPlanComplete(plan)
288+
assertThat(result).isFalse()
289+
}
290+
255291
@Test
256292
fun `getClientInstructionArtifactId extracts artifact ID from transformation plan`() {
257293
val step1 = TransformationStep.builder()

0 commit comments

Comments
 (0)