mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-106191 Stats: Allow to expand stats communication format/protocol
This commit is contained in:
+5
@@ -16,7 +16,12 @@
|
||||
package com.intellij.internal.statistic.connect;
|
||||
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
|
||||
public interface StatisticsService {
|
||||
|
||||
ExtensionPointName<StatisticsService> EP_NAME =
|
||||
ExtensionPointName.create("com.intellij.statisticsService");
|
||||
|
||||
StatisticsResult send();
|
||||
}
|
||||
|
||||
+26
-5
@@ -19,22 +19,31 @@ import com.intellij.internal.statistic.StatisticsUploadAssistant;
|
||||
import com.intellij.internal.statistic.connect.RemotelyConfigurableStatisticsService;
|
||||
import com.intellij.internal.statistic.connect.StatisticsConnectionService;
|
||||
import com.intellij.internal.statistic.connect.StatisticsHttpClientSender;
|
||||
import com.intellij.internal.statistic.connect.StatisticsService;
|
||||
import com.intellij.notification.NotificationDisplayType;
|
||||
import com.intellij.notification.NotificationsConfiguration;
|
||||
import com.intellij.notification.impl.NotificationsConfigurationImpl;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.components.ProjectComponent;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
public class SendStatisticsProjectComponent implements ProjectComponent {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance("#" + SendStatisticsProjectComponent.class.getName());
|
||||
|
||||
private static final int DELAY_IN_MIN = 10;
|
||||
|
||||
private Project myProject;
|
||||
private Alarm myAlarm;
|
||||
private Alarm myAlarm;
|
||||
|
||||
public SendStatisticsProjectComponent(Project project) {
|
||||
myProject = project;
|
||||
@@ -68,21 +77,33 @@ public class SendStatisticsProjectComponent implements ProjectComponent {
|
||||
StatisticsNotificationManager.showNotification(statisticsService, myProject);
|
||||
}
|
||||
else {
|
||||
Collection<StatisticsService> services = ContainerUtilRt.newArrayList();
|
||||
if (StatisticsUploadAssistant.isSendAllowed() && StatisticsUploadAssistant.isTimeToSend()) {
|
||||
runWithDelay(statisticsService);
|
||||
services.add(statisticsService);
|
||||
}
|
||||
services.addAll(Arrays.asList(StatisticsService.EP_NAME.getExtensions()));
|
||||
if (!services.isEmpty()) {
|
||||
runWithDelay(services);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void runWithDelay(final @NotNull RemotelyConfigurableStatisticsService statisticsService) {
|
||||
private void runWithDelay(final @NotNull Collection<StatisticsService> statisticsServices) {
|
||||
myAlarm.addRequest(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (DumbService.isDumb(myProject)) {
|
||||
runWithDelay(statisticsService);
|
||||
runWithDelay(statisticsServices);
|
||||
}
|
||||
else {
|
||||
statisticsService.send();
|
||||
for (StatisticsService service : statisticsServices) {
|
||||
try {
|
||||
service.send();
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.warn("Unexpected error during sending stats data via service " + service, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, DELAY_IN_MIN * 60 * 1000);
|
||||
|
||||
@@ -141,6 +141,7 @@
|
||||
<extensionPoint name="welcomeFrameProvider" interface="com.intellij.openapi.wm.WelcomeFrameProvider"/>
|
||||
<extensionPoint name="frameEditorComponentProvider" interface="com.intellij.openapi.wm.ex.FrameEditorComponentProvider"/>
|
||||
|
||||
<extensionPoint name="statisticsService" interface="com.intellij.internal.statistic.connect.StatisticsService"/>
|
||||
<extensionPoint name="productivityFeaturesProvider" interface="com.intellij.featureStatistics.ProductivityFeaturesProvider"/>
|
||||
|
||||
<extensionPoint name="fileIconProvider" interface="com.intellij.ide.FileIconProvider"/>
|
||||
|
||||
Reference in New Issue
Block a user