/** * Compare on name * @param o1 * @param o2 * @return */ private int compareNames(ProjectAssignment o1, ProjectAssignment o2) { if (o1 != null && o2 != null && o1.getProject() != null && o2.getProject() != null && o1.getProject().getName() != null) { return o1.getProject().getFullName().compareToIgnoreCase(o2.getProject().getFullName()); } else { return o1 == null || o1.getProject() == null ? -1 : 1; } }
/** * Whether assignment/project/customer are all active * * @return */ public boolean isBookable() { return isActive() && (getProject() == null || getProject().isActive()) && (getProject() == null || getProject().getCustomer() == null || getProject().getCustomer().isActive()); }
@Override public Integer getProjectId() { return projectAssignment.getProject().getPK(); } }
@Override public String getFullName() { return getProject().getFullName(); }
/** * Compare on prj * @param o1 * @param o2 * @return */ private int compareOnProject(AssignmentAggregateReportElement o1, AssignmentAggregateReportElement o2) { return o1.getProjectAssignment().getProject().getFullName().compareToIgnoreCase( o2.getProjectAssignment().getProject().getFullName()); }
public String toString() { return new ToStringBuilder(this).append("assignmentId", getAssignmentId()) .append("active", isActive()) .append("project", getProject()) .append("user", getUser()) // .append("type", getAssignmentType()) .append("dateStart", getDateStart()) .append("dateEnd", getDateEnd()) .toString(); }
/** * Check if this default assignment is already assigned */ private boolean isAlreadyAssigned(ProjectAssignment projectAssignment, Collection<ProjectAssignment> assignments) { boolean alreadyAssigned = false; if (assignments == null) { return false; } int projectId = projectAssignment.getProject().getProjectId(); for (ProjectAssignment assignment : assignments) { if (assignment.getProject().getProjectId() == projectId) { LOGGER.debug("Default assignment is already assigned as assignmentId " + assignment.getAssignmentId()); alreadyAssigned = true; break; } } return alreadyAssigned; }
private boolean canNotifyPm(ProjectAssignment assignment) { return assignment.isNotifyPm() && assignment.getProject().getProjectManager() != null && assignment.getProject().getProjectManager().getEmail() != null; } }
private void splitActiveAndInactiveAssignments(User user, Set<ProjectAssignment> inactiveAssignments) { Date currentDate = new Date(); for (ProjectAssignment assignment : user.getProjectAssignments()) { DateRange assignmentRange = new DateRange(assignment.getDateStart(), assignment.getDateEnd()); if ((!DateUtil.isDateWithinRange(currentDate, assignmentRange)) || (assignment.getProject() == null || !assignment.getProject().isActive())) { inactiveAssignments.add(assignment); } } user.getProjectAssignments().removeAll(inactiveAssignments); user.setInactiveProjectAssignments(inactiveAssignments); }
protected List<ProjectAssignment> getAssignmentsWithoutBookings(DateRange reportRange, List<Integer> userIds, List<Integer> projectIds) { List<ProjectAssignment> assignmentsWithoutBookings = reportAggregatedDao.getAssignmentsWithoutBookings(reportRange); List<ProjectAssignment> filteredAssignmentsWithoutBookings = Lists.newArrayList(); for (ProjectAssignment assignmentsWithoutBooking : assignmentsWithoutBookings) { boolean passedUserFilter = isEmpty(userIds) || userIds.contains(assignmentsWithoutBooking.getUser().getUserId()); boolean passedProjectFilter = isEmpty(projectIds) || projectIds.contains(assignmentsWithoutBooking.getProject().getProjectId()); if (passedUserFilter && passedProjectFilter) { filteredAssignmentsWithoutBookings.add(assignmentsWithoutBooking); } } return filteredAssignmentsWithoutBookings; }
/** * Compare first on customer name, if the same, use the project name * @param o1 * @param o2 * @return */ private int compareCustomerStartDateProject(ProjectAssignment o1, ProjectAssignment o2) { int cmp; cmp = o1.getProject().getCustomer().getName().compareToIgnoreCase(o2.getProject().getCustomer().getName()); if (cmp == 0) { cmp = compareDateStart(o1, o2); if (cmp == 0) { cmp = compareNames(o1, o2); } } return cmp; } /**
/** * @see java.lang.Comparable#compareTo(Object) */ public int compareTo(ProjectAssignment object) { return new CompareToBuilder() //sort by column order as displayed in ProjectOverviewPanel .append(this.getProject().getCustomer().getName(), object.getProject().getCustomer().getName()) .append(this.getProject().getProjectCode(), object.getProject().getProjectCode()) .append(this.getProject().getName(), object.getProject().getName()) //here we should already have a sort. Anyway let's continue with some default comparison .append(this.getProject(), object.getProject()) .append(this.getDateEnd(), object.getDateEnd()) .append(this.getDateStart(), object.getDateStart()) .append(this.getUser(), object.getUser()) .append(this.getAssignmentId(), object.getAssignmentId()) .toComparison(); }
/** * Compare on project name or customer name */ public int compare(AssignmentAggregateReportElement o1, AssignmentAggregateReportElement o2) { int compare = 0; switch (sortType) { case SORT_ON_PROJECT: compare = compareOnProject(o1, o2); break; case SORT_ON_CUSTOMER: compare = o1.getProjectAssignment().getProject().getCustomer().getName() .compareToIgnoreCase(o2.getProjectAssignment().getProject().getCustomer().getName()); if (compare == 0) { compare = compareOnProject(o1, o2); } break; } return compare; }
@Test public void should_mail_pm_when_status_of_project_changes() throws OverBudgetException { when(timesheetDAO.getLatestTimesheetEntryForAssignment(assignment.getAssignmentId())).thenReturn(newEntries.get(0)); when(timesheetDAO.getTimesheetEntriesInRange(any(ProjectAssignment.class), any(DateRange.class))).thenReturn(existingEntries); ProjectAssignmentStatus beforeStatus = new ProjectAssignmentStatus(); beforeStatus.addStatus(Status.IN_ALLOTTED); beforeStatus.setValid(true); ProjectAssignmentStatus afterStatus = new ProjectAssignmentStatus(); afterStatus.addStatus(Status.IN_OVERRUN); afterStatus.setValid(true); afterStatus.setAggregate(new AssignmentAggregateReportElement()); when(statusService.getAssignmentStatus(assignment)).thenReturn(beforeStatus); when(statusService.getAssignmentStatus(assignment)).thenReturn(beforeStatus, afterStatus); persister.validateAndPersist(assignment, newEntries, new DateRange(), Lists.<Date>newArrayList()); verify(timesheetDAO).delete(any(TimesheetEntry.class)); verify(timesheetDAO).merge(any(TimesheetEntry.class)); verify(projectManagerNotifierService).mailPMFlexAllottedReached(any(AssignmentAggregateReportElement.class), any(Date.class), eq(assignment.getProject().getProjectManager())); }
private void notifyPm(ProjectAssignment assignment, ProjectAssignmentStatus status) { TimesheetEntry entry; entry = timesheetDAO.getLatestTimesheetEntryForAssignment(assignment.getAssignmentId()); // over alloted - fixed if (assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FIXED && status.getStatusses().contains(ProjectAssignmentStatus.Status.OVER_ALLOTTED)) { projectManagerNotifierService.mailPMFixedAllottedReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } // over overrun - flex else if (assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX && status.getStatusses().contains(ProjectAssignmentStatus.Status.OVER_OVERRUN)) { projectManagerNotifierService.mailPMFlexOverrunReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } // in overrun - flex else if (status.getStatusses().contains(ProjectAssignmentStatus.Status.IN_OVERRUN) && assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX) { projectManagerNotifierService.mailPMFlexAllottedReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } }
@Test public void shouldGetCumulatedHoursPerAssignmentForUser() { List<User> users = Arrays.asList(UserObjectMother.createUser(), new User(2)); List<AssignmentAggregateReportElement> results = reportAggregatedDAO.getCumulatedHoursPerAssignmentForUsers(users); // test if collection is properly initialized AssignmentAggregateReportElement rep = results.get(0); assertEquals("eHour", rep.getProjectAssignment().getProject().getName()); assertEquals(38.7f, rep.getHours().floatValue(), 0.1); assertEquals(5, results.size()); }
@Test public void shouldFindById() { ProjectAssignment pa = projectAssignmentDAO.findById(1); assertEquals("eHour", pa.getProject().getName()); }
assignment.getProject().setProjectId(1);
private static ProjectAssignment createProjectAssignment(ProjectAssignment templateAssignment) { ProjectAssignment assignment = new ProjectAssignment(); assignment.setActive(templateAssignment.isActive()); assignment.setAllottedHours(templateAssignment.getAllottedHours()); assignment.setAllowedOverrun(templateAssignment.getAllowedOverrun()); assignment.setAssignmentType(templateAssignment.getAssignmentType()); assignment.setDateEnd(templateAssignment.getDateEnd()); assignment.setDateStart(templateAssignment.getDateStart()); assignment.setHourlyRate(templateAssignment.getHourlyRate()); assignment.setNotifyPm(templateAssignment.isNotifyPm()); assignment.setProject(templateAssignment.getProject()); assignment.setRole(templateAssignment.getRole()); assignment.setUser(templateAssignment.getUser()); return assignment; }
public static FlatReportElement buildFlatReportElement(ProjectAssignment assignment) { FlatReportElement element = new FlatReportElement(); element.setAssignmentId(assignment.getAssignmentId()); element.setRole(assignment.getRole()); Project project = assignment.getProject(); Customer customer = project.getCustomer(); element.setCustomerCode(customer.getCode()); element.setCustomerId(customer.getCustomerId()); element.setCustomerName(customer.getName()); element.setEmptyEntry(true); element.setProjectCode(project.getProjectCode()); element.setProjectId(project.getProjectId()); element.setProjectName(project.getName()); element.setRate(assignment.getHourlyRate()); User user = assignment.getUser(); element.setUserId(user.getUserId()); element.setUserFirstName(user.getFirstName()); element.setUserLastName(user.getLastName()); element.setDisplayOrder(1); return element; } }