Commit 85fe3616 authored by nik's avatar nik Committed by intellij-monorepo-bot
Browse files

java statistics: merge collectors for language level and SDK version into a...

java statistics: merge collectors for language level and SDK version into a single one (FUS-533, IDEA-CR-53481)

Use 'java.language' as a group ID for the both metrics.

GitOrigin-RevId: f0102e583043a10fe4dd9b90efb4aeab99f10dbc
parent 00eb737b
Showing with 23 additions and 59 deletions
+23 -59
......@@ -431,8 +431,7 @@
<projectService serviceImplementation="com.intellij.compiler.CompilerWorkspaceConfiguration"/>
<statistics.projectUsagesCollector implementation="com.intellij.compiler.CompilerSettingsCollector"/>
<statistics.projectUsagesCollector implementation="com.intellij.pom.java.JavaLanguageLevelCollector"/>
<statistics.projectUsagesCollector implementation="com.intellij.pom.java.JdkVersionCollector"/>
<statistics.projectUsagesCollector implementation="com.intellij.pom.java.JavaLanguageVersionsCollector"/>
<changesGroupingPolicy key="module" id="module"
implementationClass="com.intellij.openapi.vcs.changes.ui.ModuleChangesGroupingPolicy$Factory"/>
......
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.pom.java;
import com.intellij.internal.statistic.beans.MetricEvent;
import com.intellij.internal.statistic.eventLog.FeatureUsageData;
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
import com.intellij.openapi.roots.LanguageLevelModuleExtensionImpl;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;
import static com.intellij.internal.statistic.beans.MetricEventFactoryKt.newMetric;
public class JavaLanguageLevelCollector extends ProjectUsagesCollector {
@NotNull
@Override
public String getGroupId() {
return "java.module.language.level";
}
@NotNull
@Override
public Set<MetricEvent> getMetrics(@NotNull Project project) {
Set<MetricEvent> usages = new HashSet<>();
LanguageLevelProjectExtension instance = LanguageLevelProjectExtension.getInstance(project);
if (instance != null) {
Set<LanguageLevel> languageLevels = EnumSet.noneOf(LanguageLevel.class);
for (Module module : ModuleManager.getInstance(project).getModules()) {
LanguageLevelModuleExtension moduleExtension = LanguageLevelModuleExtensionImpl.getInstance(module);
LanguageLevel languageLevel = instance.getLanguageLevel();
if (moduleExtension != null && moduleExtension.getLanguageLevel() != null) {
languageLevel = moduleExtension.getLanguageLevel();
}
ContainerUtil.addIfNotNull(languageLevels, languageLevel);
}
for (LanguageLevel level : languageLevels) {
FeatureUsageData data = new FeatureUsageData()
.addData("version", level.toJavaVersion().feature)
.addData("preview", level.isPreview());
usages.add(newMetric("MODULE_LANGUAGE_LEVEL", data));
}
}
return usages;
}
}
......@@ -7,13 +7,15 @@ import com.intellij.internal.statistic.eventLog.FeatureUsageData
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.LanguageLevelModuleExtensionImpl
import com.intellij.openapi.roots.LanguageLevelProjectExtension
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.util.lang.JavaVersion
import java.util.*
class JdkVersionCollector : ProjectUsagesCollector() {
class JavaLanguageVersionsCollector : ProjectUsagesCollector() {
override fun getGroupId(): String {
return "java.jdk.version"
return "java.language"
}
public override fun getMetrics(project: Project): Set<MetricEvent> {
......@@ -25,7 +27,8 @@ class JdkVersionCollector : ProjectUsagesCollector() {
JavaVersion.tryParse(it.versionString)
}
return jdkVersions.mapTo(HashSet()) {
val metrics = HashSet<MetricEvent>()
jdkVersions.mapTo(metrics) {
newMetric("MODULE_JDK_VERSION", FeatureUsageData().apply {
addData("feature", it?.feature ?: -1)
addData("minor", it?.minor ?: -1)
......@@ -33,6 +36,22 @@ class JdkVersionCollector : ProjectUsagesCollector() {
addData("ea", it?.ea ?: false)
})
}
val projectExtension = LanguageLevelProjectExtension.getInstance(project)
if (projectExtension != null) {
val projectLanguageLevel = projectExtension.languageLevel
val languageLevels = ModuleManager.getInstance(project).modules.mapTo(EnumSet.noneOf(LanguageLevel::class.java)) {
LanguageLevelModuleExtensionImpl.getInstance(it)?.languageLevel ?: projectLanguageLevel
}
languageLevels.mapTo(metrics) {
newMetric("MODULE_LANGUAGE_LEVEL", FeatureUsageData().apply {
addData("version", it.toJavaVersion().feature)
addData("preview", it.isPreview)
})
}
}
return metrics
}
override fun requiresReadAccess() = true
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment