Don't update usage collectors data before sending. Some collectors change to per-project collection.

This commit is contained in:
Ivan Chirkov
2015-01-30 22:21:57 +01:00
parent a461fcf406
commit cf99255a82
13 changed files with 27 additions and 59 deletions
@@ -15,8 +15,8 @@
*/
package com.intellij.compiler;
import com.intellij.internal.statistic.AbstractApplicationUsagesCollector;
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.project.Project;
@@ -30,12 +30,12 @@ import java.util.Set;
* @author Eugene Zhuravlev
* Date: 4/11/13
*/
public class CompilerSettingsUsageCollector extends UsagesCollector{
public class CompilerSettingsUsageCollector extends AbstractApplicationUsagesCollector{
public static final String GROUP_ID = "compiler";
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
public Set<UsageDescriptor> getProjectUsages(@Nullable Project project) throws CollectUsagesException {
final CompilerWorkspaceConfiguration wsConfig = CompilerWorkspaceConfiguration.getInstance(project);
final Set<UsageDescriptor> result = new HashSet<UsageDescriptor>();
@@ -15,13 +15,11 @@
*/
package com.intellij.featureStatistics;
import com.intellij.openapi.project.Project;
import com.intellij.internal.statistic.UsagesCollector;
import com.intellij.internal.statistic.beans.*;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.util.containers.HashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
@@ -35,11 +33,9 @@ public class FeaturesUsageCollector extends UsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) {
public Set<UsageDescriptor> getUsages() {
Set<UsageDescriptor> usages = new HashSet<UsageDescriptor>();
final FeatureUsageTracker usageTracker = FeatureUsageTracker.getInstance(); //
final ProductivityFeaturesRegistry registry = ProductivityFeaturesRegistry.getInstance();
for (String featureId : registry.getFeatureIds()) {
final FeatureDescriptor featureDescriptor = registry.getFeatureDescriptor(featureId);
@@ -18,11 +18,9 @@ package com.intellij.ide.plugins;
import com.intellij.internal.statistic.UsagesCollector;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
@@ -35,7 +33,7 @@ public class DisabledPluginsUsagesCollector extends UsagesCollector {
}
@NotNull
public Set<UsageDescriptor> getUsages(@Nullable Project project) {
public Set<UsageDescriptor> getUsages() {
return ContainerUtil.map2Set(PluginManagerCore.getDisabledPlugins(), new Function<String, UsageDescriptor>() {
@Override
public UsageDescriptor fun(String descriptor) {
@@ -18,12 +18,10 @@ package com.intellij.ide.plugins;
import com.intellij.internal.statistic.UsagesCollector;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Set;
@@ -37,8 +35,8 @@ public class NonBundledPluginsUsagesCollector extends UsagesCollector {
}
@NotNull
public Set<UsageDescriptor> getUsages(@Nullable Project project) {
final IdeaPluginDescriptor[] plugins = PluginManager.getPlugins();
public Set<UsageDescriptor> getUsages() {
final IdeaPluginDescriptor[] plugins = PluginManagerCore.getPlugins();
final List<IdeaPluginDescriptor> nonBundledEnabledPlugins = ContainerUtil.filter(plugins, new Condition<IdeaPluginDescriptor>() {
public boolean value(final IdeaPluginDescriptor d) {
return d.isEnabled() && !d.isBundled() && d.getPluginId() != null;
@@ -24,7 +24,6 @@ import com.intellij.util.containers.ObjectIntHashMap;
import gnu.trove.THashSet;
import gnu.trove.TObjectIntProcedure;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.Set;
@@ -64,7 +63,7 @@ public abstract class AbstractApplicationUsagesCollector extends UsagesCollector
result.ensureCapacity(usageDescriptors.size());
for (UsageDescriptor usageDescriptor : usageDescriptors) {
String key = usageDescriptor.getKey();
result.put(key, result.get(key, 0) + 1);
result.put(key, result.get(key, 0) + usageDescriptor.getValue());
}
}
}
@@ -87,10 +86,7 @@ public abstract class AbstractApplicationUsagesCollector extends UsagesCollector
@Override
@NotNull
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
if (project != null) {
persistProjectUsages(project, getProjectUsages(project));
}
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
return getApplicationUsages();
}
@@ -17,10 +17,8 @@ package com.intellij.internal.statistic;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.Set;
@@ -31,7 +29,7 @@ import java.util.Set;
class JdkInfoUsageCollector extends UsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
final String vendor = System.getProperty("java.vendor", "Unknown");
for (String version : new String[]{"1.9", "1.8", "1.7", "1.6"}) {
if (SystemInfo.isJavaVersionAtLeast(version)) {
@@ -17,10 +17,8 @@ package com.intellij.internal.statistic;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.Set;
@@ -31,7 +29,7 @@ import java.util.Set;
class OsNameUsageCollector extends UsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
String osName = SystemInfo.isLinux ? "Linux" : SystemInfo.isMac ? "Mac OS X" : SystemInfo.isWindows ? "Windows" : SystemInfo.OS_NAME;
return Collections.singleton(new UsageDescriptor(osName, 1));
}
@@ -17,10 +17,8 @@ package com.intellij.internal.statistic;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.Set;
@@ -31,7 +29,7 @@ import java.util.Set;
class OsVersionUsageCollector extends UsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
UsageDescriptor descriptor = null;
if (SystemInfo.isUnix && !SystemInfo.isMac) {
@@ -29,8 +29,6 @@ import com.intellij.internal.statistic.persistence.SentUsagesPersistence;
import com.intellij.internal.statistic.persistence.UsageStatisticsPersistenceComponent;
import com.intellij.openapi.application.impl.ApplicationInfoImpl;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.KeyedExtensionCollector;
import com.intellij.openapi.util.Pair;
@@ -75,7 +73,7 @@ public class StatisticsUploadAssistant {
}
public String getData(@NotNull Set<String> disabledGroups) {
return getStringPatch(disabledGroups, ProjectManager.getInstance().getOpenProjects());
return getStringPatch(disabledGroups);
}
public static void persistSentPatch(@NotNull String patchStr) {
@@ -90,19 +88,18 @@ public class StatisticsUploadAssistant {
}
@NotNull
public static String getStringPatch(@NotNull Set<String> disabledGroups, Project... project) {
return getStringPatch(disabledGroups, project, UsageStatisticsPersistenceComponent.getInstance(), 0);
public static String getStringPatch(@NotNull Set<String> disabledGroups) {
return getStringPatch(disabledGroups, UsageStatisticsPersistenceComponent.getInstance(), 0);
}
@NotNull
public static String getStringPatch(@NotNull Set<String> disabledGroups,
@NotNull Project[] projects,
@NotNull SentUsagesPersistence usagesPersistence,
int maxSize) {
return getStringPatch(getPatchedUsages(disabledGroups, projects, usagesPersistence), maxSize);
return getStringPatch(getPatchedUsages(disabledGroups, usagesPersistence), maxSize);
}
public static String getStringPatch(@NotNull Map<GroupDescriptor, Set<PatchedUsage>> patchedUsages, int maxSize) {
public static <T extends UsageDescriptor> String getStringPatch(@NotNull Map<GroupDescriptor, Set<T>> patchedUsages, int maxSize) {
if (patchedUsages.isEmpty()) {
return "";
}
@@ -113,14 +110,11 @@ public class StatisticsUploadAssistant {
@NotNull
public static Map<GroupDescriptor, Set<PatchedUsage>> getPatchedUsages(@NotNull Set<String> disabledGroups,
@NotNull Project[] projects,
@NotNull SentUsagesPersistence usagesPersistence) {
Map<GroupDescriptor, Set<PatchedUsage>> usages = new LinkedHashMap<GroupDescriptor, Set<PatchedUsage>>();
for (Project project : projects) {
Map<GroupDescriptor, Set<UsageDescriptor>> allUsages = getAllUsages(project, disabledGroups);
Map<GroupDescriptor, Set<UsageDescriptor>> sentUsages = filterDisabled(disabledGroups, usagesPersistence.getSentUsages());
usages.putAll(getPatchedUsages(allUsages, sentUsages));
}
Map<GroupDescriptor, Set<UsageDescriptor>> allUsages = getAllUsages(disabledGroups);
Map<GroupDescriptor, Set<UsageDescriptor>> sentUsages = filterDisabled(disabledGroups, usagesPersistence.getSentUsages());
usages.putAll(getPatchedUsages(allUsages, sentUsages));
return usages;
}
@@ -226,13 +220,13 @@ public class StatisticsUploadAssistant {
}
@NotNull
public static Map<GroupDescriptor, Set<UsageDescriptor>> getAllUsages(@Nullable Project project, @NotNull Set<String> disabledGroups) {
public static Map<GroupDescriptor, Set<UsageDescriptor>> getAllUsages(@NotNull Set<String> disabledGroups) {
Map<GroupDescriptor, Set<UsageDescriptor>> usageDescriptors = new LinkedHashMap<GroupDescriptor, Set<UsageDescriptor>>();
for (UsagesCollector usagesCollector : UsagesCollector.EP_NAME.getExtensions()) {
GroupDescriptor groupDescriptor = usagesCollector.getGroupId();
if (!disabledGroups.contains(groupDescriptor.getId())) {
try {
usageDescriptors.put(groupDescriptor, usagesCollector.getUsages(project));
usageDescriptors.put(groupDescriptor, usagesCollector.getUsages());
}
catch (CollectUsagesException e) {
LOG.info(e);
@@ -20,11 +20,9 @@ import com.intellij.ide.ui.UISettings;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable;
import com.intellij.openapi.project.Project;
import com.intellij.util.ui.UIUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Set;
@@ -35,7 +33,7 @@ import java.util.Set;
class UiInfoUsageCollector extends UsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
Set<UsageDescriptor> set = new THashSet<UsageDescriptor>();
add(set, "Nav Bar visible", navbar() ? 1 : 0);
@@ -19,13 +19,11 @@ import com.intellij.internal.statistic.beans.ConvertUsagesUtil;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.Project;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.xmlb.annotations.MapAnnotation;
import com.intellij.util.xmlb.annotations.Tag;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.Map;
@@ -75,7 +73,7 @@ public class UsageTrigger implements PersistentStateComponent<UsageTrigger.State
private static final GroupDescriptor GROUP = GroupDescriptor.create("features counts", GroupDescriptor.HIGHER_PRIORITY);
@NotNull
public Set<UsageDescriptor> getUsages(@Nullable final Project project) {
public Set<UsageDescriptor> getUsages() {
State state = getInstance().getState();
assert state != null;
return ContainerUtil.map2Set(state.myValues.entrySet(), new Function<Map.Entry<String, Integer>, UsageDescriptor>() {
@@ -18,16 +18,14 @@ package com.intellij.internal.statistic;
import com.intellij.internal.statistic.beans.GroupDescriptor;
import com.intellij.internal.statistic.beans.UsageDescriptor;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
public abstract class UsagesCollector {
public static final ExtensionPointName<UsagesCollector> EP_NAME = ExtensionPointName.create("com.intellij.statistics.usagesCollector");
public abstract @NotNull Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException;
public abstract @NotNull Set<UsageDescriptor> getUsages() throws CollectUsagesException;
public abstract @NotNull GroupDescriptor getGroupId();
}
@@ -5,11 +5,9 @@ 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.project.Project;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Collections;
@@ -18,7 +16,7 @@ import java.util.Set;
public class LaFUsagesCollector extends UsagesCollector {
@NotNull
@Override
public Set<UsageDescriptor> getUsages(@Nullable Project project) throws CollectUsagesException {
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
UIManager.LookAndFeelInfo laf = LafManager.getInstance().getCurrentLookAndFeel();
String key = SystemInfo.OS_NAME + " - ";
if (!StringUtil.isEmptyOrSpaces(SystemInfo.SUN_DESKTOP)) {