package it.geosolutions.geocollect.android.core.login.utils; import it.geosolutions.geocollect.android.app.BuildConfig; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import android.content.Context; import android.util.Log; /** * Helper class to save and load a list of Strings which is not possible using the * PreferenceManager prior API level 11 * * @author Robert Oehler * */ public class URLListPersistanceUtil { final static String URLS_FILE = "geocollect_server_urls"; /** * Saves the urls to file. */ public static void save(final Context pContext,final ArrayList<String> pUrls) { FileOutputStream fo = null; try { fo = pContext.openFileOutput(URLS_FILE, Context.MODE_PRIVATE); ObjectOutputStream out = new ObjectOutputStream(fo); out.writeObject(pUrls); out.flush(); out.close(); fo.close(); } catch (IOException e) { if(BuildConfig.DEBUG){ Log.e(URLListPersistanceUtil.class.getSimpleName(), "save failed",e); } } } /** * Loads urls. */ @SuppressWarnings("unchecked") public static ArrayList<String> load(final Context pContext) { FileInputStream fi = null; ObjectInputStream in = null; ArrayList<String> urls = null; try { File file = pContext.getFileStreamPath(URLS_FILE); if(file == null || !file.exists()) { // File does not exists yet return null; } fi = pContext.openFileInput(URLS_FILE); in = new ObjectInputStream(fi); urls = (ArrayList<String>) in.readObject(); if(BuildConfig.DEBUG){ Log.e(URLListPersistanceUtil.class.getSimpleName(), "urls loaded"); } in.close(); fi.close(); }catch (Exception e) { if(BuildConfig.DEBUG){ Log.e(URLListPersistanceUtil.class.getSimpleName(), "load failed",e); } return null; } return urls; } }