package cgeo.geocaching.filter; import cgeo.geocaching.R; import cgeo.geocaching.models.Geocache; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import java.util.ArrayList; import java.util.List; class DifficultyFilter extends AbstractRangeFilter { public static final Creator<DifficultyFilter> CREATOR = new Parcelable.Creator<DifficultyFilter>() { @Override public DifficultyFilter createFromParcel(final Parcel in) { return new DifficultyFilter(in); } @Override public DifficultyFilter[] newArray(final int size) { return new DifficultyFilter[size]; } }; private DifficultyFilter(@StringRes final int name, final int difficulty) { // do not inline the name constant. Android Lint has a bug which would lead to using the super super constructors // @StringRes annotation for the non-annotated difficulty parameter of this constructor. super(name, difficulty, Factory.DIFFICULTY_MAX); } protected DifficultyFilter(final Parcel in) { super(in); } @Override public boolean accepts(@NonNull final Geocache cache) { final float difficulty = cache.getDifficulty(); return rangeMin <= difficulty && difficulty < rangeMax; } public static class Factory implements IFilterFactory { private static final int DIFFICULTY_MIN = 1; private static final int DIFFICULTY_MAX = 5; @Override @NonNull public List<IFilter> getFilters() { final List<IFilter> filters = new ArrayList<>(DIFFICULTY_MAX); for (int difficulty = DIFFICULTY_MIN; difficulty <= DIFFICULTY_MAX; difficulty++) { filters.add(new DifficultyFilter(R.string.cache_difficulty, difficulty)); } return filters; } } }