/**
* Copyright 2014 ArcBees Inc.
*
* 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.arcbees.analytics.shared;
import com.arcbees.analytics.shared.options.AnalyticsOptions;
import com.arcbees.analytics.shared.options.ContentOptions;
import com.arcbees.analytics.shared.options.CreateOptions;
import com.arcbees.analytics.shared.options.EventsOptions;
import com.arcbees.analytics.shared.options.ExceptionOptions;
import com.arcbees.analytics.shared.options.SocialOptions;
import com.arcbees.analytics.shared.options.TimingOptions;
public abstract class AnalyticsImpl implements Analytics {
private String userAccount;
protected AnalyticsImpl(String userAccount) {
this.userAccount = userAccount;
}
@Override
public CreateOptions create() {
return create(userAccount);
}
@Override
public TimingOptions endTimingEvent(String timingCategory, String timingVariableName) {
return endTimingEvent(null, timingCategory, timingVariableName);
}
protected String getTimingKey(String timingCategory, String timingVariableName) {
return timingCategory + ":" + timingVariableName;
}
@Override
public AnalyticsOptions send(HitType hitType) {
return send(null, hitType);
}
@Override
public EventsOptions sendEvent(String category, String action) {
return sendEvent(null, category, action);
}
@Override
public EventsOptions sendEvent(String trackerName, String category,
String action) {
return send(trackerName, HitType.EVENT).eventsOptions(category, action);
}
@Override
public ExceptionOptions sendException() {
return sendException(null);
}
@Override
public ExceptionOptions sendException(String trackerName) {
return send(trackerName, HitType.EXCEPTION).exceptionOptions();
}
@Override
public ContentOptions sendPageView() {
return sendPageView(null);
}
@Override
public ContentOptions sendPageView(String trackerName) {
return send(trackerName, HitType.PAGE_VIEW).contentOptions();
}
@Override
public ContentOptions sendScreenView() {
return sendScreenView(null);
}
@Override
public ContentOptions sendScreenView(String trackerName) {
return send(trackerName, HitType.SCREEN_VIEW).contentOptions();
}
@Override
public SocialOptions sendSocial(String socialNetwork, String socialAction,
String socialTarget) {
return sendSocial(null, socialNetwork, socialAction, socialTarget);
}
@Override
public SocialOptions sendSocial(String trackerName, String socialNetwork,
String socialAction, String socialTarget) {
return send(trackerName, HitType.SOCIAL).socialOptions(socialNetwork, socialAction,
socialTarget);
}
@Override
public TimingOptions sendTiming(String timingCategory, String timingVar,
int timingValue) {
return sendTiming(null, timingCategory, timingVar, timingValue);
}
@Override
public TimingOptions sendTiming(String trackerName, String timingCategory,
String timingVar, int timingValue) {
return send(trackerName, HitType.TIMING).timingOptions(timingCategory, timingVar,
timingValue);
}
}