/**
   * Sorts existing {@link io.realm.RealmResults}.
   *
   * @param fieldName the field name to sort by. Only fields of type boolean, short, int, long,
   *     float, double, Date, and String are supported.
   * @param sortOrder the direction to sort by.
   * @throws java.lang.IllegalArgumentException if field name does not exist.
   */
  public void sort(String fieldName, Sort sortOrder) {
    if (fieldName == null) {
      throw new IllegalArgumentException("fieldName must be provided");
    }
    realm.checkIfValid();
    TableOrView table = getTable();

    if (table instanceof TableView) {
      long columnIndex = getColumnIndex(fieldName);
      ((TableView) table).sort(columnIndex, sortOrder);
    } else {
      throw new IllegalArgumentException(
          "Only RealmResults can be sorted - please use allObject() to create a RealmResults.");
    }
  }
  /**
   * Sorts existing {@link io.realm.RealmResults}.
   *
   * @param fieldNames an array of field names to sort by. Only fields of type boolean, short, int,
   *     long, float, double, Date, and String are supported.
   * @param sortOrders the directions to sort by.
   * @throws java.lang.IllegalArgumentException if a field name does not exist.
   */
  public void sort(String fieldNames[], Sort sortOrders[]) {
    if (fieldNames == null) {
      throw new IllegalArgumentException("fieldNames must be provided.");
    } else if (sortOrders == null) {
      throw new IllegalArgumentException("sortOrder must be provided.");
    }

    if (fieldNames.length == 1 && sortOrders.length == 1) {
      sort(fieldNames[0], sortOrders[0]);
    } else {
      realm.checkIfValid();
      TableOrView table = getTable();
      if (table instanceof TableView) {
        List<Long> columnIndices = new ArrayList<Long>();
        for (int i = 0; i < fieldNames.length; i++) {
          String fieldName = fieldNames[i];
          long columnIndex = getColumnIndex(fieldName);
          columnIndices.add(columnIndex);
        }
        ((TableView) table).sort(columnIndices, sortOrders);
      }
    }
  }