1 package com.adjust.sdk;
2 
3 import android.content.Context;
4 
5 /**
6  * Created by pfms on 06/11/14.
7  */
8 public class AdjustConfig {
9     Context context;
10     String appToken;
11     String environment;
12     LogLevel logLevel;
13     String sdkPrefix;
14     Boolean eventBufferingEnabled;
15     String defaultTracker;
16     OnAttributionChangedListener onAttributionChangedListener;
17     String referrer;
18     long referrerClickTime;
19     Boolean knownDevice;
20 
21     public static final String ENVIRONMENT_SANDBOX = "sandbox";
22     public static final String ENVIRONMENT_PRODUCTION = "production";
23 
AdjustConfig(Context context, String appToken, String environment)24     public AdjustConfig(Context context, String appToken, String environment) {
25         if (!isValid(context, appToken, environment)) {
26             return;
27         }
28 
29         this.context = context.getApplicationContext();
30         this.appToken = appToken;
31         this.environment = environment;
32 
33         // default values
34         this.logLevel = LogLevel.INFO;
35         this.eventBufferingEnabled = false;
36     }
37 
setEventBufferingEnabled(Boolean eventBufferingEnabled)38     public void setEventBufferingEnabled(Boolean eventBufferingEnabled) {
39         this.eventBufferingEnabled = eventBufferingEnabled;
40     }
41 
setLogLevel(LogLevel logLevel)42     public void setLogLevel(LogLevel logLevel) {
43         this.logLevel = logLevel;
44     }
45 
setSdkPrefix(String sdkPrefix)46     public void setSdkPrefix(String sdkPrefix) {
47         this.sdkPrefix = sdkPrefix;
48     }
49 
setDefaultTracker(String defaultTracker)50     public void setDefaultTracker(String defaultTracker) {
51         this.defaultTracker = defaultTracker;
52     }
53 
setOnAttributionChangedListener(OnAttributionChangedListener onAttributionChangedListener)54     public void setOnAttributionChangedListener(OnAttributionChangedListener onAttributionChangedListener) {
55         this.onAttributionChangedListener = onAttributionChangedListener;
56     }
57 
hasListener()58     public boolean hasListener() {
59         return onAttributionChangedListener != null;
60     }
61 
isValid()62     public boolean isValid() {
63         return appToken != null;
64     }
65 
isValid(Context context, String appToken, String environment)66     private boolean isValid(Context context, String appToken, String environment) {
67         if (!checkAppToken(appToken)) return false;
68         if (!checkEnvironment(environment)) return false;
69         if (!checkContext(context)) return false;
70 
71         return true;
72     }
73 
checkContext(Context context)74     private static boolean checkContext(Context context) {
75         ILogger logger = AdjustFactory.getLogger();
76         if (context == null) {
77             logger.error("Missing context");
78             return false;
79         }
80 
81         if (!Util.checkPermission(context, android.Manifest.permission.INTERNET)) {
82             logger.error("Missing permission: INTERNET");
83             return false;
84         }
85 
86         return true;
87     }
88 
checkAppToken(String appToken)89     private static boolean checkAppToken(String appToken) {
90         ILogger logger = AdjustFactory.getLogger();
91         if (appToken == null) {
92             logger.error("Missing App Token.");
93             return false;
94         }
95 
96         if (appToken.length() != 12) {
97             logger.error("Malformed App Token '%s'", appToken);
98             return false;
99         }
100 
101         return true;
102     }
103 
checkEnvironment(String environment)104     private static boolean checkEnvironment(String environment) {
105         ILogger logger = AdjustFactory.getLogger();
106         if (environment == null) {
107             logger.error("Missing environment");
108             return false;
109         }
110 
111         if (environment == AdjustConfig.ENVIRONMENT_SANDBOX) {
112             logger.Assert("SANDBOX: Adjust is running in Sandbox mode. " +
113                     "Use this setting for testing. " +
114                     "Don't forget to set the environment to `production` before publishing!");
115             return true;
116         }
117         if (environment == AdjustConfig.ENVIRONMENT_PRODUCTION) {
118             logger.Assert(
119                     "PRODUCTION: Adjust is running in Production mode. " +
120                             "Use this setting only for the build that you want to publish. " +
121                             "Set the environment to `sandbox` if you want to test your app!");
122             return true;
123         }
124 
125         logger.error("Unknown environment '%s'", environment);
126         return false;
127     }
128 }