From 013fd044f4da6eb0195a113f6ceada8e6d84c898 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 8 Apr 2016 16:03:55 +0300 Subject: [PATCH] project category statistics --- .../ProjectCategoryUsagesCollector.java | 61 +++++++++++++++++++ .../ide/projectWizard/ProjectTypeStep.java | 4 ++ .../statistic/beans/UsageDescriptor.java | 4 ++ resources/src/META-INF/IdeaPlugin.xml | 2 + 4 files changed, 71 insertions(+) create mode 100644 java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategoryUsagesCollector.java diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategoryUsagesCollector.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategoryUsagesCollector.java new file mode 100644 index 000000000000..c615cf7a4516 --- /dev/null +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategoryUsagesCollector.java @@ -0,0 +1,61 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.projectWizard; + +import com.intellij.internal.statistic.CollectUsagesException; +import com.intellij.internal.statistic.UsagesCollector; +import com.intellij.internal.statistic.beans.GroupDescriptor; +import com.intellij.internal.statistic.beans.UsageDescriptor; +import com.intellij.openapi.components.ServiceManager; +import com.intellij.util.containers.FactoryMap; +import com.intellij.util.containers.hash.HashSet; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Set; + +/** + * @author Dmitry Avdeev + */ +public class ProjectCategoryUsagesCollector extends UsagesCollector { + + private final FactoryMap myUsageDescriptors = new FactoryMap() { + @Nullable + @Override + protected UsageDescriptor create(String key) { + return new UsageDescriptor(key, 0); + } + }; + + public static void projectTypeUsed(@NotNull String projectTypeId) { + ServiceManager.getService(ProjectCategoryUsagesCollector.class).myUsageDescriptors.get("project.category." + projectTypeId).advance(); + } + + @NotNull + @Override + public Set getUsages() throws CollectUsagesException { + HashSet descriptors = new HashSet<>(); + descriptors.addAll(myUsageDescriptors.values()); + myUsageDescriptors.clear(); + return descriptors; + } + + @NotNull + @Override + public GroupDescriptor getGroupId() { + return GroupDescriptor.create("Project Category"); + } +} diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java index e3ea1a2ab441..63e4c9ba79d4 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java @@ -544,6 +544,10 @@ public class ProjectTypeStep extends ModuleWizardStep implements SettingsStep, D throw new CommitStepException(null); } } + TemplatesGroup group = getSelectedGroup(); + if (group != null) { + ProjectCategoryUsagesCollector.projectTypeUsed(group.getId()); + } } @Override diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/beans/UsageDescriptor.java b/platform/platform-impl/src/com/intellij/internal/statistic/beans/UsageDescriptor.java index 0a1d7de1b3ca..419e617ef542 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/beans/UsageDescriptor.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/beans/UsageDescriptor.java @@ -38,6 +38,10 @@ public class UsageDescriptor implements Comparable { myValue = i; } + public void advance() { + myValue++; + } + public int compareTo(UsageDescriptor ud) { return getKey().compareTo(ud.myKey); } diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index 187971899394..dabe507e466b 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -1655,6 +1655,8 @@ + +