package org.devtcg.five.widget; import org.devtcg.five.Constants; import android.database.Cursor; import android.text.TextUtils; import android.util.Log; import android.widget.FilterQueryProvider; /** * Basic query provider helper which automatically generates query selection * criteria based on partial string matching semantics on a single column. */ public abstract class SimpleQueryProvider implements FilterQueryProvider { private final String mColumnWhere; private final String mColumnName; public SimpleQueryProvider(String columnName) { mColumnWhere = "UPPER(" + columnName + ") GLOB ?"; mColumnName = columnName; } public String getColumnName() { return mColumnName; } public Cursor runQuery(CharSequence constraint) { String sel; String[] args; if (Constants.DEBUG) Log.d(Constants.TAG, "runQuery, " + mColumnName + ": " + constraint); if (TextUtils.isEmpty(constraint)) { sel = null; args = null; } else { sel = mColumnWhere; String wildcard = constraint.toString().replace(' ', '*'); args = new String[] { "*" + wildcard.toUpperCase() + "*" }; } return getFilterCursor(sel, args); } protected abstract Cursor getFilterCursor(String selection, String[] args); }