package tudu.domain.model.comparator; import tudu.domain.model.Todo; import java.util.Comparator; /** * Comparator used to sort todos by their due date, in ascending order. * * @author Julien Dubois */ public class TodoByDueDateAscComparator implements Comparator<Todo> { public int compare(Todo first, Todo second) { if (first.isCompleted() && !second.isCompleted()) { return 1; } else if (!first.isCompleted() && second.isCompleted()) { return -1; } int order = 0; if (second.getDueDate() == null && first.getDueDate() != null) { return 1; } else if (second.getDueDate() != null && first.getDueDate() == null) { return -1; } else if (second.getDueDate() != null && first.getDueDate() != null) { long compare = second.getDueDate().getTime() - first.getDueDate().getTime(); if (compare > 0) { order = 1; } else if (compare < 0) { order = -1; } } if (order == 0) { order = second.compareTo(first); } return order; } }