Persist usages periodically

This commit is contained in:
Ivan Chirkov
2015-02-02 03:46:06 +01:00
parent d61b79bfac
commit 23e241ba85
2 changed files with 21 additions and 1 deletions
@@ -28,6 +28,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.project.ProjectManagerAdapter;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.Alarm;
import com.intellij.util.Function;
import gnu.trove.THashSet;
import org.jdom.Element;
@@ -46,6 +47,9 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis
implements ApplicationComponent, PersistentStateComponent<Element> {
private boolean persistOnClosing = !ApplicationManager.getApplication().isUnitTestMode();
private final Alarm myAlarm;
private final long PERSIST_PERIOD = 24*60*60*1000; //1 day
private static final String TOKENIZER = ",";
@NonNls
@@ -62,6 +66,10 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis
@NonNls
private static final String VALUES_ATTR = "values";
public ApplicationStatisticsPersistenceComponent() {
myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication());
}
public static ApplicationStatisticsPersistenceComponent getInstance() {
return ApplicationManager.getApplication().getComponent(ApplicationStatisticsPersistenceComponent.class);
}
@@ -186,6 +194,18 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis
}
}
});
persistPeriodically();
}
private void persistPeriodically() {
myAlarm.addRequest(new Runnable() {
@Override
public void run() {
persistOpenedProjects();
persistPeriodically();
}
}, PERSIST_PERIOD);
}
private static void persistOpenedProjects() {
@@ -35,7 +35,7 @@ public class SendStatisticsComponent implements ApplicationComponent {
private static final int DELAY_IN_MIN = 10;
private Alarm myAlarm;
private final Alarm myAlarm;
public SendStatisticsComponent() {
myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication());