createSqlSortClause static method

  1. @visibleForTesting
String createSqlSortClause(
  1. BundleMap queryArgs
)

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;
}