/******************************************************************************* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.jboss.tools.usage.tracker.internal; import java.io.UnsupportedEncodingException; import java.text.MessageFormat; import org.jboss.tools.usage.internal.http.IHttpGetRequest; import org.jboss.tools.usage.tracker.IFocusPoint; import org.jboss.tools.usage.tracker.ITracker; import org.jboss.tools.usage.tracker.IURLBuildingStrategy; /** * Reports (tracks) usage * * @author Andre Dietisheim * @author Siddique Hameed * @see based on <a href="http://jgoogleAnalytics.googlecode.com">http://jgoogleAnalytics.googlecode.com</a> */ public class Tracker implements ITracker { private IURLBuildingStrategy urlBuildingStrategy = null; private IHttpGetRequest httpRequest; private UsagePluginLogger logger; public Tracker(IURLBuildingStrategy urlBuildingStrategy, IHttpGetRequest httpGetRequest, UsagePluginLogger logger) { this.httpRequest = httpGetRequest; this.logger = logger; this.urlBuildingStrategy = urlBuildingStrategy; } public void trackSynchronously(IFocusPoint focusPoint) { logger .debug(MessageFormat.format(TrackerMessages.Tracker_Synchronous, focusPoint.getTitle())); try { httpRequest.request(getTrackingUrl(focusPoint)); } catch (Exception e) { logger.error(MessageFormat.format(TrackerMessages.Tracker_Error, e.getMessage())); } } protected String getTrackingUrl(IFocusPoint focusPoint) throws UnsupportedEncodingException { return urlBuildingStrategy.build(focusPoint); } public void trackAsynchronously(IFocusPoint focusPoint) { logger.debug(MessageFormat .format(TrackerMessages.Tracker_Asynchronous, focusPoint.getTitle())); new Thread(new TrackingRunnable(focusPoint)).start(); } private class TrackingRunnable implements Runnable { private IFocusPoint focusPoint; private TrackingRunnable(IFocusPoint focusPoint) { this.focusPoint = focusPoint; } public void run() { try { httpRequest.request(getTrackingUrl(focusPoint)); } catch (Exception e) { logger.error(MessageFormat.format(TrackerMessages.Tracker_Error, e.getMessage())); } } } }