diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/FUSEventGroups.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/FUSEventGroups.kt index 0f26c4c27cf..94b0bdfe1a5 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/FUSEventGroups.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/FUSEventGroups.kt @@ -17,7 +17,7 @@ enum class FUSEventGroups(groupIdSuffix: String, val events: Set = setOf GradleTarget("gradle.target", gradleTargetEvents), Refactoring("ide.action.refactoring", refactoringEvents), NewFileTemplate("ide.newFileTempl", newFileTemplateEvents), - NPWizards("ide.npwizards", NPWizardsEvents), + NPWizards("ide.npwizards"), Debug("ide.debugger"), J2K("ide.j2k"), Editor("ide.editor"), @@ -94,28 +94,4 @@ val newFileTemplateEvents = setOf( "Kotlin Enum", "Kotlin Scratch", "Kotlin Script" -) -val NPWizardsEvents = setOf( - "KotlinModuleBuilder: JVM (JVM_1_6)", - "KotlinModuleBuilder: JVM (JVM_1_8)", - "KotlinModuleBuilder: JVM (JVM_9)", - "KotlinModuleBuilder: JVM (JVM_10)", - "KotlinModuleBuilder: JVM (JVM_11)", - "KotlinModuleBuilder: JVM (JVM_12)", - "KotlinModuleBuilder: JS", - "KotlinGradleNativeMultiplatformModuleBuilder", - "KotlinGradleSharedMultiplatformModuleBuilder", - "KotlinGradleWebMultiplatformModuleBuilder", - "KotlinGradleMobileMultiplatformModuleBuilder", - "KotlinGradleMobileSharedMultiplatformModuleBuilder", - "KotlinJavaFrameworkSupportProvider", - "GradleKotlinJavaFrameworkSupportProvider", - "GradleKotlinJSFrameworkSupportProvider", - "GradleKotlinJSBrowserFrameworkSupportProvider", - "GradleKotlinJSNodeFrameworkSupportProvider", - "GradleKotlinMPPFrameworkSupportProvider", - "KotlinDslGradleKotlinJavaFrameworkSupportProvider", - "KotlinDslGradleKotlinJSFrameworkSupportProvider", - "KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider", - "KotlinDslGradleKotlinJSNodeFrameworkSupportProvider" ) \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/KotlinFUSLogger.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/KotlinFUSLogger.kt index 5f3d84b183b..b25188b1d88 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/KotlinFUSLogger.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/KotlinFUSLogger.kt @@ -17,12 +17,7 @@ open class KotlinFUSLogger { private val logger = FUCounterUsageLogger.getInstance() fun log(group: FUSEventGroups, event: String) { - if (group.events.contains(event) || group.events.isEmpty()) { - logger.logEvent(group.GROUP_ID, event, context) - } else { - logger.logEvent(group.GROUP_ID, "unknown", context) - } - + logger.logEvent(group.GROUP_ID, event, context) } fun log(group: FUSEventGroups, event: String, eventData: Map) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/NewProjectWizardsFUSCollector.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/NewProjectWizardsFUSCollector.kt new file mode 100644 index 00000000000..4e8c8b52ffc --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/NewProjectWizardsFUSCollector.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.statistics + +object NewProjectWizardsFUSCollector { + data class WizardDescription(val name: String, val group: String, val isKotlinDsl: Boolean?) + + private val classToNameMap = mapOf( + "KotlinModuleBuilder__JVM_(JVM_1_6)" to "JVM | IDEA", + "KotlinModuleBuilder__JS" to "JS | IDEA", + "KotlinGradleNativeMultiplatformModuleBuilder" to "Native | Gradle", + "KotlinGradleSharedMultiplatformModuleBuilder" to "Multiplatform Library | Gradle", + "KotlinGradleWebMultiplatformModuleBuilder" to "JS Client and JVM Server | Gradle", + "KotlinGradleMobileMultiplatformModuleBuilder" to "Mobile Android/iOS | Gradle", + "KotlinGradleMobileSharedMultiplatformModuleBuilder" to "Mobile Shared Library | Gradle", + "KotlinJavaFrameworkSupportProvider" to "Kotlin/JVM", + "GradleKotlinJavaFrameworkSupportProvider" to "Kotlin/JVM", + "GradleKotlinJSFrameworkSupportProvider" to "Kotlin/JS", + "GradleKotlinJSBrowserFrameworkSupportProvider" to "Kotlin/JS for browser", + "GradleKotlinJSNodeFrameworkSupportProvider" to "Kotlin/JS for Node.js", + "GradleKotlinMPPFrameworkSupportProvider" to "Kotlin/Multiplatform_aggregated", + "GradleKotlinMPPSourceSetsFrameworkSupportProvider" to "Kotlin/Multiplatform", + "KotlinDslGradleKotlinJavaFrameworkSupportProvider" to "Kotlin/JVM", + "KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider" to "Kotlin/JS for browser", + "KotlinDslGradleKotlinJSNodeFrameworkSupportProvider" to "Kotlin/JS for Node.js", + "KotlinDslGradleKotlinMPPFrameworkSupportProvider" to "Kotlin/Multiplatform" + ) + + private fun parseWizardClass(className: String): WizardDescription { + val wizardName = classToNameMap[className] ?: "unknown" + + val wizardGroup = if (wizardName == "unknown") "unknown" + else if (className.startsWith("KotlinJava")) "Java" + else if (className.startsWith("Gradle") || className.startsWith("KotlinDslGradle")) "Gradle" + else "Kotlin" + + val isBasedOnKotlinDSL = if (wizardName != "unknown") className.startsWith("KotlinDsl") + else null + + return WizardDescription(wizardName, wizardGroup, isBasedOnKotlinDSL) + } + + fun log(wizardClassName: String) { + val wizardDescription = parseWizardClass(wizardClassName) + + val contextData = mapOf( + "name" to wizardDescription.name, + "group" to wizardDescription.group, + "isKotlinDsl" to wizardDescription.isKotlinDsl.toString() + ) + + KotlinFUSLogger.log(FUSEventGroups.NPWizards, "Finished", contextData) + } + + +} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt index 53a14939477..00c063b479e 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt @@ -32,8 +32,7 @@ import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter -import org.jetbrains.kotlin.idea.statistics.FUSEventGroups -import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger +import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector import org.jetbrains.kotlin.idea.util.isSnapshot import org.jetbrains.kotlin.idea.versions.* import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder @@ -155,7 +154,7 @@ abstract class GradleKotlinFrameworkSupportProvider( ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING) } - KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName) + NewProjectWizardsFUSCollector.log(this.javaClass.simpleName) } protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder, specifyPluginVersionIfNeeded: Boolean) {} diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt index d7db2685171..bc4e7cfde98 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinDslGradleKotlinFrameworkSupportProvider.kt @@ -31,8 +31,7 @@ import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Comp import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Companion.getKotlinModuleDependencySnippet import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter -import org.jetbrains.kotlin.idea.statistics.FUSEventGroups -import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger +import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector import org.jetbrains.kotlin.idea.util.isSnapshot import org.jetbrains.kotlin.idea.versions.* import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder @@ -107,7 +106,7 @@ abstract class KotlinDslGradleKotlinFrameworkSupportProvider( GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING) } - KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName) + NewProjectWizardsFUSCollector.log(this.javaClass.simpleName) } protected abstract fun getOldSyntaxPluginDefinition(): String diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt index 0610e198ce1..ab2503fa827 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt @@ -21,8 +21,7 @@ import org.jetbrains.kotlin.idea.configuration.BuildSystemType import org.jetbrains.kotlin.idea.configuration.getBuildSystemType import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter -import org.jetbrains.kotlin.idea.statistics.FUSEventGroups -import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger +import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector import javax.swing.JComponent class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() { @@ -58,7 +57,7 @@ class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() { if (isNewProject) { ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) } - KotlinFUSLogger.log(FUSEventGroups.NPWizards, "KotlinJavaFrameworkSupportProvider") + NewProjectWizardsFUSCollector.log("KotlinJavaFrameworkSupportProvider") } override fun onFrameworkSelectionChanged(selected: Boolean) { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt index 3fdaf7b3e17..87642025a46 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt @@ -13,8 +13,7 @@ import com.intellij.openapi.projectRoots.SdkTypeId import com.intellij.openapi.roots.ModifiableRootModel import com.intellij.openapi.roots.ui.configuration.ModulesProvider import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders -import org.jetbrains.kotlin.idea.statistics.FUSEventGroups -import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger +import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.jvm.isJvm import javax.swing.Icon @@ -46,7 +45,7 @@ class KotlinModuleBuilder( } override fun setupRootModel(rootModel: ModifiableRootModel) { - KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName + ": ${this.targetPlatform}") + NewProjectWizardsFUSCollector.log(this.javaClass.simpleName + ": ${this.targetPlatform}") super.setupRootModel(rootModel) if (!targetPlatform.isJvm()) { migrateNonJvmSourceFolders(rootModel)