From c21ccef37fc4007570e157ef1d086b6407e41541 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 14 Oct 2019 12:09:32 +0300 Subject: [PATCH] statistics: report which JDK versions are used in project modules (FUS-533) GitOrigin-RevId: 06a5c035e0e718b15c689d16102ffcd1fe3b0048 --- java/java-impl/src/META-INF/JavaPlugin.xml | 1 + .../intellij/pom/java/JdkVersionCollector.kt | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt diff --git a/java/java-impl/src/META-INF/JavaPlugin.xml b/java/java-impl/src/META-INF/JavaPlugin.xml index 3b08e7e5ba9a..7fd6e39094a9 100644 --- a/java/java-impl/src/META-INF/JavaPlugin.xml +++ b/java/java-impl/src/META-INF/JavaPlugin.xml @@ -432,6 +432,7 @@ + diff --git a/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt b/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt new file mode 100644 index 000000000000..4db669ee624b --- /dev/null +++ b/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt @@ -0,0 +1,39 @@ +// 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.beans.newMetric +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.ModuleRootManager +import com.intellij.util.lang.JavaVersion +import java.util.* + +class JdkVersionCollector : ProjectUsagesCollector() { + override fun getGroupId(): String { + return "java.jdk.version" + } + + public override fun getMetrics(project: Project): Set { + val sdks = ModuleManager.getInstance(project).modules.mapNotNullTo(HashSet()) { + ModuleRootManager.getInstance(it).sdk + } + + val jdkVersions = sdks.mapTo(HashSet()) { + JavaVersion.tryParse(it.versionString) + } + + return jdkVersions.mapTo(HashSet()) { + newMetric("MODULE_JDK_VERSION", FeatureUsageData().apply { + addData("feature", it?.feature ?: -1) + addData("minor", it?.minor ?: -1) + addData("update", it?.update ?: -1) + addData("ea", it?.ea ?: false) + }) + } + } + + override fun requiresReadAccess() = true +}