[platform] bringing ImportOldConfigsUsagesCollector stuff together (IJPL-198038 preparation)

GitOrigin-RevId: 3f095513b1e13cefb88c2739ec8094158f415b9f
This commit is contained in:
Roman Shevchenko
2025-09-24 18:11:03 +00:00
committed by intellij-monorepo-bot
parent 462422eb89
commit 691497979c
3 changed files with 42 additions and 83 deletions
@@ -79,7 +79,7 @@ import java.util.stream.Collectors;
import static com.intellij.ide.CommandLineProcessorKt.isIdeStartupWizardEnabled;
import static com.intellij.ide.SpecialConfigFiles.*;
import static com.intellij.ide.plugins.BundledPluginsState.BUNDLED_PLUGINS_FILENAME;
import static com.intellij.openapi.application.ImportOldConfigsState.InitialImportScenario.*;
import static com.intellij.openapi.application.ImportOldConfigsUsagesCollector.InitialImportScenario.*;
import static com.intellij.openapi.application.migrations.Localization242Kt.enableL10nIfPluginInstalled;
import static com.intellij.openapi.application.migrations.PluginMigrationKt.MIGRATION_INSTALLED_PLUGINS_TXT;
import static com.intellij.platform.ide.bootstrap.SplashManagerKt.hideSplash;
@@ -175,7 +175,7 @@ public final class ConfigImportHelper {
var vmOptionFileChanged = false;
var vmOptionsLines = (List<String>)null;
var currentlyDisabledPlugins = (List<String>)null;
var importScenarioStatistics = (ImportOldConfigsState.InitialImportScenario)null;
var importScenarioStatistics = (ImportOldConfigsUsagesCollector.InitialImportScenario)null;
try {
var oldConfigDirAndOldIdePath = (Pair<@NotNull Path, @Nullable Path>)null;
@@ -305,7 +305,8 @@ public final class ConfigImportHelper {
settings.importFinished(newConfigDir, otherProductPrefixes);
}
ImportOldConfigsState.Companion.getInstance().reportImportScenario(importScenarioStatistics);
ImportOldConfigsUsagesCollector.INSTANCE.reportImportScenario(importScenarioStatistics);
if (importScenarioStatistics == IMPORT_SETTINGS_ACTION && vmOptionsLines != null) {
var vmOptionsFile = newConfigDir.resolve(VMOptions.getFileName());
try {
@@ -189,7 +189,7 @@ final class ImportOldConfigsPanel extends JDialog {
}
@Nullable Pair<Path, Path> getSelectedFile() {
ImportOldConfigsState.Companion.getInstance().saveImportOldConfigType(myRbImportAuto, myRbImport, myRbDoNotImport, myResult != null);
ImportOldConfigsUsagesCollector.INSTANCE.saveImportOldConfigType(myRbImportAuto, myRbImport, myRbDoNotImport, myResult != null);
if (myRbImportAuto.isSelected()) {
return new Pair<>(myGuessedOldConfigDirs.get(Math.max(myComboBoxOldPaths.getSelectedIndex(), 0)), null);
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.application
import com.intellij.ide.ApplicationActivity
@@ -9,96 +9,54 @@ import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesColle
import javax.swing.JRadioButton
internal object ImportOldConfigsUsagesCollector : CounterUsagesCollector() {
private val EVENT_GROUP = EventLogGroup("import.old.config", 4)
private val IMPORT_DIALOG_SHOWN_EVENT = EVENT_GROUP.registerEvent("import.dialog.shown",
Enum("selected", ImportOldConfigType::class.java),
Boolean("config_folder_exists"))
private val INITIAL_IMPORT_SCENARIO = EVENT_GROUP.registerEvent("import.initially",
Enum("initial_import_scenario", ImportOldConfigsState.InitialImportScenario::class.java))
override fun getGroup(): EventLogGroup = EVENT_GROUP
internal class Trigger : ApplicationActivity {
override suspend fun execute() {
val state = ImportOldConfigsState.getInstance()
val initialImportScenario = state.initialImportScenario
if (initialImportScenario != null) {
INITIAL_IMPORT_SCENARIO.log(initialImportScenario)
}
if (state.wasOldConfigPanelOpened()) {
IMPORT_DIALOG_SHOWN_EVENT.log(state.type, state.doesSourceConfigFolderExist())
}
}
}
enum class ImportOldConfigType {
FROM_PREVIOUS,
FROM_CUSTOM,
DO_NOT_IMPORT,
OTHER,
NOT_INITIALIZED
}
}
internal class ImportOldConfigsState {
@Volatile
var initialImportScenario: InitialImportScenario? = null
private set
@Volatile
private var oldConfigPanelWasOpened = false
@Volatile
private var sourceConfigFolderExists = false
@Volatile
var type: ImportOldConfigsUsagesCollector.ImportOldConfigType = ImportOldConfigsUsagesCollector.ImportOldConfigType.NOT_INITIALIZED
private set
companion object {
private val _instance = ImportOldConfigsState()
fun getInstance(): ImportOldConfigsState = _instance
private fun getOldImportType(previous: JRadioButton,
custom: JRadioButton,
doNotImport: JRadioButton): ImportOldConfigsUsagesCollector.ImportOldConfigType {
if (previous.isSelected) {
return ImportOldConfigsUsagesCollector.ImportOldConfigType.FROM_PREVIOUS
}
if (custom.isSelected) {
return ImportOldConfigsUsagesCollector.ImportOldConfigType.FROM_CUSTOM
}
return if (doNotImport.isSelected) ImportOldConfigsUsagesCollector.ImportOldConfigType.DO_NOT_IMPORT else ImportOldConfigsUsagesCollector.ImportOldConfigType.OTHER
}
private enum class ImportOldConfigType {
FROM_PREVIOUS, FROM_CUSTOM, DO_NOT_IMPORT, OTHER, NOT_INITIALIZED
}
enum class InitialImportScenario {
CLEAN_CONFIGS,
IMPORTED_FROM_PREVIOUS_VERSION,
IMPORTED_FROM_OTHER_PRODUCT,
IMPORTED_FROM_CLOUD,
CONFIG_DIRECTORY_NOT_FOUND,
SHOW_DIALOG_NO_CONFIGS_FOUND,
SHOW_DIALOG_CONFIGS_ARE_TOO_OLD,
SHOW_DIALOG_REQUESTED_BY_PROPERTY,
IMPORT_SETTINGS_ACTION,
CLEAN_CONFIGS, IMPORTED_FROM_PREVIOUS_VERSION, IMPORTED_FROM_OTHER_PRODUCT, @Suppress("unused") IMPORTED_FROM_CLOUD, CONFIG_DIRECTORY_NOT_FOUND,
SHOW_DIALOG_NO_CONFIGS_FOUND, SHOW_DIALOG_CONFIGS_ARE_TOO_OLD, SHOW_DIALOG_REQUESTED_BY_PROPERTY, IMPORT_SETTINGS_ACTION,
RESTORE_DEFAULT_ACTION
}
private val GROUP = EventLogGroup("import.old.config", 4)
private val IMPORT_DIALOG_SHOWN_EVENT =
GROUP.registerEvent("import.dialog.shown", Enum("selected", ImportOldConfigType::class.java), Boolean("config_folder_exists"))
private val INITIAL_IMPORT_SCENARIO =
GROUP.registerEvent("import.initially", Enum("initial_import_scenario", InitialImportScenario::class.java))
@Volatile private var initialImportScenario = null as InitialImportScenario?
@Volatile private var oldConfigPanelWasOpened = false
@Volatile private var sourceConfigFolderExists = false
@Volatile private var importType = ImportOldConfigType.NOT_INITIALIZED
override fun getGroup(): EventLogGroup = GROUP
fun reportImportScenario(strategy: InitialImportScenario) {
initialImportScenario = strategy
}
fun saveImportOldConfigType(previous: JRadioButton,
custom: JRadioButton,
doNotImport: JRadioButton,
configFolderExists: Boolean) {
fun saveImportOldConfigType(previous: JRadioButton, custom: JRadioButton, doNotImport: JRadioButton, configFolderExists: Boolean) {
oldConfigPanelWasOpened = true
sourceConfigFolderExists = configFolderExists
type = getOldImportType(previous, custom, doNotImport)
importType = when {
previous.isSelected -> ImportOldConfigType.FROM_PREVIOUS
custom.isSelected -> ImportOldConfigType.FROM_CUSTOM
doNotImport.isSelected -> ImportOldConfigType.DO_NOT_IMPORT
else -> ImportOldConfigType.OTHER
}
}
fun wasOldConfigPanelOpened(): Boolean = oldConfigPanelWasOpened
fun doesSourceConfigFolderExist(): Boolean = sourceConfigFolderExists
internal class Trigger : ApplicationActivity {
override suspend fun execute() {
initialImportScenario?.let {
INITIAL_IMPORT_SCENARIO.log(it)
}
if (oldConfigPanelWasOpened) {
IMPORT_DIALOG_SHOWN_EVENT.log(importType, sourceConfigFolderExists)
}
}
}
}