private void convertFavorites(Context context) { Log.d(TAG, "About to convert favorites..."); FavoritesDbAdapter favoritesDbAdapter = new FavoritesDbAdapter(this); favoritesDbAdapter.open(); Cursor cursor = favoritesDbAdapter.fetch(); if (cursor.moveToFirst()) { ArrayList<String> transportModes = new ArrayList<String>(); transportModes.add(TransportMode.BUS); transportModes.add(TransportMode.METRO); transportModes.add(TransportMode.TRAIN); transportModes.add(TransportMode.TRAM); transportModes.add(TransportMode.WAX); do { JourneyQuery journeyQuery = new JourneyQuery.Builder() .transportModes(transportModes) .origin( cursor.getString(FavoritesDbAdapter.INDEX_START_POINT), cursor.getInt(FavoritesDbAdapter.INDEX_START_POINT_LATITUDE), cursor.getInt(FavoritesDbAdapter.INDEX_START_POINT_LONGITUDE)) .destination( cursor.getString(FavoritesDbAdapter.INDEX_END_POINT), cursor.getInt(FavoritesDbAdapter.INDEX_END_POINT_LATITUDE), cursor.getInt(FavoritesDbAdapter.INDEX_END_POINT_LONGITUDE)) .create(); // Store new journey String json = null; try { json = journeyQuery.toJson(false).toString(); } catch (JSONException e) { Log.e(TAG, "Failed to convert journey to a json document."); } // Malformed json, skip it. if (json != null) { ContentValues values = new ContentValues(); values.put(Journeys.JOURNEY_DATA, json); values.put(Journeys.STARRED, "1"); values.put(Journeys.CREATED_AT, cursor.getString(FavoritesDbAdapter.INDEX_CREATED)); getContentResolver().insert(Journeys.CONTENT_URI, values); Log.d( TAG, String.format( "Converted favorite journey %s -> %s.", journeyQuery.origin.getName(), journeyQuery.destination.getName())); } } while (cursor.moveToNext()); } cursor.close(); favoritesDbAdapter.close(); }
private static boolean isFavoritesMigrated(Context context) { SharedPreferences settings = context.getSharedPreferences("sthlmtraveling", MODE_PRIVATE); boolean migrated = settings.getBoolean("converted_favorites", false); if (migrated) { Log.d(TAG, "Favorites converted."); return true; } FavoritesDbAdapter favoritesDbAdapter = null; try { favoritesDbAdapter = new FavoritesDbAdapter(context); favoritesDbAdapter.open(); Cursor favoritesCursor = favoritesDbAdapter.fetch(); if (favoritesCursor.getCount() == 0) { // Also mark it as migrated to avoid sending an intent. SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("converted_favorites", true); editor.apply(); migrated = true; } } finally { if (favoritesDbAdapter != null) { favoritesDbAdapter.close(); } } if (migrated) { Log.d(TAG, "No previous favorites, treat as converted."); return true; } String[] projection = new String[] { Journeys._ID, // 0 }; ContentResolver resolver = context.getContentResolver(); Cursor journeyCursor = resolver.query(Journeys.CONTENT_URI, projection, null, null, null); if (journeyCursor.getCount() > 0) { journeyCursor.close(); // Also mark it as migrated to avoid sending an intent. SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("converted_favorites", true); editor.apply(); Log.d(TAG, "Existing journeys, treat as converted."); return true; } journeyCursor.close(); return false; }