public ReportCriteria(AvailableCriteria availableCriteria) { this(availableCriteria, new UserSelectedCriteria()); }
/** * Get project id's based on selected customers */ private List<Project> getProjects(UserSelectedCriteria userSelectedCriteria) { // No projects selected by the user, use any given customer limitation if (userSelectedCriteria.isEmptyProjects()) { if (!userSelectedCriteria.isEmptyCustomers()) { return projectDao.findProjectForCustomers(userSelectedCriteria.getCustomers(), userSelectedCriteria.isOnlyActiveProjects()); } else { return Lists.newArrayList(); } } else { return userSelectedCriteria.getProjects(); } }
private List<User> getUsersForSelectedDepartments(UserSelectedCriteria userSelectedCriteria) { if (userSelectedCriteria.isEmptyUsers()) { if (!userSelectedCriteria.isEmptyDepartments()) { Collection<UserDepartment> departments = userSelectedCriteria.getDepartments(); return findUsersInDepartments(userSelectedCriteria, departments); } else { return Lists.newArrayList(); } } else { return userSelectedCriteria.getUsers(); } }
public void setReportTypeToIndividualUser(User user) { setSelectedReportType(ReportType.INDIVIDUAL_USER); setUser(user); }
public void setReportTypeToPM(User projectManager) { users.clear(); setSelectedReportType(ReportType.PM); setPm(projectManager); }
private void preserveSelectedProjects(UserSelectedCriteria userSelectedCriteria, List<Project> updatedAvailableProjects) { List<Project> updatedSelectedProjects = Lists.newArrayList(); if (userSelectedCriteria.getProjects() != null) { for (Project updatedAvailableProject : updatedAvailableProjects) { if (userSelectedCriteria.getProjects().contains(updatedAvailableProject)) { updatedSelectedProjects.add(updatedAvailableProject); } } } userSelectedCriteria.setProjects(updatedSelectedProjects); }
@Test public void should_sync_criteria_for_global_for_all_customers() { UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setSelectedReportType(UserSelectedCriteria.ReportType.REPORT); userSelectedCriteria.setUsers(Arrays.asList(new User(1))); Tuple2<List<Customer>, List<Project>> apply = new Tuple2<List<Customer>, List<Project>>(Lists.<Customer>newArrayList(), Lists.<Project>newArrayList()); when(customerAndProjectCriteriaFilter.getAvailableCustomers(userSelectedCriteria)).thenReturn(apply); ReportCriteria reportCriteria = new ReportCriteria(userSelectedCriteria); reportCriteriaService.syncUserReportCriteria(reportCriteria, ReportCriteriaUpdateType.UPDATE_CUSTOMERS_AND_PROJECTS); verify(customerAndProjectCriteriaFilter).getAvailableCustomers(userSelectedCriteria); }
@Test public void should_find_projects_when_project_is_provided() { Project project = ProjectObjectMother.createProject(1); UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setProjects(Lists.newArrayList(project)); UsersAndProjects usersAndProjects = reportCriteriaService.criteriaToUsersAndProjects(userSelectedCriteria); assertThat(userSelectedCriteria.getProjects(), contains(project)); assertTrue("Users should be empty", usersAndProjects.getUsers().isEmpty()); }
@Test public void should_create_pm_report() { UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setReportTypeToPM(projectManager); userSelectedCriteria.setReportRange(dateRange); userSelectedCriteria.setOnlyActiveUsers(true);
@Test public void should_create_report_for_specific_project() { DateRange dateRange = new DateRange(); UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setReportRange(dateRange); ReportCriteria reportCriteria = new ReportCriteria(userSelectedCriteria); List<Project> projects = filterOnSingleProject(userSelectedCriteria); List<AssignmentAggregateReportElement> pags = createAssignmentAggregateReportElements(); when(reportAggregatedDao.getCumulatedHoursPerAssignmentForProjects(eq(projects), any(DateRange.class))).thenReturn(pags); ReportData data = aggregateReportService.getAggregateReportData(reportCriteria); assertEquals(3, data.getReportElements().size()); }
@Test public void should_return_single_user_when_its_provided() { User user = UserObjectMother.createUser(); UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setUsers(Lists.newArrayList(user)); UsersAndProjects usersAndProjects = reportCriteriaService.criteriaToUsersAndProjects(userSelectedCriteria); assertThat(userSelectedCriteria.getUsers(), contains(user)); assertTrue("Projects should be empty", usersAndProjects.getProjects().isEmpty()); }
/** * Get report range, use the available criteria if the user didn't supply any (yet) */ public DateRange getReportRange() { DateRange reportRange = userSelectedCriteria.getReportRange(); if (reportRange.getDateStart() == null || userSelectedCriteria.isInfiniteStartDate()) { if (!isEmptyAvailableReportRange() && availableCriteria.getReportRange().getDateStart() != null) { reportRange.setDateStart(availableCriteria.getReportRange().getDateStart()); } } if (reportRange.getDateEnd() == null || userSelectedCriteria.isInfiniteEndDate()) { if (!isEmptyAvailableReportRange() && availableCriteria.getReportRange().getDateEnd() != null) { reportRange.setDateEnd(availableCriteria.getReportRange().getDateEnd()); } } // if still nothing is specified, default to the current month if (reportRange.isEmpty()) { reportRange = DateUtil.calendarToMonthRange(new GregorianCalendar()); } userSelectedCriteria.setReportRange(reportRange); return reportRange; }
@Test public void should_create_report_for_single_user() { DateRange dateRange = new DateRange(); UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setReportRange(dateRange); List<User> users = filterOnSingleUser(userSelectedCriteria); userSelectedCriteria.setUsers(users); ReportCriteria criteria = new ReportCriteria(userSelectedCriteria); List<AssignmentAggregateReportElement> pags = createAssignmentAggregateReportElements(); when(reportAggregatedDao.getCumulatedHoursPerAssignmentForUsers(eq(users), any(DateRange.class))).thenReturn(pags); ReportData data = aggregateReportService.getAggregateReportData(criteria); assertEquals(3, data.getReportElements().size()); }
@Test public void should_find_projects_when_customer_is_provided() { Customer customer = CustomerObjectMother.createCustomer(); UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); List<Customer> customers = Lists.newArrayList(customer); userSelectedCriteria.setCustomers(customers); Project project = ProjectObjectMother.createProject(1); when(projectDao.findProjectForCustomers(customers, true)).thenReturn(Lists.newArrayList(project)); UsersAndProjects usersAndProjects = reportCriteriaService.criteriaToUsersAndProjects(userSelectedCriteria); assertThat(usersAndProjects.getProjects(), contains(project)); assertTrue("Users should be empty", usersAndProjects.getUsers().isEmpty()); }
private void preserveSelectedCustomers(UserSelectedCriteria userSelectedCriteria, List<Customer> updatedAvailableCustomers) { List<Customer> updatedSelectedCustomers = Lists.newArrayList(); if (userSelectedCriteria.getCustomers() != null) { for (Customer updatedAvailableCustomer : updatedAvailableCustomers) { if (userSelectedCriteria.getCustomers().contains(updatedAvailableCustomer)) { updatedSelectedCustomers.add(updatedAvailableCustomer); } } } userSelectedCriteria.setCustomers(updatedSelectedCustomers); }
@Before public void setUp() throws Exception { detailedReportDao = mock(DetailedReportDao.class); projectDao = mock(ProjectDao.class); reportCriteriaService = mock(ReportCriteriaService.class); userSelectedCriteria = new UserSelectedCriteria(); userSelectedCriteria.setShowZeroBookings(true); reportCriteria = new ReportCriteria(userSelectedCriteria); timesheetLockService = mock(TimesheetLockService.class); reportAggregatedDao = mock(ReportAggregatedDao.class); detailedReportService = new DetailedReportServiceImpl(reportCriteriaService, projectDao, timesheetLockService, detailedReportDao, reportAggregatedDao); }
@Test public void should_find_only_billable_projects() { UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); Project billableProject = ProjectObjectMother.createProject(1); billableProject.setBillable(true); Project notBillableProject = ProjectObjectMother.createProject(2); notBillableProject.setBillable(false); when(projectDao.findAllActive()).thenReturn(Lists.newArrayList(billableProject, notBillableProject)); userSelectedCriteria.setOnlyBillableProjects(true); UsersAndProjects usersAndProjects = reportCriteriaService.criteriaToUsersAndProjects(userSelectedCriteria); assertEquals(1, usersAndProjects.getProjects().size()); assertThat(usersAndProjects.getProjects(), contains(billableProject)); assertTrue("Users should be empty", usersAndProjects.getUsers().isEmpty()); } }
@Test public void should_find_users_when_a_department_is_provided() { UserSelectedCriteria userSelectedCriteria = new UserSelectedCriteria(); UserDepartment userDepartment = UserDepartmentObjectMother.createUserDepartment(1); userSelectedCriteria.setDepartments(Lists.newArrayList(userDepartment)); User matchingUser = UserObjectMother.createUser(); matchingUser.setUserDepartment(userDepartment); User nonMatchingUser = UserObjectMother.createUser(); UserDepartment wrongDepartment = UserDepartmentObjectMother.createUserDepartment(2); wrongDepartment.setCode("cc"); nonMatchingUser.setUserDepartment(wrongDepartment); when(userDao.findUsers(true)).thenReturn(Lists.newArrayList(matchingUser, nonMatchingUser)); UsersAndProjects usersAndProjects = reportCriteriaService.criteriaToUsersAndProjects(userSelectedCriteria); assertEquals(1, usersAndProjects.getUsers().size()); assertThat(usersAndProjects.getUsers(), contains(matchingUser)); assertTrue("Projects should be empty", usersAndProjects.getProjects().isEmpty()); }
public void setReportTypeToGlobal() { users.clear(); setSelectedReportType(ReportType.REPORT); }
public void updateCustomerSort() { availableCriteria.setCustomerSortOrderAndSort(userSelectedCriteria.getCustomerSort()); }