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(); } }
@Override public UsersAndProjects criteriaToUsersAndProjects(UserSelectedCriteria userSelectedCriteria) { boolean noUserRestrictionProvided = userSelectedCriteria.isEmptyDepartments() && userSelectedCriteria.isEmptyUsers(); boolean noProjectRestrictionProvided = userSelectedCriteria.isEmptyCustomers() && userSelectedCriteria.isEmptyProjects(); List<Project> projects; List<User> users; if (!noProjectRestrictionProvided || !noUserRestrictionProvided) { if (noProjectRestrictionProvided) { users = getUsersForSelectedDepartments(userSelectedCriteria); projects = Lists.newArrayList(); } else if (noUserRestrictionProvided) { projects = getProjects(userSelectedCriteria); users = Lists.newArrayList(); } else { users = getUsersForSelectedDepartments(userSelectedCriteria); projects = getProjects(userSelectedCriteria); } } else { users = Lists.newArrayList(); projects = Lists.newArrayList(); } if (userSelectedCriteria.isOnlyBillableProjects() && projects.isEmpty()) { projects = getBillableProjects(userSelectedCriteria); } return new UsersAndProjects(users, projects); }