private void setAwardAmountInfoDetails(
     AwardHierarchy awardHierarchy, ChildAwardType childAwardType) {
   awardHierarchy.refreshReferenceObject("award");
   Award childAward = awardHierarchy.getAward();
   AwardAmountInfo awardAmountInfo = childAward.getLastAwardAmountInfo();
   if (awardHierarchy.getAward().getAccountNumber() != null) {
     childAwardType.setAccountNumber(awardHierarchy.getAward().getAccountNumber());
   }
   if (awardAmountInfo.getAnticipatedTotalAmount() != null) {
     childAwardType.setAnticipatedTotalAmt(
         awardAmountInfo.getAnticipatedTotalAmount().bigDecimalValue());
   }
   if (awardAmountInfo.getFinalExpirationDate() != null) {
     Calendar finalExpDate = dateTimeService.getCalendar(awardAmountInfo.getFinalExpirationDate());
     childAwardType.setFinalExpirationDate(finalExpDate);
   }
   if (awardAmountInfo.getCurrentFundEffectiveDate() != null) {
     Calendar currentFundEffectiveDate =
         dateTimeService.getCalendar(awardAmountInfo.getCurrentFundEffectiveDate());
     childAwardType.setCurrentFundEffectiveDate(currentFundEffectiveDate);
   }
   if (awardAmountInfo.getAmountObligatedToDate() != null) {
     childAwardType.setAmtObligatedToDate(
         awardAmountInfo.getAmountObligatedToDate().bigDecimalValue());
   }
   if (awardAmountInfo.getObligationExpirationDate() != null) {
     Calendar obligationExpirationDate =
         dateTimeService.getCalendar(awardAmountInfo.getObligationExpirationDate());
     childAwardType.setObligationExpirationDate(obligationExpirationDate);
   }
   childAwardType.setPIName(childAward.getPrincipalInvestigator().getFullName());
 }
  private List<AmountInfoType> recurseTree(
      AwardHierarchy branchNode, List<AmountInfoType> amountInfoTypes) {

    Map<String, Object> criteria =
        ServiceHelper.getInstance()
            .buildCriteriaMap(
                new String[] {"parentAwardNumber", "active"},
                new Object[] {branchNode.getAwardNumber(), Boolean.TRUE});
    Collection c =
        businessObjectService.findMatchingOrderBy(
            AwardHierarchy.class, criteria, AwardHierarchy.UNIQUE_IDENTIFIER_FIELD, true);
    branchNode.setChildren(new ArrayList<AwardHierarchy>(c));
    if (branchNode.hasChildren()) {
      for (AwardHierarchy childNode : branchNode.getChildren()) {
        org.kuali.kra.award.home.AwardAmountInfo awardAmount =
            childNode.getAward().getLastAwardAmountInfo();
        amountInfoTypes.add(setAwardAmountInfo(childNode.getAward(), awardAmount));
        childNode.setParent(branchNode);
        childNode.setRoot(branchNode.getRoot());
        recurseTree(childNode, amountInfoTypes);
      }
    }
    return amountInfoTypes;
  }