Skip to content

Commit

Permalink
ClearController done, woohoo!
Browse files Browse the repository at this point in the history
  • Loading branch information
louietyj committed Nov 5, 2016
1 parent 7dbb0da commit 72e7f3d
Showing 1 changed file with 41 additions and 1 deletion.
42 changes: 41 additions & 1 deletion src/main/java/seedu/todo/controllers/ClearController.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package seedu.todo.controllers;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import seedu.todo.commons.exceptions.InvalidNaturalDateException;
import seedu.todo.commons.exceptions.ParseException;
import seedu.todo.controllers.concerns.CalendarItemFilter;
import seedu.todo.controllers.concerns.Renderer;
import seedu.todo.controllers.concerns.Tokenizer;
import seedu.todo.models.Event;
import seedu.todo.models.Task;
import seedu.todo.models.TodoListDB;

/**
Expand All @@ -18,7 +25,7 @@ public class ClearController implements Controller {
private static final String DESCRIPTION = "Clear all tasks/events or by specify date.";
private static final String COMMAND_SYNTAX = "clear [task/event] [on date]";
private static final String COMMAND_WORD = "clear";
private static final String MESSAGE_CLEAR_NO_ITEM_FOUND = "No item found!";
private static final String MESSAGE_CLEAR_NO_ITEMS_FOUND = "No items found!";
private static final String MESSAGE_CLEAR_SUCCESS = "A total of %s deleted!\n" + "To undo, type \"undo\".";

private static CommandDefinition commandDefinition =
Expand All @@ -35,6 +42,39 @@ public float inputConfidence(String input) {

@Override
public void process(String input) throws ParseException {
// Tokenize input
Map<String, String[]> parsedResult =
Tokenizer.tokenize(CalendarItemFilter.getFilterTokenDefinitions(), input);

// Decide if task/event/both
boolean[] isTaskEvent = CalendarItemFilter.parseIsTaskEvent(parsedResult);
boolean filterTask = isTaskEvent[0];
boolean filterEvent = isTaskEvent[1];

List<Task> clearTasks = new ArrayList<Task>();
List<Event> clearEvents = new ArrayList<Event>();
try {
if (filterTask) {
clearTasks = CalendarItemFilter.filterTasks(parsedResult);
}
if (filterEvent) {
clearEvents = CalendarItemFilter.filterEvents(parsedResult);
}
} catch (InvalidNaturalDateException e) {
renderDisambiguation(parsedResult);
return;
}

// Clear them all!
TodoListDB db = TodoListDB.getInstance();
db.destroyTasks(clearTasks);
db.destroyEvents(clearEvents);
db.save();

Renderer.renderIndex(db, "Done!");
}

private void renderDisambiguation(Map<String, String[]> parsedResult) {
return;
}
}

0 comments on commit 72e7f3d

Please sign in to comment.