Skip to content

Commit 61fd91a

Browse files
author
David Hasani
committed
part 1 of DMS support
1 parent 13e5d8d commit 61fd91a

File tree

27 files changed

+556
-85
lines changed

27 files changed

+556
-85
lines changed

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

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ import software.aws.toolkits.jetbrains.services.amazonq.CODE_TRANSFORM_TROUBLESH
3535
import software.aws.toolkits.jetbrains.services.codemodernizer.client.GumbyClient
3636
import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformMessageListener
3737
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.HIL_POM_FILE_NAME
38+
import software.aws.toolkits.jetbrains.services.codemodernizer.controller.CodeTransformChatController
3839
import software.aws.toolkits.jetbrains.services.codemodernizer.file.PomFileAnnotator
3940
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerException
4041
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerJobCompletedResult
4142
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerSessionContext
4243
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerStartJobResult
4344
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeTransformHilDownloadArtifact
45+
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeTransformType
4446
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSelection
4547
import software.aws.toolkits.jetbrains.services.codemodernizer.model.Dependency
4648
import software.aws.toolkits.jetbrains.services.codemodernizer.model.InvalidTelemetryReason
@@ -59,6 +61,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.toolwindow.CodeMo
5961
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.STATES_WHERE_PLAN_EXIST
6062
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.createFileCopy
6163
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.findLineNumberByString
64+
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getJavaModules
6265
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getMavenVersion
6366
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getModuleOrProjectNameForFile
6467
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getPathToHilArtifactPomFile
@@ -124,53 +127,65 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
124127
JavaSdkVersion.JDK_1_8 to setOf(JavaSdkVersion.JDK_17),
125128
JavaSdkVersion.JDK_11 to setOf(JavaSdkVersion.JDK_17),
126129
)
130+
127131
init {
128132
CodeModernizerSessionState.getInstance(project).setDefaults()
129133
}
130134

131-
fun validate(project: Project): ValidationResult {
135+
fun validate(project: Project, transformationType: CodeTransformType): ValidationResult {
132136
fun validateCore(project: Project): ValidationResult {
133137
if (isRunningOnRemoteBackend()) {
134138
return ValidationResult(
135139
false,
136-
message("codemodernizer.notification.warn.invalid_project.description.reason.remote_backend"),
137140
InvalidTelemetryReason(
138-
CodeTransformPreValidationError.RemoteRunProject
141+
CodeTransformPreValidationError.RemoteRunProject,
139142
)
140143
)
141144
}
142145
if (!isCodeTransformAvailable(project)) {
143146
return ValidationResult(
144147
false,
145-
message("codemodernizer.notification.warn.invalid_project.description.reason.not_logged_in"),
146148
InvalidTelemetryReason(
147-
CodeTransformPreValidationError.NonSsoLogin
149+
CodeTransformPreValidationError.NonSsoLogin,
148150
)
149151
)
150152
}
151153

152154
if (ProjectRootManager.getInstance(project).contentRoots.isEmpty()) {
153155
return ValidationResult(
154156
false,
155-
message("codemodernizer.notification.warn.invalid_project.description.reason.missing_content_roots"),
156157
InvalidTelemetryReason(
157-
CodeTransformPreValidationError.NoPom
158+
CodeTransformPreValidationError.EmptyProject,
158159
)
159160
)
160161
}
162+
163+
if (transformationType == CodeTransformType.SQL_CONVERSION) {
164+
val javaModules = project.getJavaModules()
165+
return if (javaModules.isNotEmpty()) {
166+
ValidationResult(
167+
true,
168+
validatedJavaModules = javaModules,
169+
)
170+
} else {
171+
ValidationResult(
172+
false,
173+
InvalidTelemetryReason(
174+
CodeTransformPreValidationError.NoJavaProject,
175+
)
176+
)
177+
}
178+
}
179+
161180
val supportedModules = project.getSupportedModules(supportedJavaMappings).toSet()
162181
val validProjectJdk = project.getSupportedJavaMappings(supportedJavaMappings).isNotEmpty()
163182
val projectJdk = project.tryGetJdk()
164183
if (supportedModules.isEmpty() && !validProjectJdk) {
165184
return ValidationResult(
166185
false,
167-
message(
168-
"codemodernizer.notification.warn.invalid_project.description.reason.invalid_jdk_versions",
169-
supportedJavaMappings.keys.joinToString()
170-
),
171186
InvalidTelemetryReason(
172187
CodeTransformPreValidationError.UnsupportedJavaVersion,
173-
projectJdk?.toString().orEmpty()
188+
projectJdk.toString()
174189
)
175190
)
176191
}
@@ -179,17 +194,12 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
179194
ValidationResult(
180195
true,
181196
validatedBuildFiles = validatedBuildFiles,
182-
validatedProjectJdkName = projectJdk?.description.orEmpty(),
183197
buildSystem = CodeTransformBuildSystem.Maven,
184198
buildSystemVersion = getMavenVersion(project)
185199
)
186200
} else {
187201
ValidationResult(
188202
false,
189-
invalidReason = message(
190-
"codemodernizer.notification.warn.invalid_project.description.reason.no_valid_files",
191-
supportedBuildFileNames.joinToString()
192-
),
193203
invalidTelemetryReason = InvalidTelemetryReason(
194204
CodeTransformPreValidationError.UnsupportedBuildSystem,
195205
if (isGradleProject(project)) "Gradle build" else "other build"
@@ -247,7 +257,7 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
247257
}
248258
}
249259

250-
fun runModernize(copyResult: MavenCopyCommandsResult) {
260+
fun runModernize(copyResult: MavenCopyCommandsResult? = null) {
251261
initStopParameters()
252262
val session = codeTransformationSession as CodeModernizerSession
253263
initModernizationJobUI(true, project.getModuleOrProjectNameForFile(session.sessionContext.configurationFile))
@@ -311,7 +321,7 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
311321
)
312322
}
313323

314-
fun launchModernizationJob(session: CodeModernizerSession, copyResult: MavenCopyCommandsResult) = projectCoroutineScope(project).launch {
324+
fun launchModernizationJob(session: CodeModernizerSession, copyResult: MavenCopyCommandsResult?) = projectCoroutineScope(project).launch {
315325
val result = initModernizationJob(session, copyResult)
316326

317327
postModernizationJob(result)
@@ -394,7 +404,7 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
394404

395405
fun parseBuildFile(): String? = parseBuildFile(codeTransformationSession?.sessionContext?.configurationFile)
396406

397-
internal suspend fun initModernizationJob(session: CodeModernizerSession, copyResult: MavenCopyCommandsResult): CodeModernizerJobCompletedResult =
407+
private suspend fun initModernizationJob(session: CodeModernizerSession, copyResult: MavenCopyCommandsResult?): CodeModernizerJobCompletedResult =
398408
when (val result = session.createModernizationJob(copyResult)) {
399409
is CodeModernizerStartJobResult.ZipCreationFailed -> {
400410
CodeModernizerJobCompletedResult.UnableToCreateJob(
@@ -666,10 +676,13 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
666676
fun createCodeModernizerSession(customerSelection: CustomerSelection, project: Project) {
667677
codeTransformationSession = CodeModernizerSession(
668678
CodeModernizerSessionContext(
669-
project,
670-
customerSelection.configurationFile,
671-
customerSelection.sourceJavaVersion,
672-
customerSelection.targetJavaVersion,
679+
project = project,
680+
configurationFile = customerSelection.configurationFile,
681+
sourceJavaVersion = customerSelection.sourceJavaVersion,
682+
targetJavaVersion = customerSelection.targetJavaVersion,
683+
sourceVendor = customerSelection.sourceVendor,
684+
targetVendor = customerSelection.targetVendor,
685+
sourceServerName = customerSelection.sourceServerName,
673686
),
674687
)
675688
}

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

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

66
import com.intellij.openapi.Disposable
77
import com.intellij.openapi.application.runInEdt
8+
import com.intellij.openapi.projectRoots.JavaSdkVersion
89
import com.intellij.serviceContainer.AlreadyDisposedException
910
import com.intellij.util.io.HttpRequests
1011
import kotlinx.coroutines.delay
@@ -49,6 +50,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isValidCode
4950
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.pollTransformationStatusAndPlan
5051
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.toTransformationLanguage
5152
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhispererCodeScanSession
53+
import software.aws.toolkits.jetbrains.utils.notifyStickyInfo
5254
import software.aws.toolkits.resources.message
5355
import java.io.File
5456
import java.io.FileInputStream
@@ -144,7 +146,7 @@ class CodeModernizerSession(
144146
*
145147
* Based on [CodeWhispererCodeScanSession]
146148
*/
147-
fun createModernizationJob(copyResult: MavenCopyCommandsResult): CodeModernizerStartJobResult {
149+
fun createModernizationJob(copyResult: MavenCopyCommandsResult?): CodeModernizerStartJobResult {
148150
LOG.info { "Compressing local project" }
149151
val payload: File?
150152
var payloadSize = 0
@@ -272,7 +274,9 @@ class CodeModernizerSession(
272274
} finally {
273275
telemetry.uploadProject(payloadSize, startTime, true, telemetryErrorMessage)
274276
if (payload != null) {
275-
deleteUploadArtifact(payload)
277+
// TODO: revert
278+
notifyStickyInfo("zip path", payload.path)
279+
// deleteUploadArtifact(payload)
276280
}
277281
}
278282

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ private enum class CodeTransformMessageTypes(val type: String) {
3232
TabCreated("new-tab-was-created"),
3333
TabRemoved("tab-was-removed"),
3434
Transform("transform"),
35+
ChatPrompt("chat-prompt"), // for getting the transformation objective
3536
CodeTransformStart("codetransform-start"),
37+
CodeTransformSelectSQLMetadata("codetransform-select-sql-metadata"),
38+
CodeTransformSelectSQLModuleSchema("codetransform-select-sql-module-schema"),
3639
CodeTransformStop("codetransform-stop"),
3740
CodeTransformCancel("codetransform-cancel"),
3841
CodeTransformConfirmSkipTests("codetransform-confirm-skip-tests"),
@@ -63,8 +66,11 @@ class CodeTransformChatApp : AmazonQApp {
6366
CodeTransformMessageTypes.TabRemoved.type to IncomingCodeTransformMessage.TabRemoved::class,
6467
CodeTransformMessageTypes.Transform.type to IncomingCodeTransformMessage.Transform::class,
6568
CodeTransformMessageTypes.CodeTransformStart.type to IncomingCodeTransformMessage.CodeTransformStart::class,
69+
CodeTransformMessageTypes.CodeTransformSelectSQLMetadata.type to IncomingCodeTransformMessage.CodeTransformSelectSQLMetadata::class,
70+
CodeTransformMessageTypes.CodeTransformSelectSQLModuleSchema.type to IncomingCodeTransformMessage.CodeTransformSelectSQLModuleSchema::class,
6671
CodeTransformMessageTypes.CodeTransformStop.type to IncomingCodeTransformMessage.CodeTransformStop::class,
6772
CodeTransformMessageTypes.CodeTransformCancel.type to IncomingCodeTransformMessage.CodeTransformCancel::class,
73+
CodeTransformMessageTypes.ChatPrompt.type to IncomingCodeTransformMessage.ChatPrompt::class,
6874
CodeTransformMessageTypes.CodeTransformConfirmSkipTests.type to IncomingCodeTransformMessage.CodeTransformConfirmSkipTests::class,
6975
CodeTransformMessageTypes.CodeTransformNew.type to IncomingCodeTransformMessage.CodeTransformNew::class,
7076
CodeTransformMessageTypes.CodeTransformOpenTransformHub.type to IncomingCodeTransformMessage.CodeTransformOpenTransformHub::class,
@@ -153,8 +159,11 @@ class CodeTransformChatApp : AmazonQApp {
153159
when (message) {
154160
is IncomingCodeTransformMessage.Transform -> inboundAppMessagesHandler.processTransformQuickAction(message)
155161
is IncomingCodeTransformMessage.CodeTransformStart -> inboundAppMessagesHandler.processCodeTransformStartAction(message)
162+
is IncomingCodeTransformMessage.CodeTransformSelectSQLMetadata -> inboundAppMessagesHandler.processCodeTransformSelectSQLMetadataAction(message)
163+
is IncomingCodeTransformMessage.CodeTransformSelectSQLModuleSchema -> inboundAppMessagesHandler.processCodeTransformSelectSQLModuleSchemaAction(message)
156164
is IncomingCodeTransformMessage.CodeTransformCancel -> inboundAppMessagesHandler.processCodeTransformCancelAction(message)
157165
is IncomingCodeTransformMessage.CodeTransformStop -> inboundAppMessagesHandler.processCodeTransformStopAction(message.tabId)
166+
is IncomingCodeTransformMessage.ChatPrompt -> inboundAppMessagesHandler.processChatPromptMessage(message)
158167
is IncomingCodeTransformMessage.CodeTransformConfirmSkipTests -> inboundAppMessagesHandler.processCodeTransformConfirmSkipTests(message)
159168
is IncomingCodeTransformMessage.CodeTransformNew -> inboundAppMessagesHandler.processCodeTransformNewAction(message)
160169
is IncomingCodeTransformMessage.CodeTransformOpenTransformHub -> inboundAppMessagesHandler.processCodeTransformOpenTransformHub(message)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class CodeTransformTelemetryManager(private val project: Project) {
6161
codeTransformBuildSystem = validationResult.buildSystem,
6262
codeTransformSessionId = sessionId,
6363
result = if (validationResult.valid) Result.Succeeded else Result.Failed,
64-
reason = if (validationResult.valid) null else validationResult.invalidTelemetryReason.additonalInfo,
64+
reason = if (validationResult.valid) null else validationResult.invalidTelemetryReason.additionalInfo,
6565
)
6666
}
6767

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,14 @@ interface InboundAppMessagesHandler {
1313

1414
suspend fun processCodeTransformStartAction(message: IncomingCodeTransformMessage.CodeTransformStart)
1515

16+
suspend fun processCodeTransformSelectSQLMetadataAction(message: IncomingCodeTransformMessage.CodeTransformSelectSQLMetadata)
17+
18+
suspend fun processCodeTransformSelectSQLModuleSchemaAction(message: IncomingCodeTransformMessage.CodeTransformSelectSQLModuleSchema)
19+
1620
suspend fun processCodeTransformStopAction(tabId: String)
1721

22+
suspend fun processChatPromptMessage(message: IncomingCodeTransformMessage.ChatPrompt)
23+
1824
suspend fun processCodeTransformConfirmSkipTests(message: IncomingCodeTransformMessage.CodeTransformConfirmSkipTests)
1925

2026
suspend fun processCodeTransformOpenTransformHub(message: IncomingCodeTransformMessage.CodeTransformOpenTransformHub)

0 commit comments

Comments
 (0)