package com.novoda.demo.tddpersistence;
import android.support.annotation.NonNull;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class TaskRepository {
private final TaskMapper taskMapper;
private final TaskStorage taskDBStorage;
public TaskRepository(TaskMapper taskMapper, TaskStorage taskDBStorage) {
this.taskMapper = taskMapper;
this.taskDBStorage = taskDBStorage;
}
public void persistTask(Task task) {
TaskDBModel taskDBModel = taskMapper.fromDomain(task);
taskDBStorage.insert(taskDBModel);
}
public List<Task> tasksExpiredBy(Date date) {
long expirationDate = date.getTime();
return dbTasksToDomain(taskDBStorage.findAllExpiredBy(expirationDate));
}
public Task taskWithName(String taskName) {
TaskDBModel taskDBModel = taskDBStorage.findByName(taskName);
return taskMapper.toDomain(taskDBModel);
}
public List<Task> allTasks() {
return dbTasksToDomain(taskDBStorage.findAll());
}
@NonNull
private List<Task> dbTasksToDomain(List<TaskDBModel> allExpiredBy) {
List<Task> tasks = new ArrayList<>();
for (TaskDBModel taskDBModel : allExpiredBy) {
tasks.add(taskMapper.toDomain(taskDBModel));
}
return tasks;
}
}