package cgeo.geocaching.filter;
import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.models.Geocache;
import android.support.annotation.NonNull;
import android.os.Parcel;
import android.support.annotation.StringRes;
import java.util.ArrayList;
import java.util.List;
abstract class AbstractFilter implements IFilter {
@NonNull
private final String name;
protected AbstractFilter(@StringRes final int nameResourceId) {
this(CgeoApplication.getInstance().getString(nameResourceId));
}
protected AbstractFilter(@NonNull final String name) {
this.name = name;
}
protected AbstractFilter(final Parcel in) {
name = in.readString();
}
@Override
public void filter(@NonNull final List<Geocache> list) {
final List<Geocache> itemsToRemove = new ArrayList<>();
for (final Geocache item : list) {
if (!accepts(item)) {
itemsToRemove.add(item);
}
}
list.removeAll(itemsToRemove);
}
@Override
@NonNull
public String getName() {
return name;
}
/*
* show name in array adapter
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return getName();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(final Parcel dest, final int flags) {
dest.writeString(name);
}
}