- FilterQueryProvider provider = new FilterQueryProvider() {
- @Override
- public Cursor runQuery(CharSequence constraint) {
- if (constraint == null) return null;
-
- String str = constraint.toString().toUpperCase();
- Log.d("autocompletion", "Looking for " + str);
- String[] col_names = {FontsContract.Columns._ID, field};
- MatrixCursor c = new MatrixCursor(col_names);
-
- String sql;
- String[] params;
- if (profileSpecific) {
- sql = String.format("SELECT %s as a, case when %s_upper LIKE ?||'%%' then 1 " +
- "WHEN %s_upper LIKE '%%:'||?||'%%' then 2 " +
- "WHEN %s_upper LIKE '%% '||?||'%%' then 3 " +
- "else 9 end " + "FROM %s " +
- "WHERE profile=? AND %s_upper LIKE '%%'||?||'%%' " +
- "ORDER BY 2, 1;", field, field, field, field, table, field);
- params = new String[]{str, str, str, Data.profile.get().getUuid(), str};
- }
- else {
- sql = String.format("SELECT %s as a, case when %s_upper LIKE ?||'%%' then 1 " +
- "WHEN %s_upper LIKE '%%:'||?||'%%' then 2 " +
- "WHEN %s_upper LIKE '%% '||?||'%%' then 3 " +
- "else 9 end " + "FROM %s " +
- "WHERE %s_upper LIKE '%%'||?||'%%' " + "ORDER BY 2, 1;",
- field, field, field, field, table, field);
- params = new String[]{str, str, str, str};
- }
- Log.d("autocompletion", sql);
- SQLiteDatabase db = MLDB.getReadableDatabase();
-
- try (Cursor matches = db.rawQuery(sql, params)) {
- int i = 0;
- while (matches.moveToNext()) {
- String match = matches.getString(0);
- int order = matches.getInt(1);
- Log.d("autocompletion", String.format("match: %s |%d", match, order));
- c.newRow().add(i++).add(match);
- }
- }
-
- return c;
-
+ FilterQueryProvider provider = constraint -> {
+ if (constraint == null)
+ return null;
+
+ String str = constraint.toString()
+ .toUpperCase();
+ debug("autocompletion", "Looking for " + str);
+
+ String sql;
+ String[] params;
+ if (profileSpecific) {
+ MobileLedgerProfile p = (profile == null) ? Data.getProfile() : profile;
+ sql = String.format(
+ "SELECT rowid as _id, %s, CASE WHEN %s_upper LIKE ?||'%%' THEN 1 " +
+ "WHEN %s_upper LIKE '%%:'||?||'%%' then 2 " +
+ "WHEN %s_upper LIKE '%% '||?||'%%' THEN 3 " + "ELSE 9 END " + "FROM %s " +
+ "WHERE profile=? AND %s_upper LIKE '%%'||?||'%%' " +
+ "ORDER BY 3, %s_upper, 1;", field, field, field, field, table, field,
+ field);
+ params = new String[]{str, str, str, p.getUuid(), str};
+ }
+ else {
+ sql = String.format(
+ "SELECT rowid as _id, %s, CASE WHEN %s_upper LIKE ?||'%%' THEN 1 " +
+ "WHEN %s_upper LIKE '%%:'||?||'%%' THEN 2 " +
+ "WHEN %s_upper LIKE '%% '||?||'%%' THEN 3 " + "ELSE 9 END " + "FROM %s " +
+ "WHERE %s_upper LIKE '%%'||?||'%%' " + "ORDER BY 3, %s_upper, 1;", field,
+ field, field, field, table, field, field);
+ params = new String[]{str, str, str, str};