package com.in28minutes.example.spring.business.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.in28minutes.example.spring.business.api.TodoBusinessService; import com.in28minutes.example.spring.data.api.TodoDataService; import com.in28minutes.example.spring.model.Todo; @Component public class TodoBusinessServiceImpl implements TodoBusinessService { private static final int ONE_DAY_IN_MILLISECONDS = 24 * 60 * 1000; @Autowired private TodoDataService todoDs; @Override public List<Todo> retrieveTodosForNextWeek(String user) { List<Todo> todos = todoDs.retrieveTodos(user); return filterTodosInNextWeek(todos); } // NOTE : We get everything from database and filter // instead of filtering in the database. Not the most efficient // implementation. private List<Todo> filterTodosInNextWeek(List<Todo> todos) { Date today = new Date(); long todayMs = today.getTime(); // Todo : This goes by time and not by date Date oneWeekLater = new Date(todayMs + 7 * ONE_DAY_IN_MILLISECONDS); List<Todo> filteredTodos = new ArrayList<Todo>(); for (Todo todo : todos) { if (todo.getDate().before(oneWeekLater)) { filteredTodos.add(todo); } } return filteredTodos; } }