createSqlSortClause static method
Returns structured sort args formatted as an SQL sort clause.
Implementation
@visibleForTesting
static String createSqlSortClause(BundleMap queryArgs) {
final columns = _asList<String>(queryArgs[QUERY_ARG_SORT_COLUMNS]);
if (columns == null || columns.isEmpty) {
throw ArgumentError("Can't create sort clause without columns.");
}
String query = columns.join(', ');
const _collatorPrimary = 0;
const _collatorSecondary = 1;
// Interpret PRIMARY and SECONDARY collation strength as no-case collation based
// on their javadoc descriptions.
final collation = queryArgs[QUERY_ARG_SORT_COLLATION] as int?;
if (collation == _collatorPrimary || collation == _collatorSecondary) {
query += " COLLATE NOCASE";
}
final sortDir = queryArgs[QUERY_ARG_SORT_DIRECTION] as int?;
if (sortDir != null) {
switch (sortDir) {
case QUERY_SORT_DIRECTION_ASCENDING:
query += " ASC";
break;
case QUERY_SORT_DIRECTION_DESCENDING:
query += " DESC";
break;
default:
throw ArgumentError(
"Unsupported sort direction value. "
"See ContentResolver documentation for details.",
);
}
}
return query;
}