public boolean isNew() { return getPK() == null; }
@Override public boolean equals(final Object other) { if (!(other instanceof ProjectAssignment)) { return false; } ProjectAssignment castOther = (ProjectAssignment) other; return new EqualsBuilder() .append(user, castOther.user) .append(project, castOther.project) .append(hourlyRate, castOther.hourlyRate) .append(dateStart, castOther.dateStart) .append(dateEnd, castOther.dateEnd) .append(role, castOther.role) .append(assignmentType, castOther.assignmentType) .append(allottedHours, castOther.allottedHours) .append(allowedOverrun, castOther.allowedOverrun) .append(active, castOther.active) .append(getPK(), castOther.getPK()) .isEquals(); }
@Override @Transactional(readOnly = true) public List<ProjectAssignment> getProjectAssignmentsAndCheckDeletability(Project project) { List<ProjectAssignment> assignmentsForProject = projectAssignmentDAO.findAllProjectAssignmentsForProject(project); if (!assignmentsForProject.isEmpty()) { Map<Integer, ProjectAssignment> assignmentMap = Maps.newHashMap(); for (ProjectAssignment projectAssignment : assignmentsForProject) { projectAssignment.setDeletable(true); assignmentMap.put(projectAssignment.getPK(), projectAssignment); } List<AssignmentAggregateReportElement> aggregates = reportAggregatedDAO.getCumulatedHoursPerAssignmentForAssignments(Lists.newArrayList(assignmentMap.keySet())); for (AssignmentAggregateReportElement aggregate : aggregates) { assignmentMap.get(aggregate.getProjectAssignment().getAssignmentId()).setDeletable(false); } } return assignmentsForProject; }
@Test public void should_find_project_assignments_for_project_and_check_deletability() throws ObjectNotFoundException { Project project = ProjectObjectMother.createProject(1); ProjectAssignment deleteableAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1); ProjectAssignment nondeleteableAssignment = ProjectAssignmentObjectMother.createProjectAssignment(2); when(projectAssignmentDAO.findAllProjectAssignmentsForProject(project)).thenReturn(Arrays.asList(deleteableAssignment, nondeleteableAssignment)); when(reportAggregatedDAO.getCumulatedHoursPerAssignmentForAssignments(Lists.newArrayList(deleteableAssignment.getPK(), nondeleteableAssignment.getPK()))) .thenReturn(Lists.newArrayList(new AssignmentAggregateReportElement(nondeleteableAssignment, 5))); List<ProjectAssignment> assignments = projectAssignmentService.getProjectAssignmentsAndCheckDeletability(project); assertTrue(assignments.get(0).isDeletable()); assertFalse(assignments.get(1).isDeletable()); } }