/******************************************************************************* * Copyright (c) 2010-2014 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.usage.internal.reporting; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IStartup; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.jboss.tools.usage.event.UsageEvent; import org.jboss.tools.usage.event.UsageEventType; import org.jboss.tools.usage.event.UsageReporter; import org.jboss.tools.usage.googleanalytics.IJBossToolsEclipseEnvironment; import org.jboss.tools.usage.googleanalytics.RequestType; import org.jboss.tools.usage.internal.JBossToolsUsageActivator; import org.jboss.tools.usage.internal.event.CountEventTimer; /** * @author Andre Dieitsheim * @author Alexey Kazakov */ public class UsageReportDispatcher implements IStartup { private static final String USAGE_COMPONENT_NAME = "usage"; private static final String JBT_CATEGORY_NAME = "jbt"; @Override public void earlyStartup() { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { UsageReporter reporter = UsageReporter.getInstance(); JBossToolsUsageActivator plugin = JBossToolsUsageActivator.getDefault(); String version = plugin.getBundle().getVersion().toString(); IJBossToolsEclipseEnvironment environment = plugin.getJBossToolsEclipseEnvironment(); UsageEventType type = new UsageEventType(USAGE_COMPONENT_NAME, version, "central", "showOnStartup", "true|false|N/A"); String label = environment.getEvent().getValue(); reporter.registerEvent(type); String title = getUsedJVM(environment); reporter.trackEvent("/tools/usage/action/wsstartup/" + version, title, type.event(label), RequestType.PAGE, true); type = createFinishWizardType(); reporter.registerEvent(type); initWizardListener(type); CountEventTimer.getInstance().start(); String installedPlugins = environment.getKeyword(); UsageEventType installedPluginsEventType = new UsageEventType(USAGE_COMPONENT_NAME, UsageEventType.getVersion(plugin), JBT_CATEGORY_NAME, "installed", "Installed plugins: " + installedPlugins); reporter.registerEvent(installedPluginsEventType); UsageEvent installedPluginsEvent = installedPluginsEventType.event(installedPlugins); reporter.trackEvent(installedPluginsEvent); } }); } private String getUsedJVM(IJBossToolsEclipseEnvironment environment) { return "jvm:" + environment.getJavaVmName() + " / " + environment.getJavaBitVersion(); } public static UsageEventType createFinishWizardType() { JBossToolsUsageActivator plugin = JBossToolsUsageActivator.getDefault(); String shortVersion = UsageEventType.getVersion(plugin); return new UsageEventType(USAGE_COMPONENT_NAME, shortVersion, JBT_CATEGORY_NAME, "finishWizard", "Wizard class name", "How many times the 'Finish' button pressed during the day"); } private void initWizardListener(UsageEventType type) { final IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); window.getShell().addListener(SWT.Deactivate, new WizardListener(type)); } }