@Override public boolean equals(final Object other) { if (!(other instanceof TimesheetEntry)) return false; TimesheetEntry castOther = (TimesheetEntry) other; return new EqualsBuilder().append(getEntryId(), castOther.getEntryId()).isEquals(); }
private Map<ProjectAssignment, List<TimesheetEntry>> getTimesheetAsRows(Collection<TimesheetEntry> entries) { Map<ProjectAssignment, List<TimesheetEntry>> timesheetRows = new HashMap<>(); for (TimesheetEntry timesheetEntry : entries) { ProjectAssignment assignment = timesheetEntry.getEntryId().getProjectAssignment(); List<TimesheetEntry> assignmentEntries = (timesheetRows.containsKey(assignment)) ? timesheetRows.get(assignment) : new ArrayList<TimesheetEntry>(); assignmentEntries.add(timesheetEntry); timesheetRows.put(assignment, assignmentEntries); } return timesheetRows; }
private Map<ProjectAssignment, Map<String, TimesheetEntry>> createAssignmentMap() { Map<ProjectAssignment, Map<String, TimesheetEntry>> assignmentMap = new HashMap<>(); for (TimesheetEntry entry : getTimesheetEntries()) { ProjectAssignment assignment = entry.getEntryId().getProjectAssignment(); Map<String, TimesheetEntry> entryDateMap = assignmentMap.containsKey(assignment) ? assignmentMap.get(assignment) : new HashMap<String, TimesheetEntry>(); entryDateMap.put(formatter.format(entry.getEntryId().getEntryDate()), entry); assignmentMap.put(assignment, entryDateMap); } return assignmentMap; }
public int compareTo(TimesheetEntry object) { return new CompareToBuilder() .append(this.getEntryId(), object.getEntryId()).toComparison(); }
public String toString() { return new ToStringBuilder(this) .append("hours", this.getHours()) .append("entryId", this.getEntryId()) .append("comment", this.getComment()) .append("updateDate", this.getUpdateDate()) .toString(); }
/** * Put the timesheet entries in a map where the day is the key and * the value is a list of timesheet entries filled out for that date * * @param timesheetEntries * @return */ private Map<Integer, List<TimesheetEntry>> entriesToCalendarMap(List<TimesheetEntry> timesheetEntries) { Map<Integer, List<TimesheetEntry>> calendarMap; Calendar cal; Integer dayKey; List<TimesheetEntry> dayEntries; calendarMap = new HashMap<>(); for (TimesheetEntry entry : timesheetEntries) { if (entry == null) { continue; } cal = new GregorianCalendar(); cal.setTime(entry.getEntryId().getEntryDate()); dayKey = cal.get(Calendar.DAY_OF_MONTH); if (calendarMap.containsKey(dayKey)) { dayEntries = calendarMap.get(dayKey); } else { dayEntries = new ArrayList<>(); } dayEntries.add(entry); calendarMap.put(dayKey, dayEntries); } return calendarMap; }
private void persistEntries(ProjectAssignment assignment, List<TimesheetEntry> entries, DateRange weekRange, boolean onlyLessThanExisting, List<Date> lockedDates) throws OverBudgetException { List<TimesheetEntry> previousEntries = Lists.newArrayList(timesheetDAO.getTimesheetEntriesInRange(assignment, weekRange)); for (TimesheetEntry entry : entries) { if (!entry.getEntryId().getProjectAssignment().equals(assignment)) { LOGGER.error("Invalid entry in assignment list, skipping: " + entry); previousEntries.remove(entry); continue; } if (lockedDates.contains(entry.getEntryId().getEntryDate())) { LOGGER.error("Date is locked but still trying to update " + entry); previousEntries.remove(entry); continue; } if (!entry.isEmptyEntry()) { persistEntry(onlyLessThanExisting, entry, getEntry(previousEntries, entry)); previousEntries.remove(entry); } } removeOldEntries(previousEntries); }
@Test public void when_finding_should_set_proper_id_for_embeddable_id() { TimesheetEntryId timesheetEntryId = new TimesheetEntryId(new Date(), ProjectAssignmentObjectMother.createProjectAssignment(1)); TimesheetEntry entry = subject.find(timesheetEntryId, TimesheetEntry.class); assertEquals(timesheetEntryId, entry.getEntryId()); }
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 shouldParseTwoTimesheetEntries() throws XMLStreamException, InstantiationException, IllegalAccessException, ImportException { EntityParser parser = createParser("<TIMESHEET_ENTRIES CLASS=\"net.rrm.ehour.domain.TimesheetEntry\">\n<TIMESHEET_ENTRY>\n<ASSIGNMENT_ID>1</ASSIGNMENT_ID>\n<ENTRY_DATE>2007-03-26</ENTRY_DATE>\n<HOURS>8.0</HOURS>\n <COMMENT>jaja</COMMENT>\n </TIMESHEET_ENTRY>\n <TIMESHEET_ENTRY>\n <ASSIGNMENT_ID>2</ASSIGNMENT_ID>\n <ENTRY_DATE>2007-03-26</ENTRY_DATE>\n <HOURS>0.0</HOURS>\n </TIMESHEET_ENTRY>\n </TIMESHEET_ENTRIES>\n", ProjectAssignmentObjectMother.createProjectAssignment(1), 1); keyCache.putKey(ProjectAssignment.class, 1, 1); keyCache.putKey(ProjectAssignment.class, 2, 2); List<TimesheetEntry> result = parser.parse(TimesheetEntry.class, new JoinTables(), status); assertEquals(2, result.size()); assertNotNull(result.get(0).getEntryId().getEntryDate()); assertNotNull(result.get(0).getEntryId().getProjectAssignment()); assertEquals(8.0, result.get(0).getHours(), 0); assertEquals("jaja", result.get(0).getComment()); assertEquals(2, daoValidator.getTotalPersistCount()); }