in plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/utils/CodeTransformFileUtils.kt [145:188]
fun validateSctMetadata(sctFile: File?): SqlMetadataValidationResult {
if (sctFile == null) {
return SqlMetadataValidationResult(false, message("codemodernizer.chat.message.validation.error.missing_sct_file"))
}
val sctMetadata: SctMetadata
try {
sctMetadata = XML_MAPPER.readValue<SctMetadata>(sctFile)
} catch (e: Exception) {
getLogger<CodeTransformChatController>().error { "Error parsing .sct metadata file; invalid XML encountered: ${e.localizedMessage}" }
return SqlMetadataValidationResult(false, message("codemodernizer.chat.message.validation.error.invalid_sct"))
}
try {
val projectModel = sctMetadata.instances.projectModel
val sourceDbServer = projectModel.entities.sources.dbServer
val sourceVendor = sourceDbServer.vendor.trim().uppercase()
if (sourceVendor != ORACLE_DB) {
return SqlMetadataValidationResult(false, message("codemodernizer.chat.message.validation.error.invalid_source_db"))
}
val sourceServerName = sourceDbServer.name.trim()
val targetDbServer = projectModel.entities.targets.dbServer
val targetVendor = targetDbServer.vendor.trim().uppercase()
if (targetVendor != AURORA_DB && targetVendor != RDS_DB) {
return SqlMetadataValidationResult(false, message("codemodernizer.chat.message.validation.error.invalid_target_db"))
}
val schemaNames = mutableSetOf<String>()
projectModel.relations.serverNodeLocation.forEach { serverNodeLocation ->
val fullNameNodeInfoList = serverNodeLocation.fullNameNodeInfoList.nameParts.fullNameNodeInfo
fullNameNodeInfoList.forEach { node ->
if (node.typeNode.lowercase() == "schema") {
schemaNames.add(node.nameNode.uppercase())
}
}
}
return SqlMetadataValidationResult(true, "", sourceVendor, targetVendor, sourceServerName, schemaNames)
} catch (e: Exception) {
getLogger<CodeTransformChatController>().error { "Error parsing .sct metadata file: ${e.localizedMessage}" }
return SqlMetadataValidationResult(false, message("codemodernizer.chat.message.validation.error.invalid_sct"))
}
}