public void addSortInfo(String sortColumn, boolean sortAscending) {
   SortInfo sortInfo = new SortInfo(sortColumn, sortAscending);
   List<SortInfo> sortInfos = getSortInfos();
   if (sortInfos == null) {
     setSortInfo(sortInfo);
   } else {
     sortInfos.add(sortInfo);
     setSortInfos(sortInfos);
   }
 }
 public void setSortInfo(String sortColumn, boolean sortAscending, boolean removeOtherSortInfos) {
   if (removeOtherSortInfos) {
     SortInfo sortInfo = new SortInfo(sortColumn, sortAscending);
     setSortInfo(sortInfo);
   } else {
     if (getSortInfoIndex(sortColumn, sortAscending) != -1) {
       // do nothing: sort on this column is not set
     } else if (getSortInfoIndex(sortColumn, !sortAscending) != -1) {
       // change direction
       List<SortInfo> newSortInfos = new ArrayList<SortInfo>();
       for (SortInfo sortInfo : getSortInfos()) {
         if (sortColumn.equals(sortInfo.getSortColumn())) {
           newSortInfos.add(new SortInfo(sortColumn, sortAscending));
         } else {
           newSortInfos.add(sortInfo);
         }
       }
       setSortInfos(newSortInfos);
     } else {
       // just add it
       addSortInfo(sortColumn, sortAscending);
     }
   }
 }