package mil.nga.giat.mage.filter; import android.content.Context; import android.util.Log; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.QueryBuilder; import com.j256.ormlite.stmt.Where; import java.sql.SQLException; import mil.nga.giat.mage.sdk.datastore.DaoStore; import mil.nga.giat.mage.sdk.datastore.observation.Observation; import mil.nga.giat.mage.sdk.datastore.observation.ObservationFavorite; import mil.nga.giat.mage.sdk.datastore.user.User; import mil.nga.giat.mage.sdk.datastore.user.UserHelper; import mil.nga.giat.mage.sdk.exceptions.UserException; public class FavoriteFilter implements Filter<Observation> { private static final String LOG_NAME = FavoriteFilter.class.getName(); private Context context; private User currentUser; public FavoriteFilter(Context context) { this.context = context; try { currentUser= UserHelper.getInstance(context).readCurrentUser(); } catch (UserException e) { Log.e(LOG_NAME, "Error reading current user", e); } } @Override public QueryBuilder<ObservationFavorite, Long> query() throws SQLException { if (currentUser == null) { return null; } Dao<ObservationFavorite, Long> observationFavoriteDao = DaoStore.getInstance(context).getObservationFavoriteDao(); QueryBuilder<ObservationFavorite, Long> favoriteQb = observationFavoriteDao.queryBuilder(); favoriteQb.where() .eq("user_id", currentUser.getRemoteId()) .and() .eq("is_favorite", true); return favoriteQb; } @Override public void and(Where<? extends Observation, Long> where) throws SQLException { } @Override public boolean passesFilter(Observation observation) { ObservationFavorite favorite = observation.getFavoritesMap().get(currentUser.getRemoteId()); return favorite != null && favorite.isFavorite(); } }