package com.boardgamegeek.filterer; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.text.TextUtils; import com.boardgamegeek.util.StringUtils; public abstract class CollectionFilterer { protected static final String DELIMITER = ":"; protected Context context; public CollectionFilterer(@NonNull Context context) { this.context = context; } public abstract void setData(@NonNull String data); @StringRes public abstract int getTypeResourceId(); public int getType() { return StringUtils.parseInt(context.getString(getTypeResourceId(), CollectionFiltererFactory.TYPE_UNKNOWN)); } public abstract String getDisplayText(); public abstract String getSelection(); public abstract String[] getSelectionArgs(); public abstract String flatten(); public boolean isValid() { return !TextUtils.isEmpty(getDisplayText()) && !TextUtils.isEmpty(getSelection()); } @Override public boolean equals(@Nullable Object o) { if (o == null || !(o instanceof CollectionFilterer)) { return false; } CollectionFilterer other = (CollectionFilterer) o; return other.getType() == this.getType(); } @Override public int hashCode() { return this.getType(); } }