com.feedhenry.sdk.utils.DataManager Maven / Gradle / Ivy
/**
* Copyright Red Hat, Inc, and individual contributors.
*
* 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.feedhenry.sdk.utils;
import android.content.Context;
import android.content.SharedPreferences;
import org.json.fh.JSONObject;
/**
* Internal class for managing data persistence.
*/
public class DataManager {
private static final String LEGACY_PREF_KEY = "init";
private static final String PREF_FILE_KEY = "fhsdkprivatedata";
private static final String PREF_KEY_PREFIX = "fhsdk_";
private static final String MIGRATED_KEY = "legacyMigrated";
private static final String TRACKID_KEY = "trackId";
private static final String LOG_TAG = "com.feedhenry.sdk.utils.DataManager";
private static DataManager mInstance;
private Context mContext;
private SharedPreferences mPrefs;
private DataManager(Context context) {
this.mContext = context.getApplicationContext();
this.mPrefs = this.mContext.getSharedPreferences(PREF_FILE_KEY, Context.MODE_PRIVATE);
}
public static synchronized DataManager init(Context context) {
if (mInstance == null) {
mInstance = new DataManager(context);
}
return mInstance;
}
public static synchronized DataManager getInstance() {
if (mInstance == null) {
throw new IllegalStateException("DataManager is not initialised");
}
return mInstance;
}
public void save(String key, String value) {
SharedPreferences.Editor editor = this.mPrefs.edit();
editor.putString(getKey(key), value);
editor.apply();
}
public String read(String key) {
return this.mPrefs.getString(getKey(key), null);
}
public void remove(String key) {
SharedPreferences.Editor editor = this.mPrefs.edit();
editor.remove(getKey(key));
editor.commit();
}
private static String getKey(String key) {
return PREF_KEY_PREFIX + key;
}
/**
* Move the "init" value from the old pref file to the new pref file.
* Only do it once.
*/
public void migrateLegacyData() {
if (read(MIGRATED_KEY) == null) {
SharedPreferences legacyPref = this.mContext.getSharedPreferences(LEGACY_PREF_KEY, Context.MODE_PRIVATE);
if (legacyPref != null) {
String initValue = legacyPref.getString(LEGACY_PREF_KEY, null);
if (initValue != null) {
if (isFHInitValue(initValue)) {
save(LEGACY_PREF_KEY, initValue);
FHLog.d(LOG_TAG, "legacy init data has been migrated : " + initValue);
// remove old prefs
SharedPreferences.Editor editor = legacyPref.edit();
editor.remove(LEGACY_PREF_KEY);
editor.commit();
}
}
}
// at this point, the legacy data has been migrated if it exists.
// If it does not exist, no need to check again in the future anyway.
save(MIGRATED_KEY, String.valueOf(true));
}
}
private static boolean isFHInitValue(String value) {
try {
return new JSONObject(value).has(TRACKID_KEY);
} catch (Exception e) {
return false;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy