blob: e1b35f1252de4ec7feddfacfecbe7959ab8fdb9e [file] [log] [blame]
package org.wordpress.android.analytics;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import java.util.Map;
import java.util.UUID;
import org.wordpress.android.analytics.AnalyticsTracker.Stat;
import org.wordpress.android.util.AppLog;
public abstract class Tracker {
abstract void track(Stat stat);
abstract void track(Stat stat, Map<String, ?> properties);
abstract void endSession();
abstract void flush();
abstract void refreshMetadata(AnalyticsMetadata metadata);
abstract void registerPushNotificationToken(String regId);
abstract String getAnonIdPrefKey();
private String mAnonID = null; // do not access this variable directly. Use methods.
private String mWpcomUserName = null;
Context mContext;
public Tracker(Context context) throws IllegalArgumentException {
if (null == context) {
throw new IllegalArgumentException("Tracker requires a not-null context");
}
mContext = context;
}
void clearAllData() {
// Reset the anon ID here
clearAnonID();
setWordPressComUserName(null);
}
void clearAnonID() {
mAnonID = null;
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
if (preferences.contains(getAnonIdPrefKey())) {
final SharedPreferences.Editor editor = preferences.edit();
editor.remove(getAnonIdPrefKey());
editor.commit();
}
}
String getAnonID() {
if (mAnonID == null) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
mAnonID = preferences.getString(getAnonIdPrefKey(), null);
}
return mAnonID;
}
String generateNewAnonID() {
String uuid = UUID.randomUUID().toString().replace("-", "");
AppLog.d(AppLog.T.STATS, "New anonID generated in " + this.getClass().getSimpleName() + ": " + uuid);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
final SharedPreferences.Editor editor = preferences.edit();
editor.putString(getAnonIdPrefKey(), uuid);
editor.commit();
mAnonID = uuid;
return uuid;
}
String getWordPressComUserName() {
return mWpcomUserName;
}
void setWordPressComUserName(String userName) {
mWpcomUserName = userName;
}
}