Android Open Source - android Favorites Store






From Project

Back to project page android.

License

The source code is released under:

Apache License

If you think the Android project android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.github.digin.android.repositories;
//  w  w w .java2s  .  c om
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.Preference;
import android.provider.Telephony;

import com.github.digin.android.listeners.OnParticipantQueryListener;
import com.github.digin.android.logging.Logger;
import com.github.digin.android.models.Brewery;
import com.github.digin.android.models.Chef;
import com.github.digin.android.models.Participant;
import com.github.digin.android.models.Winery;

import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
 * Stores a user's favorite restaurants
 * Created by mike on 8/13/14.
 */
public abstract class FavoritesStore {

    private static final String prefsName = "prefsFavorites";
    private static final String chefSetPrefId = "favoriteChefsSet";

    public static void storeFavorite(Context context, Participant chef) {

        SharedPreferences prefs = context.getSharedPreferences(prefsName, 0);

        Set<String> favorites = prefs.getStringSet(chefSetPrefId, null);
        if (favorites == null) {
            Logger.log(FavoritesStore.class, "Favorites do not exist, creating new favorites.");
            favorites = new HashSet<String>();
        }

        // Make sure the chef isn't already a favorite
        if (contains(context, chef)) {
            Logger.log(FavoritesStore.class, "Favorites already contains that favorite.");
            return;
        }

        // Store the ID
        Set<String> copy = new HashSet<String>(favorites);
        copy.add(chef.getId());

        // Recommit to the shared prefs
        prefs.edit().putStringSet(chefSetPrefId, copy).commit();

    }

    public static boolean contains(Context context, Participant chef) {

        SharedPreferences prefs = context.getSharedPreferences(prefsName, 0);

        Set<String> favorites = prefs.getStringSet(chefSetPrefId, null);
        if (favorites == null) {
            return false;
        }
        if (favorites.contains(chef.getId())) {
            return true;
        }
        return false;

    }

    public static void removeFavorite(Context context, Participant chef) {
        Logger.log(FavoritesStore.class, "Removing " + chef.getName() + " from store");

        SharedPreferences prefs = context.getSharedPreferences(prefsName, 0);

        Set<String> favorites = prefs.getStringSet(chefSetPrefId, null);
        if (favorites == null) {
            Logger.log(FavoritesStore.class, "Favorites storage does not exist. Cannot remove");
            return;
        }

        if (!contains(context, chef)) {
            Logger.log(FavoritesStore.class, "Requested unfavorite was never favorited.");
            return;
        }

        Set<String> copy = new HashSet<String>(favorites);
        copy.remove(chef.getId());

        if (copy.size() == 0) {
            prefs.edit().remove(chefSetPrefId).commit();
        } else {
            prefs.edit().putStringSet(chefSetPrefId, copy).commit();
        }

    }

    public static void getFavorites(final Context context, final OnParticipantQueryListener<Participant> listener) {

        SharedPreferences prefs = context.getSharedPreferences(prefsName, 0);

        Set<String> original = prefs.getStringSet(chefSetPrefId, null);

        if (original == null) {
            if (listener != null) {
                listener.onComplete(new LinkedList<Participant>());
            }
            return;
        }

        final Set<String> favorites = new HashSet<String>(original);

        if (favorites.size() == 0) {
            if (listener != null) {
                listener.onComplete(new LinkedList<Participant>());
            }
            return;
        }

        final List<Participant> participants = new LinkedList<Participant>();

        ChefsStore.batchGetChefById(context, favorites, new OnParticipantQueryListener<Chef>() {
            @Override
            public void onComplete(List<Chef> items) {
                participants.addAll(items);

                BreweryStore.batchGetBreweryById(context, favorites, new OnParticipantQueryListener<Brewery>() {
                    @Override
                    public void onComplete(List<Brewery> items) {
                        participants.addAll(items);

                        WineryStore.batchGetWineryById(context, favorites, new OnParticipantQueryListener<Winery>() {
                            @Override
                            public void onComplete(List<Winery> items) {
                                participants.addAll(items);

                                listener.onComplete(participants);
                            }
                        });
                    }
                });
            }
        });
    }
}




Java Source Code List

com.github.digin.android.ApplicationTest.java
com.github.digin.android.DiginApplication.java
com.github.digin.android.ImageCacheEntry.java
com.github.digin.android.NavDrawerController.java
com.github.digin.android.NavDrawerItem.java
com.github.digin.android.Utils.java
com.github.digin.android.activities.MainActivity.java
com.github.digin.android.adapters.ChefListAdapter.java
com.github.digin.android.adapters.NavDrawerAdapter.java
com.github.digin.android.adapters.ParticipantListAdapter.java
com.github.digin.android.constants.LocationDataHolder.java
com.github.digin.android.constants.MapOverlayData.java
com.github.digin.android.constants.ParseID.java
com.github.digin.android.constants.ParseKeys.java
com.github.digin.android.constants.Station.java
com.github.digin.android.exceptions.InvalidClassException.java
com.github.digin.android.factories.BreweryFactory.java
com.github.digin.android.factories.ChefFactory.java
com.github.digin.android.factories.WineryFactory.java
com.github.digin.android.fragments.BoundedMapFragment.java
com.github.digin.android.fragments.BreweriesFragment.java
com.github.digin.android.fragments.BreweryDetailsFragment.java
com.github.digin.android.fragments.ChefListFragment.java
com.github.digin.android.fragments.DetailsFragment.java
com.github.digin.android.fragments.DeveloperFragment.java
com.github.digin.android.fragments.DiginAboutFragment.java
com.github.digin.android.fragments.FavoritesFragment.java
com.github.digin.android.fragments.LineupListFragment.java
com.github.digin.android.fragments.ParticipantDetailsFragment.java
com.github.digin.android.fragments.WineriesFragment.java
com.github.digin.android.fragments.WineryDetailsFragment.java
com.github.digin.android.listeners.OnBoundsQueryListener.java
com.github.digin.android.listeners.OnBoundsRetrievalListener.java
com.github.digin.android.listeners.OnParticipantQueryListener.java
com.github.digin.android.listeners.OnSingleParticipantQueryListener.java
com.github.digin.android.logging.AnalyticsHelper.java
com.github.digin.android.logging.Logger.java
com.github.digin.android.models.Brewery.java
com.github.digin.android.models.Chef.java
com.github.digin.android.models.ParseBackedModel.java
com.github.digin.android.models.Participant.java
com.github.digin.android.models.TemporaryParticipantPlaceholder.java
com.github.digin.android.models.Winery.java
com.github.digin.android.models.map.BoundPoint.java
com.github.digin.android.models.map.Bounds.java
com.github.digin.android.repositories.BoundsStore.java
com.github.digin.android.repositories.BreweryStore.java
com.github.digin.android.repositories.ChefsStore.java
com.github.digin.android.repositories.FavoritesStore.java
com.github.digin.android.repositories.WineryStore.java
com.github.digin.android.tasks.ParseAllBoundsTask.java
com.github.digin.android.tasks.ParseAllBreweriesTask.java
com.github.digin.android.tasks.ParseAllChefsTask.java
com.github.digin.android.tasks.ParseAllWineriesTask.java
com.nirhart.parallaxscroll.views.ParallaxExpandableListView.java
com.nirhart.parallaxscroll.views.ParallaxListViewHelper.java
com.nirhart.parallaxscroll.views.ParallaxListView.java
com.nirhart.parallaxscroll.views.ParallaxScrollView.java
com.nirhart.parallaxscroll.views.ParallaxedView.java