/*
   * This method will set the values to ChildAwardDetails attributes and
   * finally returns ChildAwardDetails Xml object
   */
  private ChildAwardDetails getChildAwardDetails() {
    ChildAwardDetails childAwardDetails = ChildAwardDetails.Factory.newInstance();

    AwardHierarchy awardHierarchy =
        getAwardHierarchyService().loadAwardHierarchyBranch(award.getAwardNumber());
    List<AwardHierarchy> children = awardHierarchy.getChildren();
    for (AwardHierarchy awardHierarchy2 : children) {
      setAwardHierarchy(awardHierarchy2, childAwardDetails);
    }
    return childAwardDetails;
  }
 private void setAwardHierarchy(
     AwardHierarchy awardHierarchy, ChildAwardDetails childAwardDetails) {
   if (awardHierarchy != null) {
     ChildAwardType childAwardType = childAwardDetails.addNewChildAward();
     AwardHierarchyType hierarchyType = childAwardType.addNewAwardHierarchy();
     hierarchyType.setAwardNumber(awardHierarchy.getAwardNumber());
     hierarchyType.setParentAwardNumber(awardHierarchy.getParentAwardNumber());
     hierarchyType.setRootAwardNumber(awardHierarchy.getRootAwardNumber());
     setAwardAmountInfoDetails(awardHierarchy, childAwardType);
     List<AwardHierarchy> children = awardHierarchy.getChildren();
     for (AwardHierarchy awardHierarchy2 : children) {
       setAwardHierarchy(awardHierarchy2, childAwardDetails);
     }
   }
 }
  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;
  }