/*
* Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* 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://aws.amazon.com/apache2.0
*
* This file 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.amazonaws.mobileconnectors.amazonmobileanalytics.core;
import android.app.Activity;
import com.amazonaws.handlers.RequestHandler2;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.AnalyticsContext;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.configuration.Configuration;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.configuration.PreferencesConfiguration;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.http.SDKInfoHandler;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.idresolver.Id;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.idresolver.SharedPrefsUniqueIdService;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.idresolver.UniqueIdService;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.system.MockSystem;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.util.SDKInfo;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.delivery.DefaultDeliveryClient;
import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.delivery.DeliveryClient;
import com.amazonaws.services.mobileanalytics.AmazonMobileAnalyticsClient;
import java.util.Locale;
public class MockAnalyticsContext implements AnalyticsContext {
private final SDKInfo sdkInfo;
private final Configuration configuration;
private final Id uniqueId;
private final MockSystem system;
private final String networkType;
private final DeliveryClient deliveryClient;
private final AmazonMobileAnalyticsClient ersClient;
public MockAnalyticsContext(final SDKInfo sdkInfo, final Id id) {
this(sdkInfo, id, true, null, true, true, true, "TestNetwork");
}
public MockAnalyticsContext(final SDKInfo sdkInfo, final Id id,
RequestHandler2 additionalHandler) {
this(sdkInfo, id, true, additionalHandler, true, true, true, "TestNetwork");
}
public MockAnalyticsContext(final SDKInfo sdkInfo, final Id id, boolean allowWANDelivery) {
this(sdkInfo, id, allowWANDelivery, null, true, true, true, "TestNetwork");
}
public MockAnalyticsContext(final SDKInfo sdkInfo, final Id id, boolean allowWANDelivery,
RequestHandler2 additionalHandler, boolean initConnectivity, boolean initWifi,
boolean initWAN, String networkType) {
this.sdkInfo = sdkInfo;
this.networkType = networkType;
this.system = new MockSystem(id.getValue());
this.system.getPreferences().putString("UniqueId", id.getValue());
this.setConnectivity(initConnectivity);
this.setWAN(initWAN);
this.setWifi(initWifi);
UniqueIdService uniqueIdService = new SharedPrefsUniqueIdService(id.getValue(),
new Activity());
this.uniqueId = uniqueIdService.getUniqueId(this);
AmazonMobileAnalyticsClient ers = new AmazonMobileAnalyticsClient();
ers.addRequestHandler(additionalHandler);
ers.addRequestHandler(new SDKInfoHandler(sdkInfo));
this.ersClient = ers;
configuration = PreferencesConfiguration.newInstance(this);
deliveryClient = DefaultDeliveryClient.newInstance(this, allowWANDelivery);
}
@Override
public Configuration getConfiguration() {
return configuration;
}
@Override
public DeliveryClient getDeliveryClient() {
return deliveryClient;
}
@Override
public Id getUniqueId() {
return uniqueId;
}
@Override
public SDKInfo getSDKInfo() {
return sdkInfo;
}
@Override
public com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.system.System getSystem() {
return system;
}
public void setConnectivity(final boolean isConnected) {
system.setConnectivity(isConnected);
}
public void setWifi(final boolean hasWifi) {
system.setWifi(hasWifi);
}
public void setWAN(final boolean hasWAN) {
system.setWAN(hasWAN);
}
public void setLocale(final Locale newLocale) {
system.setLocale(newLocale);
}
@Override
public AmazonMobileAnalyticsClient getERSClient() {
return ersClient;
}
@Override
public String getNetworkType() {
return networkType;
}
}