/**
   * @param displayList
   * @param sortPropertyName
   * @return
   */
  private Map<String, KualiDecimal> buildSubTotalMap(
      List<ContractsGrantsAwardBalancesReport> displayList, String sortPropertyName) {
    Map<String, KualiDecimal> returnSubTotalMap = new HashMap<String, KualiDecimal>();
    // get list of sort fields
    List<String> valuesOfsortProperty =
        getListOfValuesSortedProperties(displayList, sortPropertyName);

    // calculate sub_total and build subTotalMap
    for (String value : valuesOfsortProperty) {
      KualiDecimal subTotal = KualiDecimal.ZERO;
      for (ContractsGrantsAwardBalancesReport awardBalancesReportEntry : displayList) {
        // set fieldValue as "" when it is null
        if (value.equals(getPropertyValue(awardBalancesReportEntry, sortPropertyName))) {
          subTotal = subTotal.add(awardBalancesReportEntry.getAwardTotalAmount());
        }
      }
      returnSubTotalMap.put(value, subTotal);
    }
    return returnSubTotalMap;
  }