/**
   * @see
   *     org.jenkins.plugins.audit2db.reports.JobsByParamReport#getProjectExecutions(java.lang.String,
   *     java.lang.String, java.lang.String, java.lang.String)
   */
  @Override
  public Map<String, List<BuildDetails>> getProjectExecutions(
      final String paramName,
      final String paramValue,
      final String startDateString,
      final String endDateString) {
    final Jenkins jenkins = Jenkins.getInstance();
    if (jenkins != null) {
      // unit tests won't have a Jenkins instance
      jenkins.checkPermission(DbAuditPlugin.RUN);
    }
    final Map<String, List<BuildDetails>> retval = new HashMap<String, List<BuildDetails>>();
    final Date startDate = DbAuditReportUtils.stringToDate(startDateString);
    final Date endDate = DbAuditReportUtils.stringToDate(endDateString);
    final String jenkinsHost = getJenkinsHostname();
    final List<BuildDetails> buildDetails =
        getRepository()
            .getBuildDetailsByParams(jenkinsHost, paramName, paramValue, startDate, endDate);

    for (final BuildDetails details : buildDetails) {
      final String projectName = details.getName();
      if (!retval.containsKey(projectName)) {
        retval.put(projectName, new ArrayList<BuildDetails>());
      }
      retval.get(projectName).add(details);
    }

    return retval;
  }
  @Override
  public Map<String, List<BuildDetails>> getProjectExecutions(
      final String jobName, final String startDateString, final String endDateString) {
    final Jenkins jenkins = Jenkins.getInstance();
    if (jenkins != null) {
      // unit tests won't have a Jenkins instance
      jenkins.checkPermission(DbAuditPlugin.RUN);
    }
    final Map<String, List<BuildDetails>> retval = new HashMap<String, List<BuildDetails>>();
    final Date startDate = DbAuditReportUtils.stringToDate(startDateString);
    final Date endDate = DbAuditReportUtils.stringToDate(endDateString);
    final String jenkinsHost = getJenkinsHostname();
    final List<String> projectNames =
        getRepository().getProjectNames(jenkinsHost, jobName, startDate, endDate);
    for (final String projectName : projectNames) {
      final List<BuildDetails> buildDetails =
          getRepository().getBuildDetails(jenkinsHost, projectName, startDate, endDate);
      if (!buildDetails.isEmpty()) {
        retval.put(projectName, buildDetails);
      }
    }

    return retval;
  }
 @Override
 public String getEndDateParam(final String dateString) {
   return DbAuditReportUtils.getEndDateParam(dateString);
 }
 @Override
 public String getDateGenerated() {
   return DbAuditReportUtils.dateAsString(new Date(), true);
 }