private GetReceivedFilesResponse getReceivedFilesResponse(Job job) {

    for (Activity activity : job.getActivities()) {
      if (activity.getSubject().equals("receivedfiles") && activity.getPredicate().equals("get")) {
        return (GetReceivedFilesResponse) activity.getResponse();
      }
    }
    return null;
  }
  protected Activity craftUnpackageListingActivity() throws ParseException {
    Activity unpackageActivity = new Activity();
    unpackageActivity.setPredicate("unpackage");
    unpackageActivity.setSubject("listing");
    UnpackageListingResponse response = new UnpackageListingResponse();

    ScannedListingBatchHeader scannedListingBatchHeader = createScannedListingBatchHeader();

    response.setScannedListing(scannedListingBatchHeader);
    unpackageActivity.setResponse(response);
    return unpackageActivity;
  }
  /**
   * Determine if this inbound file for voucher processing has been presented before. 1. Check if a
   * camunda process is in flight 2.
   *
   * @param processBusinessKey
   * @return
   */
  public boolean matchFile(String processBusinessKey) {
    boolean isMatched = true;
    Job job = jobStore.findJob(processBusinessKey);

    GetReceivedFilesResponse getReceivedFilesResponse = getReceivedFilesResponse(job);
    if (getReceivedFilesResponse == null) return false;

    File sourceFile = new File(lockerPath, processBusinessKey);
    log.info("MatchReceivedFilesRoute || sourceFile path - " + sourceFile.getAbsolutePath());

    if (!sourceFile.exists()) {
      log.error("SourceFile Does not  exist --" + sourceFile.getAbsolutePath());
      return false;
    }

    File[] receivedFile =
        sourceFile.listFiles(
            new FilenameFilter() {
              public boolean accept(File dir, String filename) {
                return filename.endsWith(".DAT");
              }
            });

    File receivedFileName = receivedFile[0];
    log.info("MatchReceivedFilesRoute || receivedDatFile name - " + receivedFileName.getName());

    List<String> fileNameInFileList = getFileNamesInFile(receivedFileName);
    log.info("MatchReceivedFilesRoute || fileNameInDATFile - Size - " + fileNameInFileList.size());

    MatchFilesResponse matchFilesResponse =
        matchReceivedFileNames(getReceivedFilesResponse.getReceivedFiles(), fileNameInFileList);

    Activity parameterActivity = new Activity();
    parameterActivity.setPredicate("match");
    parameterActivity.setSubject("receivedfiles");
    parameterActivity.setJobIdentifier(processBusinessKey);
    parameterActivity.setResponse(matchFilesResponse);
    parameterActivity.setRequestDateTime(new Date());
    job.getActivities().add(parameterActivity);

    if ((matchFilesResponse.getUnmatchedFilesFromDats().size() != 0)
        || (matchFilesResponse.getUnmatchedFilesReceiveds().size() != 0)) {
      isMatched = false;
    }

    log.info("MatchReceivedFilesRoute || isMatched - " + isMatched);

    return isMatched;
  }