@Override
 public List<SubAward> getLinkedSubAwards(Award award) {
   Map<String, Object> values = new HashMap<String, Object>();
   values.put("awardId", award.getAwardId());
   Collection<SubAwardFundingSource> subAwardFundingSources =
       businessObjectService.findMatching(SubAwardFundingSource.class, values);
   Set<String> subAwardSet = new TreeSet<String>();
   for (SubAwardFundingSource subAwardFundingSource : subAwardFundingSources) {
     subAwardSet.add(subAwardFundingSource.getSubAward().getSubAwardCode());
   }
   List<SubAward> subAwards = new ArrayList<SubAward>();
   for (String subAwardCode : subAwardSet) {
     VersionHistory activeVersion =
         getVersionHistoryService().findActiveVersion(SubAward.class, subAwardCode);
     if (activeVersion == null) {
       VersionHistory pendingVersion =
           getVersionHistoryService().findPendingVersion(SubAward.class, subAwardCode);
       if (pendingVersion != null) {
         subAwards.add((SubAward) pendingVersion.getSequenceOwner());
       }
     } else {
       subAwards.add((SubAward) activeVersion.getSequenceOwner());
     }
   }
   return subAwards;
 }
  @Override
  public List<KeyValue> getKeyValues() {
    final SubAwardDocument doc = (SubAwardDocument) getDocument();
    final StringBuilder fundingValues = new StringBuilder();
    final Long subawardID = doc.getSubAward().getSubAwardId();
    final List<KeyValue> keyValues = new ArrayList<>();
    final Collection<SubAwardFundingSource> fundingSource =
        getBusinessObjectService()
            .findMatching(
                SubAwardFundingSource.class, Collections.singletonMap("subAwardId", subawardID));

    for (SubAwardFundingSource subAwardFunding : fundingSource) {
      fundingValues.append(subAwardFunding.getAward().getAwardNumber());
      keyValues.add(
          new ConcreteKeyValue(
              subAwardFunding.getSubAwardFundingSourceId().toString(),
              "Award:" + subAwardFunding.getAward().getAwardNumber()));
    }
    if (fundingValues.length() == 0) {
      keyValues.add(
          0, new ConcreteKeyValue("", "No Funding Source has been added to this Subaward"));
    }
    return keyValues;
  }