All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.brsanthu.googleanalytics.GoogleAnalyticsConfig Maven / Gradle / Ivy

Go to download

This is Java API for Google Analytics (Measurement Protocol). More information about the protocol is available at https://developers.google.com/analytics/devguides/collection/protocol/v1/.

There is a newer version: 2.0.0
Show newest version
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.brsanthu.googleanalytics;

/**
 * Properties that can be configured in this library. These would include any properties that are required to process the
 * tracking request or enhance the tracking request (but not specified in measurement protocol like User agent).
 * 

* Most of the properties are initialization level and request level. If a property is a initialization level property, * it should be set at the time of GoogleAnalytics object initialization. If a property is a request level property, * it can be set any time and it will be effective. *

* All properties of this config object supports method chaining. So for example, you could do, * new GoogleAnalyticsConfig().setMaxThreads(2).setThreadNameFormat("name"); * * @author Santhosh Kumar */ public class GoogleAnalyticsConfig { private String threadNameFormat = "googleanalytics-thread-{0}"; private boolean enabled = true; private int maxThreads = 1; private boolean useHttps = true; private boolean validate = true; private String httpUrl = "http://www.google-analytics.com/collect"; private String httpsUrl = "https://ssl.google-analytics.com/collect"; private String userAgent = null; private String proxyHost = null; private int proxyPort = 80; private String proxyUserName = null; private String proxyPassword = null; private boolean discoverRequestParameters = true; private boolean gatherStats = false; private RequestParameterDiscoverer requestParameterDiscoverer = new DefaultRequestParameterDiscoverer(); public RequestParameterDiscoverer getRequestParameterDiscoverer() { return requestParameterDiscoverer; } /** * Sets the appropriate request parameter discoverer. Default is {@link DefaultRequestParameterDiscoverer} but * can be changed to {@link AwtRequestParameterDiscoverer} if you want to use Toolkit to derive the screen resolution etc. * * Please make sure you also enable the discovery using {@link #setDiscoverRequestParameters(boolean)} * * @param requestParameterDiscoverer can be null and is so, parameters will not be discovered. */ public void setRequestParameterDiscoverer(RequestParameterDiscoverer requestParameterDiscoverer) { this.requestParameterDiscoverer = requestParameterDiscoverer; } public boolean isGatherStats() { return gatherStats; } /** * If set to true, {@link GoogleAnalytics} will collect the basic stats about successful event postings * for various hit types and keeps a copy of {@link GoogleAnalyticsStats}, which can be retrieved * using {@link GoogleAnalytics#getStats()} * * @param gatherStats */ public void setGatherStats(boolean gatherStats) { this.gatherStats = gatherStats; } /** * Sets the thread name format that should be while creating the threads. *

* Default is "googleanalytics-thread-{0}" where {0} is the thread counter. If you specify * a custom format, make sure {0} is there somewhere otherwise all threads will be nameed * same and can be an issue for troubleshooting. * * @param threadNameFormat non-null string for thread name. */ public GoogleAnalyticsConfig setThreadNameFormat(String threadNameFormat) { this.threadNameFormat = threadNameFormat; return this; } public String getThreadNameFormat() { return threadNameFormat; } /** * Deprecated since 1.0.6 * * @deprecated Use {@link #setDiscoverRequestParameters(boolean)} instead */ @Deprecated public GoogleAnalyticsConfig setDeriveSystemParameters(boolean deriveSystemProperties) { return setDiscoverRequestParameters(deriveSystemProperties); } /** * If true, derives the system properties (User Language, Region, Country, Screen Size, Color Depth, and File encoding) and adds to * the default request. * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public GoogleAnalyticsConfig setDiscoverRequestParameters(boolean discoverSystemParameters) { this.discoverRequestParameters = discoverSystemParameters; return this; } /** * Deprecated since 1.0.6 * * @deprecated Use {@link #isDiscoverRequestParameters()} instead */ @Deprecated public boolean isDeriveSystemParameters() { return isDiscoverRequestParameters(); } public boolean isDiscoverRequestParameters() { return discoverRequestParameters; } /** * Sets the user name which should be used to authenticate to the proxy server. This is applicable only if {@link #setProxyHost(String)} is not empty. * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public GoogleAnalyticsConfig setProxyUserName(String proxyUserName) { this.proxyUserName = proxyUserName; return this; } public String getProxyUserName() { return proxyUserName; } public String getProxyPassword() { return proxyPassword; } /** * Sets the password which should be used to authenticate to the proxy server. This is applicable only if {@link #setProxyHost(String)} and {@link #setProxyUserName(String)} is not empty. * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public GoogleAnalyticsConfig setProxyPassword(String proxyPassword) { this.proxyPassword = proxyPassword; return this; } public String getProxyHost() { return proxyHost; } /** * Sets the host name of the proxy server, to connect to Google analytics. * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public GoogleAnalyticsConfig setProxyHost(String proxyHost) { this.proxyHost = proxyHost; return this; } public int getProxyPort() { return proxyPort; } /** * Sets the host name of the proxy server, to connect to Google analytics. * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public GoogleAnalyticsConfig setProxyPort(int proxyPort) { this.proxyPort = proxyPort; return this; } public String getUserAgent() { return userAgent; } /** * Sets the user agent string that should be sent while making the http request. Default is Apache Http Client's user agent, * which looks something similar to this. Apache-HttpClient/release (java 1.5) * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public GoogleAnalyticsConfig setUserAgent(String userAgent) { this.userAgent = userAgent; return this; } public boolean isEnabled() { return enabled; } /** * Enables or disables the GoogleAnalytics posting. If disabled, library will continue to accept the send/post requests but silently skips * sending the event and returns successful response. Default is false. * *

This is request level configuration (can be changed any time).

*/ public GoogleAnalyticsConfig setEnabled(boolean enabled) { this.enabled = enabled; return this; } /** * Maximum threads to use to process the asynchronous event posting and Http client connection pooling. Default is 1. * *

This is initialization level configuration (must be set while creating GoogleAnalytics object).

*/ public int getMaxThreads() { return maxThreads; } public GoogleAnalyticsConfig setMaxThreads(int maxThreads) { this.maxThreads = maxThreads; return this; } public boolean isUseHttps() { return useHttps; } /** * Instructs to use https url to send the events. Default is true. * *

This is request level configuration (can be changed any time).

*/ public GoogleAnalyticsConfig setUseHttps(boolean useHttps) { this.useHttps = useHttps; return this; } public boolean isValidate() { return validate; } /** * If set, validates the request before sending to Google Analytics. If any errors found, GoogleAnalyticsException will be thrown with details. * Default is false. Note that, if you are sending the event in async mode, then request is always validated and logged to log file as warnings irrespective * of this flag. * *

This is request level configuration (can be changed any time).

*/ public GoogleAnalyticsConfig setValidate(boolean validate) { this.validate = validate; return this; } public String getHttpUrl() { return httpUrl; } /** * URL to use when posting the event in http mode. This url is Google Analytics service url and usually not updated by the clients. * *

Default value is http://www.google-analytics.com/collect

* *

This is request level configuration (can be changed any time).

*/ public GoogleAnalyticsConfig setHttpUrl(String httpUrl) { this.httpUrl = httpUrl; return this; } public String getHttpsUrl() { return httpsUrl; } /** * URL to use when posting the event in https mode. This url is Google Analytics service url and usually not updated by the clients. *

Default value is https://ssl.google-analytics.com/collect * *

This is request level configuration (can be changed any time).

*/ public GoogleAnalyticsConfig setHttpsUrl(String httpsUrl) { this.httpsUrl = httpsUrl; return this; } String getUrl() { return useHttps?httpsUrl:httpUrl; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("GoogleAnalyticsConfig ["); if (threadNameFormat != null) { builder.append("threadNameFormat="); builder.append(threadNameFormat); builder.append(", "); } builder.append("enabled="); builder.append(enabled); builder.append(", maxThreads="); builder.append(maxThreads); builder.append(", useHttps="); builder.append(useHttps); builder.append(", validate="); builder.append(validate); builder.append(", "); if (httpUrl != null) { builder.append("httpUrl="); builder.append(httpUrl); builder.append(", "); } if (httpsUrl != null) { builder.append("httpsUrl="); builder.append(httpsUrl); builder.append(", "); } if (userAgent != null) { builder.append("userAgent="); builder.append(userAgent); builder.append(", "); } if (proxyHost != null) { builder.append("proxyHost="); builder.append(proxyHost); builder.append(", "); } builder.append("proxyPort="); builder.append(proxyPort); builder.append(", "); if (proxyUserName != null) { builder.append("proxyUserName="); builder.append(proxyUserName); builder.append(", "); } if (proxyPassword != null) { builder.append("proxyPassword="); builder.append(mask(proxyPassword)); builder.append(", "); } builder.append("deriveSystemParameters="); builder.append(discoverRequestParameters); builder.append(", gatherStats="); builder.append(gatherStats); builder.append("]"); return builder.toString(); } public static String mask(String value) { return value == null?null:"********"; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy