Author: adietish
Date: 2010-08-16 06:57:43 -0400 (Mon, 16 Aug 2010)
New Revision: 24176
Added:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/ITracker.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/Tracker.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/AbstractGoogleAnalyticsParameters.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/EclipseEnvironment.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/GoogleAnalyticsUrlStrategy.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/HttpGetMethod.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/PluginLogger.java
Removed:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/IUsageTracker.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/AbstractGoogleAnalyticsParameters.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/EclipseEnvironment.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/GoogleAnalyticsUrlStrategy.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/HttpGetMethod.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/JGoogleAnalyticsTracker.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/PluginLogger.java
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/IGoogleAnalyticsParameters.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/ILoggingAdapter.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/IURLBuildingStrategy.java
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/UsageReport.java
Log:
[JBIDE-6376] user agent string corrected, tests added
Copied: trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/ITracker.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/IUsageTracker.java)
===================================================================
--- trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/ITracker.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/ITracker.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,34 @@
+package org.jboss.tools.usage;
+
+import java.io.UnsupportedEncodingException;
+
+import org.jboss.tools.usage.googleanalytics.FocusPoint;
+
+public interface ITracker {
+
+ /**
+ * Track the focusPoint in the application synchronously. <br/>
+ * <red><b>Please be cognizant while using this method. Since, it would
have
+ * a peformance hit on the actual application. Use it unless it's really
+ * needed</b></red>
+ *
+ * @param focusPoint
+ * Focus point of the application like application load,
+ * application module load, user actions, error events etc.
+ * @throws UnsupportedEncodingException
+ */
+
+ public abstract void trackSynchronously(FocusPoint focusPoint)
+ throws UnsupportedEncodingException;
+
+ /**
+ * Track the focusPoint in the application asynchronously. <br/>
+ *
+ * @param focusPoint
+ * Focus point of the application like application load,
+ * application module load, user actions, error events etc.
+ */
+
+ public abstract void trackAsynchronously(FocusPoint focusPoint);
+
+}
\ No newline at end of file
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/ITracker.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/IUsageTracker.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/IUsageTracker.java 2010-08-16
10:55:59 UTC (rev 24175)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/IUsageTracker.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,34 +0,0 @@
-package org.jboss.tools.usage;
-
-import java.io.UnsupportedEncodingException;
-
-import org.jboss.tools.usage.jgoogleanalytics.FocusPoint;
-
-public interface IUsageTracker {
-
- /**
- * Track the focusPoint in the application synchronously. <br/>
- * <red><b>Please be cognizant while using this method. Since, it would
have
- * a peformance hit on the actual application. Use it unless it's really
- * needed</b></red>
- *
- * @param focusPoint
- * Focus point of the application like application load,
- * application module load, user actions, error events etc.
- * @throws UnsupportedEncodingException
- */
-
- public abstract void trackSynchronously(FocusPoint focusPoint)
- throws UnsupportedEncodingException;
-
- /**
- * Track the focusPoint in the application asynchronously. <br/>
- *
- * @param focusPoint
- * Focus point of the application like application load,
- * application module load, user actions, error events etc.
- */
-
- public abstract void trackAsynchronously(FocusPoint focusPoint);
-
-}
\ No newline at end of file
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics (from
rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics)
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/AbstractGoogleAnalyticsParameters.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/AbstractGoogleAnalyticsParameters.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/AbstractGoogleAnalyticsParameters.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.jgoogleanalytics;
-
-
-public abstract class AbstractGoogleAnalyticsParameters implements
IGoogleAnalyticsParameters {
-
- private String accountName;
- private String referral;
-
- public AbstractGoogleAnalyticsParameters(String accountName, String referral) {
- this.accountName = accountName;
- this.referral = referral;
- }
-
- @Override
- public String getAccountName() {
- return accountName;
- }
-
- @Override
- public String getReferral() {
- return referral;
- }
-}
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/EclipseEnvironment.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/EclipseEnvironment.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/EclipseEnvironment.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.jgoogleanalytics;
-
-import java.util.Random;
-
-import org.eclipse.core.runtime.IProduct;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.PlatformUI;
-import org.jboss.tools.usage.internal.JBossToolsUsageActivator;
-import org.jboss.tools.usage.preferences.IUsageReportPreferenceConstants;
-import org.jboss.tools.usage.util.PreferencesUtil;
-import org.jboss.tools.usage.util.StatusUtils;
-import org.osgi.framework.Bundle;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-public class EclipseEnvironment extends AbstractGoogleAnalyticsParameters implements
IGoogleAnalyticsParameters {
-
- private static final String SCREERESOLUTION_DELIMITER = "x";
-
- private static final String ECLIPSE_RUNTIME_BULDEID =
"org.eclipse.core.runtime";
-
- private static final char VERSION_DELIMITER = '.';
-
- private static final String SCREENCOLORDEPTH_POSTFIX = "-bit";
-
- private static final char JAVA_LOCALE_DELIMITER = '_';
-
- private static final char BROWSER_LOCALE_DELIMITER = '-';
-
- private String screenResolution;
-
- private String screenColorDepth;
-
- private Random random;
-
- public EclipseEnvironment(String accountName, String referral) {
- super(accountName, referral);
- this.random = new Random();
- initScreenSettings(getDisplay());
- }
-
- @Override
- public String getScreenResolution() {
- return screenResolution;
- }
-
- @Override
- public String getHostname() {
- /* TODO implement */
- return "jboss.org";
- }
-
- @Override
- public String getBrowserLanguage() {
- String nl = Platform.getNL(); //$NON-NLS-1$
- if (nl == null) {
- return "";
- }
-
- int indexOf = nl.indexOf(JAVA_LOCALE_DELIMITER); //$NON-NLS-1$
- if (indexOf <= 0) {
- return nl;
- }
-
- StringBuilder builder = new StringBuilder();
- builder.append(nl.substring(0, indexOf));
- builder.append(BROWSER_LOCALE_DELIMITER);
- builder.append(nl.substring(indexOf + 1).toLowerCase());
- return builder.toString();
- }
-
- private void initScreenSettings(final Display display) {
- display.syncExec(new Runnable() {
- @Override
- public void run() {
- screenColorDepth = display.getDepth() + SCREENCOLORDEPTH_POSTFIX;
-
- Rectangle bounds = display.getBounds();
- screenResolution = bounds.width + SCREERESOLUTION_DELIMITER + bounds.height;
- }
- });
- }
-
- @Override
- public String getScreenColorDepth() {
- return screenColorDepth;
- }
-
- private Display getDisplay() {
- if (PlatformUI.isWorkbenchRunning()) {
- return PlatformUI.getWorkbench().getDisplay();
- }
-
- Display display = Display.getCurrent();
- if (display == null) {
- display = Display.getDefault();
- }
- return display;
- }
-
- @Override
- public String getUserAgent() {
-
- String productId = getDefiningBundle().getSymbolicName();
- String productVersion = getProductVersion();
- String eclipseVersion = getEclipseVersion();
- String windowSystem = Platform.getWS();
- String os = Platform.getOS();
- String architecture = Platform.getOSArch();
- String browserLanguage = Platform.getNL();
- String buildId = getBuildId();
-
- /**
- * Google API for android: this.userAgent = String.format(
- * "GoogleAnalytics/%s (Linux; U; Android %s; %s-%s; %s; Build/%s)" ,
- * new Object[] { "1.0" , Build.VERSION.RELEASE ,
- * (localLocale.getLanguage() != null) ?
- * localLocale.getLanguage().toLowerCase() : "en" ,
- * (localLocale.getCountry() != null) ?
- * localLocale.getCountry().toLowerCase() : "" , Build.MODEL, Build.ID
- * });
- */
-
- // return
- // MessageFormat.format("{0}/{1} ({2}; U; {3} {4}; {5}) {6} Eclipse/{7}"
- // , productId
- // , productVersion
- // , windowSystem
- // , os
- // , architecture
- // , browserLanguage
- // , buildId
- // , eclipseVersion);
- return "EclipseEnvironment/3.0.1";
- }
-
- private String getEclipseVersion() {
- return Platform.getBundle(ECLIPSE_RUNTIME_BULDEID).getVersion().toString();
- }
-
- private String getBuildId() {
- String fullVersion = getDefiningBundle().getVersion().toString();
- int buildIdStart = fullVersion.lastIndexOf(VERSION_DELIMITER);
- if (buildIdStart > 0) {
- return fullVersion.substring(buildIdStart + 1);
- } else {
- return fullVersion;
- }
- }
-
- private String getProductVersion() {
- String fullVersion = getDefiningBundle().getVersion().toString();
- int productVersionStart = fullVersion.lastIndexOf(VERSION_DELIMITER);
- if (productVersionStart > 0) {
- return fullVersion.substring(0, productVersionStart);
- } else {
- return fullVersion;
- }
- }
-
- private Bundle getDefiningBundle() {
- IProduct product = Platform.getProduct();
- if (product != null) {
- return product.getDefiningBundle();
- } else {
- return Platform.getBundle(ECLIPSE_RUNTIME_BULDEID);
- }
- }
-
- @Override
- public String getUserId() {
- Preferences preferences = PreferencesUtil.getConfigurationPreferences();
- String userId = getIdentifier();
- try {
- if (!preferences.nodeExists(IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID)) {
- preferences.put(IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID, userId);
- preferences.flush();
- } else {
- userId = preferences.get(IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID,
userId);
- }
- } catch (BackingStoreException e) {
- StatusUtils.getErrorStatus(JBossToolsUsageActivator.PLUGIN_ID, "Could not
retrieve {0} from preferences.",
- e, IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID);
- }
- return userId;
- }
-
- private String getIdentifier() {
- StringBuilder builder = new StringBuilder();
- builder.append(random.nextLong());
- builder.append(System.currentTimeMillis());
- return builder.toString();
- }
-}
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/FocusPoint.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.jgoogleanalytics;
-
-import org.jboss.tools.usage.util.EncodingUtils;
-
-/**
- * Focus point of the application. It can represent data points like application
- * load, application module load, user actions, error events etc.
- */
-
-public class FocusPoint {
-
- private String name;
- private FocusPoint childFocusPoint;
- public static final String URI_SEPARATOR = "/";
- public static final String TITLE_SEPARATOR = "-";
-
- public FocusPoint(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public FocusPoint setChild(FocusPoint childFocusPoint) {
- this.childFocusPoint = childFocusPoint;
- return this;
- }
-
- public FocusPoint getChild() {
- return childFocusPoint;
- }
-
- public String getContentURI() {
- StringBuilder builder = new StringBuilder();
- appendContentURI(builder, this);
- return EncodingUtils.checkedEncodeUtf8(builder.toString());
- }
-
- private void appendContentURI(StringBuilder builder, FocusPoint focusPoint) {
- FocusPoint parentFocuPoint = focusPoint.getChild();
- builder.append(URI_SEPARATOR);
- builder.append(focusPoint.getName());
- if (parentFocuPoint != null) {
- appendContentURI(builder, parentFocuPoint);
- }
- }
-
- public String getContentTitle() {
- StringBuilder builder = new StringBuilder();
- appendContentTitle(builder, this);
- return EncodingUtils.checkedEncodeUtf8(builder.toString());
- }
-
- private void appendContentTitle(StringBuilder builder, FocusPoint focusPoint) {
- FocusPoint childFocusPoint = focusPoint.getChild();
- builder.append(focusPoint.getName());
- builder.append(TITLE_SEPARATOR);
- if (childFocusPoint != null) {
- appendContentTitle(builder, childFocusPoint);
- }
- }
-}
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java
(from rev 24092,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/FocusPoint.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/FocusPoint.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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.googleanalytics;
+
+import org.jboss.tools.usage.util.EncodingUtils;
+
+/**
+ * Focus point of the application. It can represent data points like application
+ * load, application module load, user actions, error events etc.
+ */
+
+public class FocusPoint {
+
+ private String name;
+ private FocusPoint childFocusPoint;
+ public static final String URI_SEPARATOR = "/";
+ public static final String TITLE_SEPARATOR = "-";
+
+ public FocusPoint(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public FocusPoint setChild(FocusPoint childFocusPoint) {
+ this.childFocusPoint = childFocusPoint;
+ return this;
+ }
+
+ public FocusPoint getChild() {
+ return childFocusPoint;
+ }
+
+ public String getContentURI() {
+ StringBuilder builder = new StringBuilder();
+ appendContentURI(builder, this);
+ return EncodingUtils.checkedEncodeUtf8(builder.toString());
+ }
+
+ private void appendContentURI(StringBuilder builder, FocusPoint focusPoint) {
+ FocusPoint parentFocuPoint = focusPoint.getChild();
+ builder.append(URI_SEPARATOR);
+ builder.append(focusPoint.getName());
+ if (parentFocuPoint != null) {
+ appendContentURI(builder, parentFocuPoint);
+ }
+ }
+
+ public String getContentTitle() {
+ StringBuilder builder = new StringBuilder();
+ appendContentTitle(builder, this);
+ return EncodingUtils.checkedEncodeUtf8(builder.toString());
+ }
+
+ private void appendContentTitle(StringBuilder builder, FocusPoint focusPoint) {
+ FocusPoint childFocusPoint = focusPoint.getChild();
+ builder.append(focusPoint.getName());
+ if (childFocusPoint != null) {
+ builder.append(TITLE_SEPARATOR);
+ appendContentTitle(builder, childFocusPoint);
+ }
+ }
+}
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/GoogleAnalyticsUrlStrategy.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/GoogleAnalyticsUrlStrategy.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/GoogleAnalyticsUrlStrategy.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,262 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.jgoogleanalytics;
-
-import java.io.UnsupportedEncodingException;
-
-import org.jboss.tools.usage.util.EncodingUtils;
-
-/**
- * URL building logic for the earlier versions of google analytics (urchin.js)
- *
- * @author : Siddique Hameed, Andre Dietisheim
- * @version : 0.2
- */
-
-public class GoogleAnalyticsUrlStrategy implements IURLBuildingStrategy {
-
- private static final String TRACKING_URL =
"http://www.google-analytics.com/__utm.gif";
-
- private static final String ENCODING_UTF8 = "UTF-8";
-
- private static final long TIMESTAMP = -1;
-
- private static final int VISITS = -1;
-
- private IGoogleAnalyticsParameters googleParameters;
-
- protected GoogleAnalyticsUrlStrategy(IGoogleAnalyticsParameters
googleAnalyticsParameters) {
- this.googleParameters = googleAnalyticsParameters;
- }
-
- public String build(FocusPoint focusPoint) throws UnsupportedEncodingException {
- /*
- * Google Analytics for Android:
- *
- String str = "";
- if (paramEvent.action != null)
- str = paramEvent.action;
- if (!(str.startsWith("/")))
- str = "/" + str;
- str = encode(str);
- Locale localLocale = Locale.getDefault();
- StringBuilder localStringBuilder = new StringBuilder();
- localStringBuilder.append("/__utm.gif");
- localStringBuilder.append("?utmwv=4.3");
- localStringBuilder.append("&utmn=").append(paramEvent.randomVal);
- localStringBuilder.append("&utmcs=UTF-8");
- localStringBuilder.append(String.format("&utmsr=%dx%d", new Object[] {
- Integer.valueOf(paramEvent.screenWidth)
- , Integer.valueOf(paramEvent.screenHeight) }));
- localStringBuilder.append(String.format("&utmul=%s-%s", new Object[] {
- localLocale.getLanguage()
- , localLocale.getCountry() }));
- localStringBuilder.append("&utmp=").append(str);
- localStringBuilder.append("&utmac=").append(paramEvent.accountId);
- localStringBuilder.append("&utmcc=").append(
- getEscapedCookieString(paramEvent, paramString));
- return localStringBuilder.toString();
-
- *
- * getEscapedCookieString:
- *
- StringBuilder localStringBuilder = new StringBuilder();
- localStringBuilder.append("__utma=");
- localStringBuilder.append("999").append(".");
- localStringBuilder.append(paramEvent.userId).append(".");
- localStringBuilder.append(paramEvent.timestampFirst).append(".");
- localStringBuilder.append(paramEvent.timestampPrevious).append(".");
- localStringBuilder.append(paramEvent.timestampCurrent).append(".");
- localStringBuilder.append(paramEvent.visits);
- if (paramString != null)
- {
- localStringBuilder.append("+__utmz=");
- localStringBuilder.append("999").append(".");
- localStringBuilder.append(paramEvent.timestampFirst).append(".");
- localStringBuilder.append("1.1.");
- localStringBuilder.append(paramString);
- }
- return encode(localStringBuilder.toString());
-
- */
-
- /*
- * our working tracking code
- *
-
http://www.google-analytics.com/__utm.gif?utmwv=4.7.2
- &utmn=338321265
- &utmhn=jboss.org
- &utmcs=UTF-8
- &utmsr=1920x1080
- &utmsc=24-bit
- &utmul=en-us
- &utmje=1
- &utmfl=10.1%20r53
- &utmdt=-%20JBoss%20Community
- &utmhid=1087431432
- &utmr=0
- &utmp=%2Ftools%2Fusage.html
- &utmac=UA-17645367-1
- &utmcc=__utma%3D156030500.1285760711.1281430767.1281430767.1281430767.1%3B%2B__utmz%3D156030500.1281430767.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B
- &gaq=1
- *
- */
-
- StringBuilder builder = new StringBuilder(TRACKING_URL)
- .append(IGoogleAnalyticsParameters.URL_PARAM_DELIMITER);
- appendParameter(IGoogleAnalyticsParameters.PARAM_TRACKING_CODE_VERSION,
- IGoogleAnalyticsParameters.VALUE_TRACKING_CODE_VERSION, builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_UNIQUE_TRACKING_NUMBER,
getRandomNumber(), builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_HID, getRandomNumber(), builder);
- // appendParameter(IGoogleAnalyticsParameters.PARAM_HID,
- // getRandomNumber(), builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_LANGUAGE_ENCODING, ENCODING_UTF8,
builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_SCREEN_COLOR_DEPTH,
googleParameters.getScreenColorDepth(),
- builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_SCREEN_RESOLUTION,
googleParameters.getScreenResolution(),
- builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_BROWSER_LANGUAGE,
googleParameters.getBrowserLanguage(),
- builder);
- // appendParameter(IGoogleAnalyticsParameters.PARAM_REPEAT_CAMPAIGN_VISIT,
- // "1", builder);
- // appendParameter(IGoogleAnalyticsParameters.PARAM_PAGE_TITLE,
- // focusPoint.getContentTitle(), builder);
- // appendParameter(IGoogleAnalyticsParameters.PARAM_HOST_NAME,
- // googleParameters.getHostname(), builder);
- // appendParameter(IGoogleAnalyticsParameters.PARAM_REFERRAL,
- // googleParameters.getReferral(), builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_PAGE_REQUEST,
focusPoint.getContentURI(), builder);
- appendParameter(IGoogleAnalyticsParameters.PARAM_ACCOUNT_NAME,
googleParameters.getAccountName(), builder);
- appendCookies(focusPoint, builder);
- // appendParameter(IGoogleAnalyticsParameters.PARAM_GAQ, "1", false,
- // builder);
-
- // StringBuilder builder = new StringBuilder()
- // .append(TRACKING_URL)
- // .append(URL_PARAM_DELIMITER);
- // appendParameter(IGoogleAnalyticsParameters.TRACKING_CODE_VERSION,
- // IGoogleAnalyticsParameters.URCHIN_VERSION, builder);
- // appendParameter(IGoogleAnalyticsParameters.UNIQUE_TRACKING_NUMBER,
- // getRandomNumber(), builder);
- // appendParameter(IGoogleAnalyticsParameters.HOST_NAME,
- // URLEncoder.encode(googleParameters.getHostname(), ENCODING_UTF8),
- // builder);
- // appendParameter(IGoogleAnalyticsParameters.REFERRAL,
- // URLEncoder.encode(googleParameters.getReferral(), ENCODING_UTF8),
- // builder);
- // appendParameter(IGoogleAnalyticsParameters.PAGE_REQUEST,
- // URLEncoder.encode(appFocusPoint.getContentURI(), ENCODING_UTF8),
- // builder);
- // appendParameter(IGoogleAnalyticsParameters.ACCOUNT_NAME,
- // googleParameters.getAccountName(), builder);
- // appendParameter(IGoogleAnalyticsParameters.COOKIE_VALUES,
- // "__utma%3D999.999.999.999.999.1%3B", builder);
- // appendParameter(IGoogleAnalyticsParameters.LANGUAGE_ENCODING,
- // ENCODING_UTF8, builder);
- // appendParameter(IGoogleAnalyticsParameters.SCREEN_RESOLUTION,
- // googleParameters.getScreenResolution(), builder);
- // .append("&utmvid=").append(new EclipseInstance().toString());
- // .append("&utmip=").append(getIpAddress());
-
- return builder.toString();
- }
-
- private void appendCookies(FocusPoint focusPoint, StringBuilder builder) {
-
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append(IGoogleAnalyticsParameters.PARAM_COOKIES_FIRST_VISIT)
- .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
- .append("999.")
- .append(googleParameters.getUserId()).append(IGoogleAnalyticsParameters.DOT)
- .append(TIMESTAMP).append(IGoogleAnalyticsParameters.DOT)
- .append(TIMESTAMP).append(IGoogleAnalyticsParameters.DOT)
- .append(TIMESTAMP).append(IGoogleAnalyticsParameters.DOT)
- .append(VISITS)
- .append(IGoogleAnalyticsParameters.PLUS_SIGN)
- .append(IGoogleAnalyticsParameters.PARAM_COOKIES_REFERRAL_TYPE)
- .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
- .append("999.")
- .append(TIMESTAMP).append(IGoogleAnalyticsParameters.DOT)
- .append("1.1.")
- .append(focusPoint.getContentURI());
-
- String encodedString = EncodingUtils.checkedEncodeUtf8(stringBuilder.toString());
- builder.append(encodedString);
-
- // builder.append(IGoogleAnalyticsParameters.PARAM_COOKIE_VALUES)
- // .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
- // .append("__utma%3D")
- // .append(getRandomNumber())
- // .append(".")
- // .append(getRandomNumber())
- // .append(".")
- // .append(now)
- // .append(".")
- // .append(now)
- // .append(".")
- // .append(now)
- // .append(".2%3B%2B)")
- //
- // // .append("__utmb%3D")
- // // .append(getRandomNumber())
- // // .append("%3B%2B__utmc%3D")
- // // .append(getRandomNumber())
- // // .append("%3B%2B")
- //
- // .append("__utmz%3D")
- // .append(getRandomNumber())
- // .append(".")
- // .append(now)
- // .append(IGoogleAnalyticsParameters.AMPERSAND);
-
- // .append("utmcsr%3D(direct)%7C")
- // .append("utmccn%3D(direct)%7C")
- // .append("utmcmd%3D(none)%3B");
-
- }
-
- private String getRandomNumber() {
- return Integer.toString((int) (Math.random() * 0x7fffffff));
- }
-
- private void appendParameter(String name, String value, StringBuilder builder) {
- appendParameter(name, value, true, builder);
- }
-
- private void appendParameter(String name, String value, boolean appendAmpersand,
StringBuilder builder) {
- builder.append(name)
- .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
- .append(value);
- if (appendAmpersand) {
- builder.append(IGoogleAnalyticsParameters.AMPERSAND);
- }
- }
-
- // private String getIpAddress() throws SocketException {
- // Enumeration<NetworkInterface> e1 =
- // (Enumeration<NetworkInterface>)NetworkInterface.getNetworkInterfaces();
- // while(e1.hasMoreElements()) {
- // NetworkInterface ni = e1.nextElement();
- //
- // System.out.print(ni.getName());
- // System.out.print(" : [");
- // Enumeration<InetAddress> e2 = ni.getInetAddresses();
- // while(e2.hasMoreElements()) {
- // InetAddress ia = e2.nextElement();
- // System.out.print(ia);
- // if( e2.hasMoreElements()) {
- // System.out.print(",");
- // }
- // }
- // System.out.println("]");
- // }
- // }
-}
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/HttpGetMethod.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/HttpGetMethod.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/HttpGetMethod.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,98 +0,0 @@
-package org.jboss.tools.usage.jgoogleanalytics;
-
-import java.io.IOException;
-import java.net.CookieHandler;
-import java.net.CookieManager;
-import java.net.CookiePolicy;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.text.MessageFormat;
-
-/**
- * Simple class peforming HTTP Get method on the requested url
- *
- * @author Siddique Hameed
- * @author Andre Dietisheim
- * @version 0.2
- */
-
-public class HttpGetMethod {
- private static final String USER_AGENT = "User-Agent";
- private static final String GET_METHOD_NAME = "GET";
- private static final String SUCCESS_MESSAGE = "Http Get to url {0}
successfull!";
- private static final String ERROR_MESSAGE = "Http Get to {0} failed, response code
was {1}";
-
- private ILoggingAdapter loggingAdapter = null;
-
- private CookieManager cookieHandler;
- private String userAgent;
-
- public HttpGetMethod(String userAgent) {
- this.userAgent = userAgent;
- this.cookieHandler = new CookieManager();
- cookieHandler.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
- }
-
- public void setLoggingAdapter(ILoggingAdapter loggingAdapter) {
- this.loggingAdapter = loggingAdapter;
- }
-
- public void request(String urlString) {
-
- CookieHandler currentCookieHandler = setCookieHandler(cookieHandler);
- try {
- HttpURLConnection urlConnection = createURLConnection(urlString, userAgent);
- urlConnection.connect();
- int responseCode = getResponseCode(urlConnection);
- if (responseCode != HttpURLConnection.HTTP_OK) {
- logError(ERROR_MESSAGE, urlString, responseCode);
- } else {
- logMessage(SUCCESS_MESSAGE, urlString);
- }
- } catch (Exception e) {
- logError(e.getMessage());
- } finally {
- setCookieHandler(currentCookieHandler);
- }
- }
-
- /**
- * Returns the return code from the given {@link HttpURLConnection}.
- * Provided to be called by test cases so that they can retrieve the return code.
- *
- * @param urlConnection
- * to get the response code from
- * @return the return code the HttpUrlConnection received
- * @throws IOException
- */
- protected int getResponseCode(HttpURLConnection urlConnection) throws IOException {
- return urlConnection.getResponseCode();
- }
-
- private CookieHandler setCookieHandler(CookieHandler cookieHandler) {
- CookieHandler currentCookieHandler = CookieHandler.getDefault();
- CookieHandler.setDefault(cookieHandler);
- return currentCookieHandler;
- }
-
- protected HttpURLConnection createURLConnection(String urlString, String userAgent)
throws IOException {
- URL url = new URL(urlString);
- HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setInstanceFollowRedirects(true);
- urlConnection.setRequestMethod(GET_METHOD_NAME);
- urlConnection.setRequestProperty(USER_AGENT, userAgent);
- return urlConnection;
- }
-
- private void logMessage(String message, Object... parameters) {
- if (loggingAdapter != null) {
- loggingAdapter.logMessage(MessageFormat.format(message, parameters));
- }
- }
-
- private void logError(String errorMesssage, Object... parameters) {
- if (loggingAdapter != null) {
- loggingAdapter.logError(MessageFormat.format(errorMesssage, parameters));
- }
- }
-}
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/IGoogleAnalyticsParameters.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/IGoogleAnalyticsParameters.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/IGoogleAnalyticsParameters.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -8,7 +8,7 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
-package org.jboss.tools.usage.jgoogleanalytics;
+package org.jboss.tools.usage.googleanalytics;
/**
* An interface that provides methods for all parameters that google analytics
@@ -22,6 +22,13 @@
public static final char AMPERSAND = '&';
public static final char EQUALS_SIGN = '=';
public static final char URL_PARAM_DELIMITER = '?';
+ public static final char PLUS_SIGN = '+';
+ public static final char DOT = '.';
+ public static final char SEMICOLON = ';';
+ public static final char JAVA_LOCALE_DELIMITER = '_';
+ public static final char BROWSER_LOCALE_DELIMITER = '-';
+ public static final char PIPE = '|';
+ public static final char VERSION_DELIMITER = '.';
public static final String PARAM_HID = "utmhid";
public static final String PARAM_PAGE_REQUEST = "utmp";
@@ -42,13 +49,18 @@
public static final String PARAM_REPEAT_CAMPAIGN_VISIT = "utmcr";
public static final String PARAM_PAGE_TITLE = "utmdt";
public static final String PARAM_GAQ = "gaq";
+ public static final String PARAM_COOKIES_REFERRAL_TYPE = "__utmz";
+ public static final String PARAM_COOKIES_UTMCSR = "utmcsr";
+ public static final String PARAM_COOKIES_UTMCCN = "utmccn";
+ public static final String PARAM_COOKIES_UTMCMD = "utmcmd";
public static final String VALUE_TRACKING_CODE_VERSION = "4.7.2";
public static final String VALUE_NO_REFERRAL = "-";
- public static final char PLUS_SIGN = '+';
- public static final String PARAM_COOKIES_REFERRAL_TYPE = "__utmz";
- public static final char DOT = '.';
+ public static final String VALUE_ENCODING_UTF8 = "UTF-8";
+
+ public static final String SCREERESOLUTION_DELIMITER = "x";
+ public static final String SCREENCOLORDEPTH_POSTFIX = "-bit";
public String getAccountName();
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/ILoggingAdapter.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/ILoggingAdapter.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/ILoggingAdapter.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -8,15 +8,8 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
-package org.jboss.tools.usage.jgoogleanalytics;
+package org.jboss.tools.usage.googleanalytics;
-/**
- * Interface for logging adapter. You can hook up log4j, System.out or any other loggers
you want.
- *
- * @author : Siddique Hameed
- * @version : 0.1
- */
-
public interface ILoggingAdapter {
public void logError(String errorMessage);
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/IURLBuildingStrategy.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/IURLBuildingStrategy.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/IURLBuildingStrategy.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -8,7 +8,7 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
-package org.jboss.tools.usage.jgoogleanalytics;
+package org.jboss.tools.usage.googleanalytics;
import java.io.UnsupportedEncodingException;
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/JGoogleAnalyticsTracker.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/JGoogleAnalyticsTracker.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/JGoogleAnalyticsTracker.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.jgoogleanalytics;
-
-import java.io.UnsupportedEncodingException;
-import java.text.MessageFormat;
-
-import org.jboss.tools.usage.IUsageTracker;
-
-/**
- * Main class for tracking google analytics data.
- *
- * @author Siddique Hameed
- * @author Andre Dietisheim
- * @version 0.2
- * @see : <a
- *
href="http://JGoogleAnalytics.googlecode.com">http://JGoogleAnalytics
- * .googlecode.com</a>
- */
-
-public class JGoogleAnalyticsTracker implements IUsageTracker {
-
- private IURLBuildingStrategy urlBuildingStrategy = null;
- private HttpGetMethod httpRequest;
- private ILoggingAdapter loggingAdapter;
-
- /**
- * Simple constructor passing the application name & google analytics
- * tracking code.
- *
- * @param appName
- * Application name (For ex: "LibraryFinder")
- */
- public JGoogleAnalyticsTracker(IGoogleAnalyticsParameters googleParameters) {
- this.httpRequest = new HttpGetMethod(googleParameters.getUserAgent());
- this.urlBuildingStrategy = new GoogleAnalyticsUrlStrategy(googleParameters);
- }
-
- /**
- * Setter injection for LoggingAdpater. You can hook up log4j, System.out or
- * any other loggers you want.
- *
- * @param loggingAdapter
- * implemented instance of LoggingAdapter
- */
-
- public void setLoggingAdapter(ILoggingAdapter loggingAdapter) {
- this.loggingAdapter = loggingAdapter;
- httpRequest.setLoggingAdapter(loggingAdapter);
- }
-
- /* (non-Javadoc)
- * @see
org.jboss.tools.usage.analytics.jgoogleanalytics.UsageAnalyticsTracker#trackSynchronously(org.jboss.tools.usage.analytics.jgoogleanalytics.FocusPoint)
- */
-
- public void trackSynchronously(FocusPoint focusPoint) throws
UnsupportedEncodingException {
- logMessage("Tracking synchronously focusPoint=" +
focusPoint.getContentTitle());
- httpRequest.request(urlBuildingStrategy.build(focusPoint));
- }
-
- /* (non-Javadoc)
- * @see
org.jboss.tools.usage.analytics.jgoogleanalytics.UsageAnalyticsTracker#trackAsynchronously(org.jboss.tools.usage.analytics.jgoogleanalytics.FocusPoint)
- */
-
- public void trackAsynchronously(FocusPoint focusPoint) {
- logMessage("Tracking Asynchronously focusPoint=" +
focusPoint.getContentTitle());
- new TrackingThread(focusPoint).start();
- }
-
- private void logMessage(String message) {
- if (loggingAdapter != null) {
- loggingAdapter.logMessage(message);
- }
- }
-
- private class TrackingThread extends Thread {
- private FocusPoint focusPoint;
-
- public TrackingThread(FocusPoint focusPoint) {
- this.focusPoint = focusPoint;
- this.setPriority(Thread.MIN_PRIORITY);
- }
-
- public void run() {
- try {
- httpRequest.request(urlBuildingStrategy.build(focusPoint));
- } catch (UnsupportedEncodingException e) {
- logMessage(MessageFormat.format("Tracking failed: {0}", e.getMessage()));
- }
- }
- }
-}
Deleted:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/PluginLogger.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/PluginLogger.java 2010-08-12
11:42:42 UTC (rev 24090)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/PluginLogger.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.jgoogleanalytics;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-
-public class PluginLogger implements ILoggingAdapter {
-
- private Plugin plugin;
-
- public PluginLogger(Plugin plugin) {
- this.plugin = plugin;
- }
-
- public void logError(String message) {
- log(IStatus.ERROR, message);
- }
-
- public void logMessage(String message) {
- log(IStatus.INFO, message);
- }
-
- private void log(int severity, String message) {
- if (plugin != null) {
- IStatus status = new Status(severity, plugin.getBundle().getSymbolicName(), message);
- plugin.getLog().log(status);
- }
- }
-}
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/Tracker.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/JGoogleAnalyticsTracker.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/Tracker.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/Tracker.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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.googleanalytics;
+
+import java.io.UnsupportedEncodingException;
+import java.text.MessageFormat;
+
+import org.jboss.tools.usage.ITracker;
+import org.jboss.tools.usage.internal.GoogleAnalyticsUrlStrategy;
+import org.jboss.tools.usage.internal.HttpGetMethod;
+
+/**
+ * Reports (tracks) data to google analytics
+ *
+ * @author Andre Dietisheim
+ * @see <a
+ *
href="http://jgoogleAnalytics.googlecode.com">http://jgoogleAnalytics.googlecode.com</a>
+ */
+public class Tracker implements ITracker {
+
+ private IURLBuildingStrategy urlBuildingStrategy = null;
+ private HttpGetMethod httpRequest;
+ private ILoggingAdapter loggingAdapter;
+
+ public Tracker(IGoogleAnalyticsParameters googleParameters, ILoggingAdapter
loggingAdapter) {
+ this.httpRequest = new HttpGetMethod(googleParameters.getUserAgent(), loggingAdapter);
+ this.loggingAdapter = loggingAdapter;
+ this.urlBuildingStrategy = new GoogleAnalyticsUrlStrategy(googleParameters);
+ }
+
+ public void trackSynchronously(FocusPoint focusPoint) throws
UnsupportedEncodingException {
+ loggingAdapter.logMessage("Tracking synchronously focusPoint=" +
focusPoint.getContentTitle());
+ httpRequest.request(urlBuildingStrategy.build(focusPoint));
+ }
+
+ public void trackAsynchronously(FocusPoint focusPoint) {
+ loggingAdapter.logMessage("Tracking Asynchronously focusPoint=" +
focusPoint.getContentTitle());
+ new TrackingThread(focusPoint).start();
+ }
+
+ private class TrackingThread extends Thread {
+ private FocusPoint focusPoint;
+
+ public TrackingThread(FocusPoint focusPoint) {
+ this.focusPoint = focusPoint;
+ this.setPriority(Thread.MIN_PRIORITY);
+ }
+
+ public void run() {
+ try {
+ httpRequest.request(urlBuildingStrategy.build(focusPoint));
+ } catch (UnsupportedEncodingException e) {
+ loggingAdapter.logMessage(MessageFormat.format("Tracking failed: {0}",
e.getMessage()));
+ }
+ }
+ }
+}
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/googleanalytics/Tracker.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/AbstractGoogleAnalyticsParameters.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/AbstractGoogleAnalyticsParameters.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/AbstractGoogleAnalyticsParameters.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/AbstractGoogleAnalyticsParameters.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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;
+
+import org.jboss.tools.usage.googleanalytics.IGoogleAnalyticsParameters;
+
+
+public abstract class AbstractGoogleAnalyticsParameters implements
IGoogleAnalyticsParameters {
+
+ private String accountName;
+ private String referral;
+ private String hostName;
+
+ public AbstractGoogleAnalyticsParameters(String accountName, String hostName, String
referral) {
+ this.accountName = accountName;
+ this.hostName = hostName;
+ this.referral = referral;
+ }
+
+ @Override
+ public String getAccountName() {
+ return accountName;
+ }
+
+ @Override
+ public String getHostname() {
+ return hostName;
+ }
+
+ @Override
+ public String getReferral() {
+ return referral;
+ }
+}
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/AbstractGoogleAnalyticsParameters.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/EclipseEnvironment.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/EclipseEnvironment.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/EclipseEnvironment.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/EclipseEnvironment.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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;
+
+import java.text.MessageFormat;
+import java.util.Random;
+
+import org.eclipse.core.runtime.IProduct;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.PlatformUI;
+import org.jboss.tools.usage.googleanalytics.IGoogleAnalyticsParameters;
+import org.jboss.tools.usage.preferences.IUsageReportPreferenceConstants;
+import org.jboss.tools.usage.util.PreferencesUtil;
+import org.jboss.tools.usage.util.StatusUtils;
+import org.osgi.framework.Bundle;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+public class EclipseEnvironment extends AbstractGoogleAnalyticsParameters implements
IGoogleAnalyticsParameters {
+
+ private static final String ECLIPSE_RUNTIME_BULDEID =
"org.eclipse.core.runtime";
+
+ private String screenResolution;
+
+ private String screenColorDepth;
+
+ private Random random;
+
+ public EclipseEnvironment(String accountName, String hostName, String referral) {
+ super(accountName, hostName, referral);
+ this.random = new Random();
+ initScreenSettings();
+ }
+
+ @Override
+ public String getBrowserLanguage() {
+ String nl = getNL();
+ if (nl == null) {
+ return "";
+ }
+
+ int indexOf = nl.indexOf(JAVA_LOCALE_DELIMITER); //$NON-NLS-1$
+ if (indexOf <= 0) {
+ return nl;
+ }
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(nl.substring(0, indexOf));
+ builder.append(BROWSER_LOCALE_DELIMITER);
+ builder.append(nl.substring(indexOf + 1));
+ return builder.toString();
+ }
+
+ protected String getNL() {
+ return Platform.getNL(); //$NON-NLS-1$
+ }
+
+ protected void initScreenSettings() {
+ final Display display = getDisplay();
+ display.syncExec(new Runnable() {
+ @Override
+ public void run() {
+ screenColorDepth = display.getDepth() + SCREENCOLORDEPTH_POSTFIX;
+
+ Rectangle bounds = display.getBounds();
+ screenResolution = bounds.width + SCREERESOLUTION_DELIMITER + bounds.height;
+ }
+ });
+ }
+
+ @Override
+ public String getScreenResolution() {
+ return screenResolution;
+ }
+
+ @Override
+ public String getScreenColorDepth() {
+ return screenColorDepth;
+ }
+
+ protected Display getDisplay() {
+ if (PlatformUI.isWorkbenchRunning()) {
+ return PlatformUI.getWorkbench().getDisplay();
+ }
+
+ Display display = Display.getCurrent();
+ if (display == null) {
+ display = Display.getDefault();
+ }
+ return display;
+ }
+
+ @Override
+ public String getUserAgent() {
+
+ String productId = getApplicationName();
+ String productVersion = getApplicationVersion();
+ String browserLanguage = getBrowserLanguage();
+
+ /**
+ * Google API for android: this.userAgent = String.format(
+ * "GoogleAnalytics/%s (Linux; U; Android %s; %s-%s; %s; Build/%s)" ,
+ * new Object[] { "1.0" , Build.VERSION.RELEASE ,
+ * (localLocale.getLanguage() != null) ?
+ * localLocale.getLanguage().toLowerCase() : "en" ,
+ * (localLocale.getCountry() != null) ?
+ * localLocale.getCountry().toLowerCase() : "" , Build.MODEL, Build.ID
+ * });
+ */
+
+ return MessageFormat.format(
+ getUserAgentPattern(getOS())
+ , productId
+ , productVersion
+ , browserLanguage
+ );
+ }
+
+ private String getUserAgentPattern(String os) {
+ String userAgentPattern = "";
+ /*
+ * TODO: implement architecture (i686, x86_64 etc.), Windows version, MacOS version
etc.
+ */
+ if (Platform.OS_LINUX.equals(os)) {
+ return "{0}/{1} (X11; U; Linux i686; {2})";
+ } else if (Platform.OS_MACOSX.equals(os)) {
+ return "{0}/{1} (Macintosh; U; Intel Mac OS X 10.5; {2})";
+ } else if (Platform.OS_WIN32.equals(os)) {
+ return "{0}/{1} (Windows; U; Windows NT 6.1; {2})";
+ }
+ return userAgentPattern;
+ }
+
+ protected String getOS() {
+ return Platform.getOS();
+ }
+
+ protected String getApplicationName() {
+ return getApplicationBundle().getSymbolicName();
+ }
+
+ protected String getApplicationVersion() {
+ String fullVersion = getApplicationBundle().getVersion().toString();
+ int productVersionStart = fullVersion.lastIndexOf(VERSION_DELIMITER);
+ if (productVersionStart > 0) {
+ return fullVersion.substring(0, productVersionStart);
+ } else {
+ return fullVersion;
+ }
+ }
+
+ /**
+ * Returns the bundle that launched the application that this class runs in.
+ *
+ * @return the defining bundle
+ */
+ private Bundle getApplicationBundle() {
+ IProduct product = Platform.getProduct();
+ if (product != null) {
+ return product.getDefiningBundle();
+ } else {
+ return Platform.getBundle(ECLIPSE_RUNTIME_BULDEID);
+ }
+ }
+
+ @Override
+ public String getUserId() {
+ Preferences preferences = PreferencesUtil.getConfigurationPreferences();
+ String userId = createIdentifier();
+ try {
+ if (!preferences.nodeExists(IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID)) {
+ preferences.put(IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID, userId);
+ preferences.flush();
+ } else {
+ userId = preferences.get(IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID,
userId);
+ }
+ } catch (BackingStoreException e) {
+ StatusUtils.getErrorStatus(JBossToolsUsageActivator.PLUGIN_ID, "Could not
retrieve {0} from preferences.",
+ e, IUsageReportPreferenceConstants.ECLIPSE_INSTANCE_ID);
+ }
+ return userId;
+ }
+
+ /**
+ * Creates an unique identifier.
+ *
+ * @return the identifier
+ */
+ private String createIdentifier() {
+ StringBuilder builder = new StringBuilder();
+ builder.append(Math.abs(random.nextLong()));
+ builder.append(System.currentTimeMillis());
+ return builder.toString();
+ }
+}
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/EclipseEnvironment.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/GoogleAnalyticsUrlStrategy.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/GoogleAnalyticsUrlStrategy.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/GoogleAnalyticsUrlStrategy.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/GoogleAnalyticsUrlStrategy.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,237 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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;
+
+import java.io.UnsupportedEncodingException;
+
+import org.jboss.tools.usage.googleanalytics.FocusPoint;
+import org.jboss.tools.usage.googleanalytics.IGoogleAnalyticsParameters;
+import org.jboss.tools.usage.googleanalytics.IURLBuildingStrategy;
+import org.jboss.tools.usage.util.EncodingUtils;
+
+/**
+ * Class that builds an URL that passes given parameters to google analytics
+ *
+ * @author Andre Dietisheim
+ */
+public class GoogleAnalyticsUrlStrategy implements IURLBuildingStrategy {
+
+ private static final String TRACKING_URL =
"http://www.google-analytics.com/__utm.gif";
+
+ private static final int VISITS = -1;
+
+ private IGoogleAnalyticsParameters googleParameters;
+
+ public GoogleAnalyticsUrlStrategy(IGoogleAnalyticsParameters googleAnalyticsParameters)
{
+ this.googleParameters = googleAnalyticsParameters;
+ }
+
+ public String build(FocusPoint focusPoint) throws UnsupportedEncodingException {
+ /*
+ * Google Analytics for Android:
+ *
+ String str = "";
+ if (paramEvent.action != null)
+ str = paramEvent.action;
+ if (!(str.startsWith("/")))
+ str = "/" + str;
+ str = encode(str);
+ Locale localLocale = Locale.getDefault();
+ StringBuilder localStringBuilder = new StringBuilder();
+ localStringBuilder.append("/__utm.gif");
+ localStringBuilder.append("?utmwv=4.3");
+ localStringBuilder.append("&utmn=").append(paramEvent.randomVal);
+ localStringBuilder.append("&utmcs=UTF-8");
+ localStringBuilder.append(String.format("&utmsr=%dx%d", new Object[] {
+ Integer.valueOf(paramEvent.screenWidth)
+ , Integer.valueOf(paramEvent.screenHeight) }));
+ localStringBuilder.append(String.format("&utmul=%s-%s", new Object[] {
+ localLocale.getLanguage()
+ , localLocale.getCountry() }));
+ localStringBuilder.append("&utmp=").append(str);
+ localStringBuilder.append("&utmac=").append(paramEvent.accountId);
+ localStringBuilder.append("&utmcc=").append(
+ getEscapedCookieString(paramEvent, paramString));
+ return localStringBuilder.toString();
+
+ *
+ * getEscapedCookieString:
+ *
+ StringBuilder localStringBuilder = new StringBuilder();
+ localStringBuilder.append("__utma=");
+ localStringBuilder.append("999").append(".");
+ localStringBuilder.append(paramEvent.userId).append(".");
+ localStringBuilder.append(paramEvent.timestampFirst).append(".");
+ localStringBuilder.append(paramEvent.timestampPrevious).append(".");
+ localStringBuilder.append(paramEvent.timestampCurrent).append(".");
+ localStringBuilder.append(paramEvent.visits);
+ if (paramString != null)
+ {
+ localStringBuilder.append("+__utmz=");
+ localStringBuilder.append("999").append(".");
+ localStringBuilder.append(paramEvent.timestampFirst).append(".");
+ localStringBuilder.append("1.1.");
+ localStringBuilder.append(paramString);
+ }
+ return encode(localStringBuilder.toString());
+
+ */
+
+ /*
+ * our working tracking code
+ *
+
http://www.google-analytics.com/__utm.gif?utmwv=4.7.2
+ &utmn=338321265
+ &utmhn=jboss.org
+ &utmcs=UTF-8
+ &utmsr=1920x1080
+ &utmsc=24-bit
+ &utmul=en-us
+ &utmje=1
+ &utmfl=10.1%20r53
+ &utmdt=-%20JBoss%20Community
+ &utmhid=1087431432
+ &utmr=0
+ &utmp=%2Ftools%2Fusage.html
+ &utmac=UA-17645367-1
+ &utmcc=__utma%3D156030500.1285760711.1281430767.1281430767.1281430767.1%3B%2B__utmz%3D156030500.1281430767.1.1.utmcsr%3D(direct)%7Cutmccn%3D(direct)%7Cutmcmd%3D(none)%3B
+ &gaq=1
+ *
+ */
+
+ StringBuilder builder = new StringBuilder(TRACKING_URL)
+ .append(IGoogleAnalyticsParameters.URL_PARAM_DELIMITER);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_TRACKING_CODE_VERSION,
+ IGoogleAnalyticsParameters.VALUE_TRACKING_CODE_VERSION, builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_UNIQUE_TRACKING_NUMBER,
getRandomNumber(), builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_HOST_NAME,
googleParameters.getHostname(), builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_LANGUAGE_ENCODING,
+ IGoogleAnalyticsParameters.VALUE_ENCODING_UTF8, builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_SCREEN_RESOLUTION,
googleParameters.getScreenResolution(),
+ builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_SCREEN_COLOR_DEPTH,
googleParameters.getScreenColorDepth(),
+ builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_BROWSER_LANGUAGE,
googleParameters.getBrowserLanguage(),
+ builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_PAGE_TITLE,
focusPoint.getContentTitle(), builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_HID, getRandomNumber(), builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_REFERRAL,
googleParameters.getReferral(), builder);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_PAGE_REQUEST,
focusPoint.getContentURI(), builder);
+
+ appendParameter(IGoogleAnalyticsParameters.PARAM_ACCOUNT_NAME,
googleParameters.getAccountName(), builder);
+ appendCookies(focusPoint, builder);
+ builder.append(IGoogleAnalyticsParameters.AMPERSAND);
+ appendParameter(IGoogleAnalyticsParameters.PARAM_GAQ, "1", false, builder);
+
+ return builder.toString();
+ }
+
+ private void appendCookies(FocusPoint focusPoint, StringBuilder builder) {
+
+ long timeStamp = System.currentTimeMillis();
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder.append(IGoogleAnalyticsParameters.PARAM_COOKIES_FIRST_VISIT)
+ .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ .append("999.")
+ .append(googleParameters.getUserId()).append(IGoogleAnalyticsParameters.DOT)
+ .append(timeStamp).append(IGoogleAnalyticsParameters.DOT)
+ .append(timeStamp).append(IGoogleAnalyticsParameters.DOT)
+ .append(timeStamp).append(IGoogleAnalyticsParameters.DOT)
+ .append(VISITS)
+ .append(IGoogleAnalyticsParameters.SEMICOLON)
+ .append(IGoogleAnalyticsParameters.PLUS_SIGN)
+ .append(IGoogleAnalyticsParameters.PARAM_COOKIES_REFERRAL_TYPE)
+ .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ .append("999.")
+ .append(timeStamp).append(IGoogleAnalyticsParameters.DOT)
+ .append("1.1.")
+ .append(IGoogleAnalyticsParameters.PARAM_COOKIES_UTMCSR).append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ .append("(direct)").append(IGoogleAnalyticsParameters.PIPE)
+ .append(IGoogleAnalyticsParameters.PARAM_COOKIES_UTMCCN).append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ .append("(direct)").append(IGoogleAnalyticsParameters.PIPE)
+ .append(IGoogleAnalyticsParameters.PARAM_COOKIES_UTMCMD).append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ .append("(none)")
+ .append(IGoogleAnalyticsParameters.SEMICOLON);
+
+ String encodedString = EncodingUtils.checkedEncodeUtf8(stringBuilder.toString());
+
+ builder.append(IGoogleAnalyticsParameters.PARAM_COOKIES).append(IGoogleAnalyticsParameters.EQUALS_SIGN).append(
+ encodedString);
+
+ // builder.append(IGoogleAnalyticsParameters.PARAM_COOKIE_VALUES)
+ // .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ // .append("__utma%3D")
+ // .append(getRandomNumber())
+ // .append(".")
+ // .append(getRandomNumber())
+ // .append(".")
+ // .append(now)
+ // .append(".")
+ // .append(now)
+ // .append(".")
+ // .append(now)
+ // .append(".2%3B%2B)")
+ //
+ // // .append("__utmb%3D")
+ // // .append(getRandomNumber())
+ // // .append("%3B%2B__utmc%3D")
+ // // .append(getRandomNumber())
+ // // .append("%3B%2B")
+ //
+ // .append("__utmz%3D")
+ // .append(getRandomNumber())
+ // .append(".")
+ // .append(now)
+ // .append(IGoogleAnalyticsParameters.AMPERSAND);
+
+ // .append("utmcsr%3D(direct)%7C")
+ // .append("utmccn%3D(direct)%7C")
+ // .append("utmcmd%3D(none)%3B");
+
+ }
+
+ private String getRandomNumber() {
+ return Integer.toString((int) (Math.random() * 0x7fffffff));
+ }
+
+ private void appendParameter(String name, String value, StringBuilder builder) {
+ appendParameter(name, value, true, builder);
+ }
+
+ private void appendParameter(String name, String value, boolean appendAmpersand,
StringBuilder builder) {
+ builder.append(name)
+ .append(IGoogleAnalyticsParameters.EQUALS_SIGN)
+ .append(value);
+ if (appendAmpersand) {
+ builder.append(IGoogleAnalyticsParameters.AMPERSAND);
+ }
+ }
+
+ // private String getIpAddress() throws SocketException {
+ // Enumeration<NetworkInterface> e1 =
+ // (Enumeration<NetworkInterface>)NetworkInterface.getNetworkInterfaces();
+ // while(e1.hasMoreElements()) {
+ // NetworkInterface ni = e1.nextElement();
+ //
+ // System.out.print(ni.getName());
+ // System.out.print(" : [");
+ // Enumeration<InetAddress> e2 = ni.getInetAddresses();
+ // while(e2.hasMoreElements()) {
+ // InetAddress ia = e2.nextElement();
+ // System.out.print(ia);
+ // if( e2.hasMoreElements()) {
+ // System.out.print(",");
+ // }
+ // }
+ // System.out.println("]");
+ // }
+ // }
+}
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/GoogleAnalyticsUrlStrategy.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/HttpGetMethod.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/HttpGetMethod.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/HttpGetMethod.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/HttpGetMethod.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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;
+
+import java.io.IOException;
+import java.net.CookieHandler;
+import java.net.CookieManager;
+import java.net.CookiePolicy;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.text.MessageFormat;
+
+import org.jboss.tools.usage.googleanalytics.ILoggingAdapter;
+
+/**
+ * Class that executes a HTTP Get request to the given url.
+ *
+ * @author Andre Dietisheim
+ */
+public class HttpGetMethod {
+
+ private static final String USER_AGENT = "User-Agent";
+
+ private static final String GET_METHOD_NAME = "GET";
+
+ private static final String SUCCESS_MESSAGE = "Http Get to url {0}
successfull!";
+
+ private static final String ERROR_MESSAGE = "Http Get to {0} failed, response code
was {1}";
+
+ private ILoggingAdapter loggingAdapter = null;
+
+ private CookieManager cookieHandler;
+
+ private String userAgent;
+
+ public HttpGetMethod(String userAgent, ILoggingAdapter loggingAdapter) {
+ this.userAgent = userAgent;
+ this.loggingAdapter = loggingAdapter;
+ this.cookieHandler = new CookieManager();
+ cookieHandler.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
+ }
+
+ public void request(String urlString) {
+
+ CookieHandler currentCookieHandler = setCookieHandler(cookieHandler);
+ try {
+ HttpURLConnection urlConnection = createURLConnection(urlString, userAgent);
+ urlConnection.connect();
+ int responseCode = getResponseCode(urlConnection);
+ if (responseCode != HttpURLConnection.HTTP_OK) {
+ loggingAdapter.logMessage(MessageFormat.format(ERROR_MESSAGE, urlString,
responseCode));
+ } else {
+ loggingAdapter.logError(MessageFormat.format(SUCCESS_MESSAGE, urlString));
+ }
+ } catch (Exception e) {
+ loggingAdapter.logError(e.getMessage());
+ } finally {
+ setCookieHandler(currentCookieHandler);
+ }
+ }
+
+ /**
+ * Returns the return code from the given {@link HttpURLConnection}.
+ * Provided to be called by test cases so that they can retrieve the return code.
+ *
+ * @param urlConnection to get the response code from
+ * @return the return code the HttpUrlConnection received
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ protected int getResponseCode(HttpURLConnection urlConnection) throws IOException {
+ return urlConnection.getResponseCode();
+ }
+
+ private CookieHandler setCookieHandler(CookieHandler cookieHandler) {
+ CookieHandler currentCookieHandler = CookieHandler.getDefault();
+ CookieHandler.setDefault(cookieHandler);
+ return currentCookieHandler;
+ }
+
+ /**
+ * Creates a new url connection.
+ *
+ * @param urlString the url string
+ * @param userAgent the user agent
+ * @return the http url connection
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ protected HttpURLConnection createURLConnection(String urlString, String userAgent)
throws IOException {
+ URL url = new URL(urlString);
+ HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
+ urlConnection.setInstanceFollowRedirects(true);
+ urlConnection.setRequestMethod(GET_METHOD_NAME);
+ urlConnection.setRequestProperty(USER_AGENT, userAgent);
+ return urlConnection;
+ }
+}
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/HttpGetMethod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/PluginLogger.java
(from rev 24090,
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/jgoogleanalytics/PluginLogger.java)
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/PluginLogger.java
(rev 0)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/PluginLogger.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.jboss.tools.usage.googleanalytics.ILoggingAdapter;
+
+public class PluginLogger implements ILoggingAdapter {
+
+ private Plugin plugin;
+
+ public PluginLogger(Plugin plugin) {
+ this.plugin = plugin;
+ }
+
+ public void logError(String message) {
+ log(IStatus.ERROR, message);
+ }
+
+ public void logMessage(String message) {
+ log(IStatus.INFO, message);
+ }
+
+ private void log(int severity, String message) {
+ if (plugin != null) {
+ IStatus status = new Status(severity, plugin.getBundle().getSymbolicName(), message);
+ plugin.getLog().log(status);
+ }
+ }
+}
Property changes on:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/PluginLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/UsageReport.java
===================================================================
---
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/UsageReport.java 2010-08-16
10:55:59 UTC (rev 24175)
+++
trunk/usage/plugins/org.jboss.tools.usage/src/org/jboss/tools/usage/internal/UsageReport.java 2010-08-16
10:57:43 UTC (rev 24176)
@@ -15,12 +15,11 @@
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
-import org.jboss.tools.usage.IUsageTracker;
-import org.jboss.tools.usage.jgoogleanalytics.EclipseEnvironment;
-import org.jboss.tools.usage.jgoogleanalytics.FocusPoint;
-import org.jboss.tools.usage.jgoogleanalytics.IGoogleAnalyticsParameters;
-import org.jboss.tools.usage.jgoogleanalytics.JGoogleAnalyticsTracker;
-import org.jboss.tools.usage.jgoogleanalytics.PluginLogger;
+import org.jboss.tools.usage.ITracker;
+import org.jboss.tools.usage.googleanalytics.FocusPoint;
+import org.jboss.tools.usage.googleanalytics.IGoogleAnalyticsParameters;
+import org.jboss.tools.usage.googleanalytics.ILoggingAdapter;
+import org.jboss.tools.usage.googleanalytics.Tracker;
import org.jboss.tools.usage.preferences.IUsageReportPreferenceConstants;
import org.jboss.tools.usage.util.StatusUtils;
import org.osgi.service.prefs.BackingStoreException;
@@ -29,6 +28,8 @@
private static final String GANALYTICS_TRACKINGCODE = "UA-17645367-1";
+ private static final String HOST_NAME = "jboss.org";
+
private FocusPoint focusPoint = new FocusPoint("jboss.org")
.setChild(new FocusPoint("tools").setChild(new
FocusPoint("usage").setChild(new FocusPoint("action")
.setChild(new FocusPoint("wsstartup")))));
@@ -61,16 +62,17 @@
preferences.putBoolean(IUsageReportPreferenceConstants.USAGEREPORT_ENABLED, enabled);
}
- private void report(IUsageTracker tracker) {
+ private void report(ITracker tracker) {
tracker.trackAsynchronously(focusPoint);
}
- private IUsageTracker getAnalyticsTracker() {
+ private ITracker getAnalyticsTracker() {
IGoogleAnalyticsParameters eclipseSettings = new EclipseEnvironment(
GANALYTICS_TRACKINGCODE
+ , HOST_NAME
, IGoogleAnalyticsParameters.VALUE_NO_REFERRAL);
- JGoogleAnalyticsTracker tracker = new JGoogleAnalyticsTracker(eclipseSettings);
- tracker.setLoggingAdapter(new PluginLogger(JBossToolsUsageActivator.getDefault()));
+ ILoggingAdapter loggingAdapter = new
PluginLogger(JBossToolsUsageActivator.getDefault());
+ Tracker tracker = new Tracker(eclipseSettings, loggingAdapter);
return tracker;
}