@Before
  public void setUp() {
    a1 = new AssignmentAggregateReportElement();
    a2 = new AssignmentAggregateReportElement();

    a1.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(1));
    a2.setProjectAssignment(ProjectAssignmentObjectMother.createProjectAssignment(2));
  }
Beispiel #2
0
  /** Derive the totals */
  public void deriveTotals() {
    float hours = 0;
    float avail = 0;

    if (aggregates != null) {
      for (AssignmentAggregateReportElement aggregate : aggregates) {
        if (aggregate.getHours() == null) {
          continue;
        }

        hours += aggregate.getHours().floatValue();
        avail += aggregate.getAvailableHours().or(0f);
      }
    }

    totalHoursBooked = hours;
    totalHoursAvailable = avail;
  }
  @Override
  public ProjectManagerReport getProjectManagerDetailedReport(Project project) {
    ProjectManagerReport report = new ProjectManagerReport();

    // get the project
    report.setProject(project);

    // get a proper report range
    DateRange reportRange = getReportRangeForProject(project);
    report.setReportRange(reportRange);

    // get all aggregates
    List<Project> projects = Arrays.asList(project);
    SortedSet<AssignmentAggregateReportElement> aggregates =
        new TreeSet<AssignmentAggregateReportElement>(
            reportAggregatedDAO.getCumulatedHoursPerAssignmentForProjects(projects, reportRange));

    // filter out just the id's
    List<Integer> assignmentIds = new ArrayList<>();
    for (AssignmentAggregateReportElement aggregate : aggregates) {
      assignmentIds.add(aggregate.getProjectAssignment().getAssignmentId());
    }

    // get all assignments for this period regardless whether they booked hours on it
    List<ProjectAssignment> allAssignments =
        projectAssignmentService.getProjectAssignments(project, reportRange);

    for (ProjectAssignment assignment : allAssignments) {
      if (!assignmentIds.contains(assignment.getAssignmentId())) {
        AssignmentAggregateReportElement emptyAggregate = new AssignmentAggregateReportElement();
        emptyAggregate.setProjectAssignment(assignment);

        aggregates.add(emptyAggregate);
      }
    }

    report.setAggregates(aggregates);
    report.deriveTotals();

    return report;
  }