code: private void sortByMetaData(List<MetaDataCol> sortColumns)
    {
      if (sortColumns == null || sortColumns.isEmpty())
      {
        sort(new Object[]
        {
          PROP_DOC_NAME
        }, new boolean[]
        {
          true
        });
  
        return;
      }
  
      Object[] sortByColumns = new Object[sortColumns.size()];
      boolean[] ascendingOrDescending = new boolean[sortColumns.size()];
  
      for (int i = 0; i < sortColumns.size(); i++)
      {
  
        sortByColumns[i] = sortColumns.get(i).getColName();
  
        ascendingOrDescending[i] = sortColumns.get(i).ascending;
  
      }
  
      sort(sortByColumns, ascendingOrDescending);
  
    }
docs: Sort the table by a given config. The config includes metadata keys and the
  table is sorted lexicographically by their values. If not config for
  sorting is determined the document name is used for sorting.