/** {@inheritDoc} */
  public ProjectMetrics getProjectMetrics(Project proj) {

    ProjectMetrics metrics = new ProjectMetrics();
    metrics = projectDAO.getProjectBLIMetrics(proj);
    if (metrics == null) {
      metrics = new ProjectMetrics();
    }
    if (metrics.getTotalItems() > 0) {
      metrics.setCompletedItems(projectDAO.getDoneBLIs(proj));
    }
    BacklogMetrics projMetrics = backlogBusiness.calculateLimitedBacklogMetrics(proj);
    if (metrics.getEffortLeft() != null) {
      metrics.getEffortLeft().add(projMetrics.getEffortLeft());
    } else {
      metrics.setEffortLeft(projMetrics.getEffortLeft());
    }
    if (metrics.getOriginalEstimate() != null) {
      metrics.getOriginalEstimate().add(projMetrics.getOriginalEstimate());
    } else {
      metrics.setOriginalEstimate(projMetrics.getOriginalEstimate());
    }
    metrics.setTotalItems(metrics.getTotalItems() + projMetrics.getTotalItems());
    if (metrics.getCompletedItems() != null) {
      metrics.setCompletedItems(metrics.getCompletedItems() + projMetrics.getCompletedItems());
    } else {
      metrics.setCompletedItems(projMetrics.getCompletedItems());
    }
    if (metrics.getTotalItems() > 0) {
      metrics.setPercentDone(
          Math.round(
              100.0f * (float) metrics.getCompletedItems() / (float) metrics.getTotalItems()));
    }
    return metrics;
  }