package com.ensoftcorp.open.android.essentials.preferences;
import java.util.HashMap;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;
import com.ensoftcorp.open.android.essentials.Activator;
import com.ensoftcorp.open.android.essentials.log.Log;
import com.ensoftcorp.open.android.essentials.permissions.mappings.PermissionMapping;
public class AndroidEssentialsPreferences extends AbstractPreferenceInitializer {
private static boolean initialized = false;
/**
* Enable/disable mapping for individual Android api versions
*/
public static final String API_X_MAPPING_ENABLED = "API_X_MAPPING_ENABLED";
public static final Boolean API_X_MAPPING_ENABLED_DEFAULT = false;
public static final HashMap<Integer,Boolean> apiMappingEnabled = new HashMap<Integer,Boolean>();
public static boolean isMappingEnabled(int apiVersion){
if(!initialized){
loadPreferences();
}
Boolean result = apiMappingEnabled.get(apiVersion);
return result == null ? false : result;
}
@Override
public void initializeDefaultPreferences() {
IPreferenceStore preferences = Activator.getDefault().getPreferenceStore();
for(Integer apiMapping : PermissionMapping.getAvailableMappings()){
if(apiMapping == PermissionMapping.HIGHEST_AVAILABLE_MAPPING){
preferences.setDefault(API_X_MAPPING_ENABLED.replace("X", apiMapping.toString()), true);
} else {
preferences.setDefault(API_X_MAPPING_ENABLED.replace("X", apiMapping.toString()), API_X_MAPPING_ENABLED_DEFAULT);
}
}
}
/**
* Loads or refreshes current preference values
*/
public static void loadPreferences() {
try {
IPreferenceStore preferences = Activator.getDefault().getPreferenceStore();
apiMappingEnabled.clear();
for(Integer apiMapping : PermissionMapping.getAvailableMappings()){
apiMappingEnabled.put(apiMapping, preferences.getBoolean(API_X_MAPPING_ENABLED.replace("X", apiMapping.toString())));
}
} catch (Exception e){
Log.warning("Error accessing android essentials preferences, using defaults...", e);
}
initialized = true;
}
}