[fus] Add FUS for ProjectWizardJdkComboBox

GitOrigin-RevId: 8f53ca0c93d576109b6f47b9dcff585b5babb91b
This commit is contained in:
Louis Vignier
2024-02-21 17:31:23 +01:00
committed by intellij-monorepo-bot
parent 3f6db3628a
commit 723a1aae8a
4 changed files with 73 additions and 5 deletions

View File

@@ -0,0 +1,64 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.ide.projectWizard
import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.eventLog.events.EventId
import com.intellij.internal.statistic.eventLog.events.EventId2
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkItem
import org.jetbrains.jps.model.java.JdkVersionDetector
internal object JdkComboBoxCollector: CounterUsagesCollector() {
private val GROUP: EventLogGroup = EventLogGroup("npw.jdk.combo", 1)
private const val UNKNOWN_VENDOR = "unknown"
private val KNOWN_VENDORS = JdkVersionDetector.Variant.entries
.mapNotNull { it.displayName }
.toList() + UNKNOWN_VENDOR
private val SETUP_EXISTING: EventId2<String, Int> = GROUP.registerEvent("setup.existing",
EventFields.String("vendor", KNOWN_VENDORS),
EventFields.Int("version"))
private val SETUP_NO_JDK: EventId = GROUP.registerEvent("no.jdk")
private val DOWNLOAD_JDK: EventId2<String, Int> = GROUP.registerEvent("download.jdk",
EventFields.String("vendor", KNOWN_VENDORS),
EventFields.Int("version"))
override fun getGroup(): EventLogGroup = GROUP
fun jdkRegistered(sdk: Sdk) {
val sdkVersionString = sdk.versionString
val variant = when (sdkVersionString) {
null -> UNKNOWN_VENDOR
else -> KNOWN_VENDORS.firstOrNull { sdkVersionString.contains(it) } ?: UNKNOWN_VENDOR
}
val version = findSdkVersion(sdkVersionString)
SETUP_EXISTING.log(variant, version)
}
fun noJdkRegistered() {
SETUP_NO_JDK.log()
}
private fun findSdkVersion(sdkVersionString: String?): Int {
val versionRegex = Regex("([0-9]+)(?:[.0-9]+)?")
val version = when (sdkVersionString) {
null -> -1
else -> versionRegex.find(sdkVersionString)?.groups?.firstOrNull()?.value?.toInt() ?: -1
}
return version
}
fun jdkDownloaded(item: JdkItem) {
val vendor = when (item.product.vendor) {
in KNOWN_VENDORS -> item.product.vendor
else -> UNKNOWN_VENDOR
}
DOWNLOAD_JDK.log(vendor, findSdkVersion(item.presentableMajorVersionString))
}
}

View File

@@ -20,10 +20,7 @@ import com.intellij.openapi.project.DefaultProjectFactory
import com.intellij.openapi.projectRoots.*
import com.intellij.openapi.projectRoots.impl.DependentSdkType
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkDownloaderBase
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkInstallRequestInfo
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkInstaller
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkListDownloader
import com.intellij.openapi.projectRoots.impl.jdkDownloader.*
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable
import com.intellij.openapi.roots.ui.configuration.projectRoot.SdkDownload
import com.intellij.openapi.roots.ui.configuration.projectRoot.SdkDownloadTask
@@ -105,6 +102,11 @@ fun Row.projectWizardJdkComboBox(
}
.onApply {
context.projectJdk = sdkProperty.get()
when (val selected = combo.selectedItem) {
is NoJdk -> JdkComboBoxCollector.noJdkRegistered()
is DownloadJdk -> JdkComboBoxCollector.jdkDownloaded((selected.task as JdkDownloadTask).jdkItem)
}
}
val lastSelected = PropertiesComponent.getInstance().getValue(selectedJdkProperty)
@@ -378,6 +380,7 @@ private fun selectAndAddJdk(combo: ProjectWizardJdkComboBox) {
private fun registerJdk(path: String, combo: ProjectWizardJdkComboBox) {
runReadAction {
SdkConfigurationUtil.createAndAddSDK(path, JavaSdk.getInstance())?.let {
JdkComboBoxCollector.jdkRegistered(it)
val comboItem = ExistingJdk(it)
val index = combo.lastRegisteredJdkIndex
combo.registered.add(comboItem)

View File

@@ -2476,6 +2476,7 @@
<newProjectWizard.languageGenerator implementation="com.intellij.ide.projectWizard.generators.JavaNewProjectWizard" order="first"/>
<newProjectWizard.java.buildSystem implementation="com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizard"/>
<requiredForSmartModeStartupActivity implementation="com.intellij.ide.projectWizard.generators.SdkPreIndexingRequiredForSmartModeActivity"/>
<statistics.counterUsagesCollector implementationClass="com.intellij.ide.projectWizard.JdkComboBoxCollector"/>
<registryKey key="starters.dependency.update.host"
defaultValue="https://frameworks.jetbrains.com"

View File

@@ -27,8 +27,8 @@ public abstract class JdkVersionDetector {
Temurin("temurin", "Eclipse Temurin"),
Semeru("semeru", "IBM Semeru"),
Corretto("corretto", "Amazon Corretto"),
GraalVM("graalvm", "GraalVM"),
GraalVMCE("graalvm-ce", "GraalVM CE"),
GraalVM("graalvm", "GraalVM"),
IBM("ibm", "IBM JDK"),
JBR("jbr", "JetBrains Runtime"),
Liberica("liberica", "BellSoft Liberica"),