/**
   * . This method is for creating new subAward version
   *
   * @param subAwardDocument
   * @return newSubAwardDocument the newSubAwardDocument
   */
  public SubAwardDocument createNewSubAwardVersion(SubAwardDocument subAwardDocument)
      throws VersionException, WorkflowException {

    SubAward newVersion = getVersioningService().createNewVersion(subAwardDocument.getSubAward());

    SubAwardDocument newSubAwardDocument =
        (SubAwardDocument) getDocumentService().getNewDocument(SubAwardDocument.class);
    newSubAwardDocument
        .getDocumentHeader()
        .setDocumentDescription(subAwardDocument.getDocumentHeader().getDocumentDescription());
    newSubAwardDocument.setSubAward(newVersion);
    newVersion.setSubAwardDocument(newSubAwardDocument);
    return newSubAwardDocument;
  }
  private SubAwardDocument getSubAwardDocument() throws WorkflowException {
    SubAwardDocument document =
        (SubAwardDocument)
            KRADServiceLocatorWeb.getDocumentService().getNewDocument(SubAwardDocument.class);
    document.getDocumentHeader().setDocumentDescription("SubcontractDocumentTest test doc");
    SubAward subAward = new SubAward();
    subAward.setOrganizationId("000001");
    subAward.setSubAwardTypeCode(229);
    subAward.setSubAwardCode("7687");
    subAward.setStatusCode(123);
    subAward.setPurchaseOrderNum("111");
    subAward.setRequisitionerId("1");

    document.setSubAward(subAward);
    KRADServiceLocatorWeb.getDocumentService().saveDocument(document);
    return document;
  }
  @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;
  }