diff --git a/src/main/java/seedu/task/logic/HistoryManager.java b/src/main/java/seedu/task/logic/HistoryManager.java index 1d6a94748319..b0c6e27f7069 100644 --- a/src/main/java/seedu/task/logic/HistoryManager.java +++ b/src/main/java/seedu/task/logic/HistoryManager.java @@ -12,11 +12,15 @@ public class HistoryManager { private ArrayList undoList; + + private ArrayList redoList; private ArrayList previousCommandList; public HistoryManager() { undoList = new ArrayList(); + redoList = new ArrayList(); + previousCommandList = new ArrayList(); } @@ -24,6 +28,9 @@ public void setUndoList(ArrayList undoList) { this.undoList = undoList; } + public void setRedoList(ArrayList redoList) { + this.redoList = redoList; + } public void setPreviousCommand(ArrayList previousCommand) { this.previousCommandList = previousCommand; @@ -33,6 +40,9 @@ public ArrayList getUndoList() { return undoList; } + public ArrayList getRedoList() { + return redoList; + } public ArrayList getPreviousCommandList() { return previousCommandList; diff --git a/src/main/java/seedu/task/logic/Logic.java b/src/main/java/seedu/task/logic/Logic.java index e050a5dcdcec..96b62548b567 100644 --- a/src/main/java/seedu/task/logic/Logic.java +++ b/src/main/java/seedu/task/logic/Logic.java @@ -23,6 +23,9 @@ public interface Logic { /** Returns the undo list of commands */ ArrayList getUndoList(); + + /** Returns the redo list of commands */ + ArrayList getRedoList(); /** Returns the list of previous commands */ ArrayList getPreviousCommandList(); diff --git a/src/main/java/seedu/task/logic/LogicManager.java b/src/main/java/seedu/task/logic/LogicManager.java index 58c08f6048fd..725020b7955c 100644 --- a/src/main/java/seedu/task/logic/LogicManager.java +++ b/src/main/java/seedu/task/logic/LogicManager.java @@ -66,6 +66,11 @@ public ObservableList getFilteredTaskList() { public ArrayList getUndoList() { return historyManager.getUndoList(); } + + @Override + public ArrayList getRedoList() { + return historyManager.getRedoList(); + } @Override public ArrayList getPreviousCommandList() { diff --git a/src/main/java/seedu/task/logic/commands/AddCommand.java b/src/main/java/seedu/task/logic/commands/AddCommand.java index b7e784b71cc5..7d5be110252e 100644 --- a/src/main/java/seedu/task/logic/commands/AddCommand.java +++ b/src/main/java/seedu/task/logic/commands/AddCommand.java @@ -37,7 +37,7 @@ public AddCommand(String name, String startTime, String endTime, String deadline for (String tagName : tags) { tagSet.add(new Tag(tagName)); } - this.toAdd = new Task(new Name(name), new StartTime(startTime), new EndTime(endTime), new Deadline(deadline), new UniqueTagList(tagSet), new Status(false, false, true)); + this.toAdd = new Task(new Name(name), new StartTime(startTime), new EndTime(endTime), new Deadline(deadline), new UniqueTagList(tagSet), new Status(false, false, false)); } @Override diff --git a/src/main/java/seedu/task/logic/commands/EditCommand.java b/src/main/java/seedu/task/logic/commands/EditCommand.java index 6e7bec4a077a..a967d3d85c04 100644 --- a/src/main/java/seedu/task/logic/commands/EditCommand.java +++ b/src/main/java/seedu/task/logic/commands/EditCommand.java @@ -25,47 +25,115 @@ */ public class EditCommand extends Command { public static final String COMMAND_WORD = "edit"; - + public static final String MESSAGE_USAGE = COMMAND_WORD - + ": Edits the task identified by the index number used in the last task listing.\n" - + "Parameters: INDEX TASKNAME at START_TIME to END_TIME [by DEADLINE] [#TAG...]\n" - + "Example: " + COMMAND_WORD - + " 4 night class at 08.00pm to 10.00pm by 12.00am"; - + + ": Edits the task identified by the index number used in the last task listing.\n" + + "Parameters: INDEX TASKNAME at START_TIME to END_TIME [by DEADLINE] [#TAG...]\n" + + "Example: " + COMMAND_WORD + + " 4 tag, school"; + public static final String MESSAGE_EDIT_TASK_SUCCESS = "Edit Task: %1$s"; - + public static final String MESSAGE_DUPLICATE_TASK = "This task already exists in the task manager"; - + public static final String EDIT_NAME = "name"; + public static final String EDIT_START_TIME = "start"; + public static final String EDIT_END_TIME = "end"; + public static final String EDIT_DEADLINE = "deadline"; + public static final String EDIT_TAG = "tag"; public final int targetIndex; - private final Task toEdit; - - - public EditCommand(int targetIndex, String name, String startTime, String endTime, String deadline, Set tags) throws IllegalValueException { - final Set tagSet = new HashSet<>(); - for (String tagName : tags) { - tagSet.add(new Tag(tagName)); - } - this.toEdit = new Task(new Name(name), new StartTime(startTime), new EndTime(endTime), new Deadline(deadline), new UniqueTagList(tagSet), new Status()); + //private final Task toEdit; + private final String toEdit; + private final String toEditItem; + private final Set toEditTags; + + // public EditCommand(int targetIndex, String name, String startTime, String endTime, String deadline, Set tags) throws IllegalValueException { + // final Set tagSet = new HashSet<>(); + // for (String tagName : tags) { + // tagSet.add(new Tag(tagName)); + // } + // this.toEdit = new Task(new Name(name), new StartTime(startTime), new EndTime(endTime), new Deadline(deadline), new UniqueTagList(tagSet), new Status()); + // this.targetIndex = targetIndex; + // } + + //@@author A0152958R + public EditCommand(int targetIndex, String item, String editResult, Set tags) throws IllegalValueException { this.targetIndex = targetIndex; + this.toEdit = editResult; + this.toEditItem = item; + this.toEditTags = tags; + } - - - + + + + //@@author A0152958R @Override - public CommandResult execute(boolean isUndo) { + public CommandResult execute(boolean isUndo){ assert model != null; UnmodifiableObservableList lastShownList = model.getFilteredTaskList(); - + if (lastShownList.size() < targetIndex) { indicateAttemptToExecuteIncorrectCommand(); return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); } - + ReadOnlyTask currentTask = lastShownList.get(targetIndex - 1); ReadOnlyTask editedTask = null; - + Task toAdd = null; + final Set tagSet = new HashSet<>(); + + switch(this.toEditItem){ + case EDIT_NAME: + try{ + toAdd = new Task(new Name(this.toEdit), currentTask.getStartTime(), currentTask.getEndTime(), currentTask.getDeadline(), currentTask.getTags(), currentTask.getStatus()); + }catch(IllegalValueException e){ + return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); + } + break; + case EDIT_START_TIME: + try{ + toAdd = new Task(currentTask.getName(), new StartTime(this.toEdit), currentTask.getEndTime(), currentTask.getDeadline(), currentTask.getTags(), currentTask.getStatus()); + }catch(IllegalValueException e){ + return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); + } + break; + case EDIT_END_TIME: + try{ + toAdd = new Task(currentTask.getName(), currentTask.getStartTime(), new EndTime(this.toEdit), currentTask.getDeadline(), currentTask.getTags(), currentTask.getStatus()); + }catch(IllegalValueException e){ + return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); + } + break; + case EDIT_DEADLINE: + try{ + toAdd = new Task(currentTask.getName(), currentTask.getStartTime(), currentTask.getEndTime(), new Deadline(this.toEdit), currentTask.getTags(), currentTask.getStatus()); + }catch(IllegalValueException e){ + return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); + } + break; + case EDIT_TAG: + try{ + for (String tagName : this.toEditTags) { + tagSet.add(new Tag(tagName)); + } + toAdd = new Task(currentTask.getName(), currentTask.getStartTime(), currentTask.getEndTime(), currentTask.getDeadline(), new UniqueTagList(tagSet), currentTask.getStatus()); + }catch(IllegalValueException e){ + return new CommandResult("Invalid tag format"); + } + break; + default: + try{ + for (String tagName : this.toEditTags) { + tagSet.add(new Tag(tagName)); + } + toAdd = new Task(currentTask.getName(), currentTask.getStartTime(), currentTask.getEndTime(), currentTask.getDeadline(), new UniqueTagList(tagSet), currentTask.getStatus()); + }catch(IllegalValueException e){ + return new CommandResult(MESSAGE_DUPLICATE_TASK); + } + } + try { - model.addTask(targetIndex - 1, toEdit); + model.addTask(targetIndex - 1, toAdd); editedTask = lastShownList.get(targetIndex - 1); } catch (UniqueTaskList.DuplicateTaskException e) { try { @@ -74,27 +142,27 @@ public CommandResult execute(boolean isUndo) { assert false : "The target task cannot be missing"; } return new CommandResult(MESSAGE_DUPLICATE_TASK); - } - + } + try { model.deleteTask(currentTask); } catch (TaskNotFoundException e) { assert false : "The target task cannot be missing"; } - + if (isUndo == false) { - history.getUndoList().add(new RollBackCommand(COMMAND_WORD, toEdit, (Task) currentTask)); + history.getUndoList().add(new RollBackCommand(COMMAND_WORD, toAdd, (Task) currentTask)); } return new CommandResult(String.format(MESSAGE_EDIT_TASK_SUCCESS, toEdit)); } - - - + + + @Override public CommandResult execute(int index) { return null; - + } - - + + } \ No newline at end of file diff --git a/src/main/java/seedu/task/logic/commands/FavoriteCommand.java b/src/main/java/seedu/task/logic/commands/FavoriteCommand.java new file mode 100644 index 000000000000..059cddf1dfe9 --- /dev/null +++ b/src/main/java/seedu/task/logic/commands/FavoriteCommand.java @@ -0,0 +1,75 @@ +package seedu.task.logic.commands; + +import seedu.task.commons.core.Messages; +import seedu.task.commons.core.UnmodifiableObservableList; +import seedu.task.logic.RollBackCommand; +import seedu.task.model.task.ReadOnlyTask; +import seedu.task.model.task.Task; +import seedu.task.model.task.UniqueTaskList; +import seedu.task.model.task.UniqueTaskList.TaskNotFoundException; + +/** + * Favorite a task from the task manager. + * @@author A0147335E + */ +public class FavoriteCommand extends Command { + + public static final String COMMAND_WORD = "fav"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Favorite the task identified by the index number used in the last task listing.\n" + + "Parameters: INDEX TASKNAME\n" + + "Example: " + COMMAND_WORD + + " 4"; + + public static final String MESSAGE_FAVORITE_TASK_SUCCESS = "Favorite Task: %1$s"; + + public static final String MESSAGE_ALREADY_FAVORITED = "Task has already been favorited!"; + + public final int targetIndex; + + public FavoriteCommand(int targetIndex) { + this.targetIndex = targetIndex; + } + + @Override + public CommandResult execute(boolean isUndo) { + assert model != null; + UnmodifiableObservableList lastShownList = model.getFilteredTaskList(); + + if (lastShownList.size() < targetIndex) { + indicateAttemptToExecuteIncorrectCommand(); + return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); + } + + ReadOnlyTask currentTask = lastShownList.get(targetIndex - 1); + boolean oldStatus = currentTask.getStatus().getFavoriteStatus(); + + try { + model.deleteTask(currentTask); + } catch (TaskNotFoundException tnfe) { + assert false : "The target task cannot be missing"; + } + + Task newTask = new Task(currentTask); + newTask.getStatus().setFavoriteStatus(true); + + try { + model.addTask(targetIndex - 1, newTask); + } catch (UniqueTaskList.DuplicateTaskException e) {} + + if (oldStatus == newTask.getStatus().getFavoriteStatus()) { + return new CommandResult(MESSAGE_ALREADY_FAVORITED); + } + + if (isUndo == false) { + history.getUndoList().add(new RollBackCommand(COMMAND_WORD, newTask, null)); + } + return new CommandResult(String.format(MESSAGE_FAVORITE_TASK_SUCCESS, newTask.getName())); + } + + @Override + public CommandResult execute(int index) { + return null; + } +} \ No newline at end of file diff --git a/src/main/java/seedu/task/logic/commands/UndoCommand.java b/src/main/java/seedu/task/logic/commands/UndoCommand.java index 50d74c5f8f6e..0a7c92e84574 100644 --- a/src/main/java/seedu/task/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/task/logic/commands/UndoCommand.java @@ -3,8 +3,10 @@ import java.util.HashSet; import seedu.task.commons.core.UnmodifiableObservableList; import seedu.task.commons.exceptions.IllegalValueException; +import seedu.task.logic.RollBackCommand; import seedu.task.model.tag.Tag; import seedu.task.model.task.ReadOnlyTask; +import seedu.task.model.task.Task; /** * Undo previous commands that was input by the user. @@ -20,6 +22,12 @@ public class UndoCommand extends Command { public static final String MESSAGE_FAIL = "Cannot undo anymore!"; + public static final String UNDO_EDIT_NAME = "name"; + public static final String UNDO_EDIT_START_TIME = "start"; + public static final String UNDO_EDIT_END_TIME = "end"; + public static final String UNDO_EDIT_DEADLINE = "deadline"; + public static final String UNDO_EDIT_TAG = "tag"; + public final int numOfTimes; public final boolean isMultiUndo; @@ -49,8 +57,8 @@ public CommandResult execute(boolean isUndo) { for (int i = 0; i < numOfTimes; i++) { if (history.getUndoList().size() != 0) { - outputUndoList += MESSAGE_SUCCESS + history.getPreviousCommandList().get(history.getPreviousCommandList().size()-1) + "\n" ; - String[] getIndex = history.getPreviousCommandList().get(history.getPreviousCommandList().size()-1).split(" "); + outputUndoList += " " + MESSAGE_SUCCESS + history.getPreviousCommandList().get(history.getPreviousCommandList().size()-1) + "\n" ; + String[] getIndex = history.getPreviousCommandList().get(history.getPreviousCommandList().size()-1).split(" ",4); String previousCommand = getIndex[0]; String[] previousCommandDetails = getIndex; @@ -92,7 +100,7 @@ public CommandResult execute(boolean isUndo) { } } } - return new CommandResult(outputUndoList); + return new CommandResult(outputUndoList + "Redo: " + history.getRedoList().size() ); } private void prepareUndoDone(String[] previousCommandDetails) { @@ -159,33 +167,55 @@ private void checkCommandListSize() { private void prepareUndoEdit(String[] previousCommandDetails) { int index = Integer.parseInt(previousCommandDetails[1]); + String toEditItem = previousCommandDetails[2].replace(",", ""); + String toEdit = ""; + + + HashSet tagStringSet = null; + int size = history.getUndoList().size() - 1; + + switch (toEditItem) { + + case UNDO_EDIT_NAME: + toEdit = history.getUndoList().get(size).getOldTask().getName().toString(); + break; + case UNDO_EDIT_START_TIME: + toEdit = history.getUndoList().get(size).getOldTask().getStartTime().toString(); + break; + case UNDO_EDIT_END_TIME: + toEdit = history.getUndoList().get(size).getOldTask().getEndTime().toString(); + break; + case UNDO_EDIT_DEADLINE: + toEdit = history.getUndoList().get(size).getOldTask().getDeadline().toString(); + break; + case UNDO_EDIT_TAG: + HashSet tagSet = new HashSet<>(history.getUndoList().get(size).getNewTask().getTags().toSet()); + tagStringSet = new HashSet<>(tagSet.size()); + break; + } + + - String name = history.getUndoList().get(size).getOldTask().getName().toString(); - String startTime = history.getUndoList().get(size).getOldTask().getStartTime().toString(); - String endTime = history.getUndoList().get(size).getOldTask().getEndTime().toString(); - String deadline = history.getUndoList().get(size).getOldTask().getDeadline().toString(); - - HashSet tagSet = new HashSet<>(history.getUndoList().get(size).getNewTask().getTags().toSet()); - HashSet tagStringSet = new HashSet<>(tagSet.size()); - - try { - Command command = new EditCommand(index, name, startTime, endTime, deadline, tagStringSet); + try { + Command command = new EditCommand(index, toEditItem, toEdit, tagStringSet); command.setData(model); command.execute(true); } catch (IllegalValueException e) { } history.getUndoList().remove(size); - + } private void prepareUndoAdd() { - Command command = new DeleteCommand(1); + UnmodifiableObservableList lastShownList = model.getFilteredTaskList(); + Command command = new DeleteCommand(lastShownList.size() - 1); command.setData(model); command.execute(true); - + + history.getRedoList().add(history.getUndoList().get(history.getUndoList().size() - 1)); history.getUndoList().remove(history.getUndoList().size() - 1); } diff --git a/src/main/java/seedu/task/logic/commands/UnfavoriteCommand.java b/src/main/java/seedu/task/logic/commands/UnfavoriteCommand.java new file mode 100644 index 000000000000..82b66fb532c8 --- /dev/null +++ b/src/main/java/seedu/task/logic/commands/UnfavoriteCommand.java @@ -0,0 +1,72 @@ +package seedu.task.logic.commands; + +import seedu.task.commons.core.Messages; + +import seedu.task.commons.core.UnmodifiableObservableList; +import seedu.task.logic.RollBackCommand; +import seedu.task.model.task.ReadOnlyTask; +import seedu.task.model.task.Task; +import seedu.task.model.task.UniqueTaskList.DuplicateTaskException; +import seedu.task.model.task.UniqueTaskList.TaskNotFoundException; + +/** + * Unfavorite a task from the task manager. + * @@author A0147335E + */ +public class UnfavoriteCommand extends Command { + public static final String COMMAND_WORD = "unfav"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Unfavorite the task identified by the index number used in the last task listing.\n" + + "Parameters: INDEX TASKNAME\n" + + "Example: " + COMMAND_WORD + + " 4"; + + public static final String MESSAGE_UNFAVORITE_TASK_SUCCESS = "Unfavorite Task: %1$s"; + + public static final String MESSAGE_ALREADY_UNFAVORITED = "Task has already been unfavorited!"; + + public final int targetIndex; + + public UnfavoriteCommand(int targetIndex) + { + this.targetIndex = targetIndex; + } + + @Override + public CommandResult execute(boolean isUndo) { + UnmodifiableObservableList lastShownList = model.getFilteredTaskList(); + assert model != null; + if (lastShownList.size() < targetIndex) { + indicateAttemptToExecuteIncorrectCommand(); + return new CommandResult(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX); + } + + ReadOnlyTask currentTask = lastShownList.get(targetIndex - 1); + boolean oldStatus = currentTask.getStatus().getFavoriteStatus(); + + try { + model.deleteTask(currentTask); + } catch (TaskNotFoundException e) {} + + Task newTask = new Task(currentTask); + newTask.getStatus().setFavoriteStatus(false); + try { + model.addTask(targetIndex - 1, newTask); + } catch (DuplicateTaskException e) {} + + if (oldStatus == newTask.getStatus().getFavoriteStatus()) { + return new CommandResult(MESSAGE_ALREADY_UNFAVORITED); + } + if (isUndo == false) { + history.getUndoList().add(new RollBackCommand(COMMAND_WORD, newTask, null)); + } + return new CommandResult(String.format(MESSAGE_UNFAVORITE_TASK_SUCCESS, newTask.getName())); + } + + @Override + public CommandResult execute(int index) { + return null; + + } +} \ No newline at end of file diff --git a/src/main/java/seedu/task/logic/parser/CommandParser.java b/src/main/java/seedu/task/logic/parser/CommandParser.java index 53178f7d010f..4a0d47096a19 100644 --- a/src/main/java/seedu/task/logic/parser/CommandParser.java +++ b/src/main/java/seedu/task/logic/parser/CommandParser.java @@ -13,43 +13,51 @@ * Parses user input. */ public class CommandParser { - + /** * Used for initial separation of command word and args. * @@author A0147944U */ - private static final Pattern BASIC_COMMAND_FORMAT = Pattern.compile("(?\\S+)(?.*)"); - - private static final Pattern TASK_INDEX_ARGS_FORMAT = Pattern.compile("(?.+)"); + private static final String EMPTY_STRING = ""; + + private static final Pattern BASIC_COMMAND_FORMAT = Pattern.compile("(?\\S+)(?.*)"); + + private static final Pattern TASK_INDEX_ARGS_FORMAT = Pattern.compile("(?.+)"); private static final Pattern KEYWORDS_ARGS_FORMAT = Pattern.compile("(?\\S+(?:\\s+\\S+)*)"); // one or more keywords separated by whitespace - private static final Pattern NATURAL_ARGS_FORMAT = - Pattern.compile("(?[^,#]+)" + "(?(?: #[^/]+)*)"); - - private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_TIME = - Pattern.compile("(?[^,#]+)" + ", (at|on) (?[^@#]+)" + "(?(?: #[^/]+)*)"); - - private static final Pattern NATURAL_ARGS_FORMAT_WITH_DEADLINE = + private static final Pattern NATURAL_ARGS_FORMAT = + Pattern.compile("(?[^,#]+)" + "(?(?: #[^/]+)*)"); + + private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_TIME = + Pattern.compile("(?[^,#]+)" + ", (at|on) (?[^@#]+)" + "(?(?: #[^/]+)*)"); + + private static final Pattern NATURAL_ARGS_FORMAT_WITH_DEADLINE = Pattern.compile("(?[^,#]+)" + ", by (?[^@#]+)" + "(?(?: #[^/]+)*)"); - - private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME = - Pattern.compile("(?[^,#]+)" + ", from (?[^@#]+)" + " to (?[^@#]+)" + "(?(?: #[^/]+)*)"); - private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_AND_DEADLINE = + private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME = + Pattern.compile("(?[^,#]+)" + ", from (?[^@#]+)" + " to (?[^@#]+)" + "(?(?: #[^/]+)*)"); + + private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_AND_DEADLINE = Pattern.compile("(?[^,#]+)" + ", (at|on) (?[^@#]+)" + " by (?[^@#]+)" + "(?(?: #[^/]+)*)"); - - private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME_AND_DEADLINE = + + private static final Pattern NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME_AND_DEADLINE = Pattern.compile("(?[^,#]+)" + ", from (?[^@#]+)" + "to (?[^@#]+)" + "by (?[^@#]+)" + "(?(?: #[^/]+)*)"); - - public static final Pattern EDIT_TASK_DATA_ARGS_FORMAT_NATURAL = - Pattern.compile("(?.)" - + " (?.*)"); - - public static final Pattern DIRECTORY_ARGS_FORMAT = + + public static final Pattern EDIT_TASK_DATA_ARGS_FORMAT_NATURAL = + Pattern.compile("(?[0-9]+)" + +" (?[^,]+)" + +", (?.+)"); + + public static final Pattern DIRECTORY_ARGS_FORMAT = Pattern.compile("(?[^<>|]+)"); //@@author + public static final String EDIT_NAME = "name"; + public static final String EDIT_START_TIME = "start time"; + public static final String EDIT_END_TIME = "end time"; + public static final String EDIT_DEADLINE = "deadline"; + public static final String EDIT_TAG = "tag"; public CommandParser() {} @@ -70,7 +78,7 @@ public Command parseCommand(String userInput) { case AddCommand.COMMAND_WORD: return prepareAdd(arguments); - + case EditCommand.COMMAND_WORD: return prepareEdit(arguments); @@ -94,29 +102,35 @@ public Command parseCommand(String userInput) { case HelpCommand.COMMAND_WORD: return new HelpCommand(); - + case UndoCommand.COMMAND_WORD: return prepareUndo(arguments); - - //@@author A0147944U-reused + + //@@author A0147944U-reused case DirectoryCommand.COMMAND_WORD: return prepareDirectory(arguments); - + case DirectoryCommand.COMMAND_WORD_ALT: return prepareDirectory(arguments); - + case BackupCommand.COMMAND_WORD: return prepareBackup(arguments); - + case BackupCommand.COMMAND_WORD_ALT: return prepareBackup(arguments); - //@@author - + //@@author + case DoneCommand.COMMAND_WORD: return prepareDone(arguments); case UndoneCommand.COMMAND_WORD: return prepareUndone(arguments); + + case FavoriteCommand.COMMAND_WORD: + return prepareFavorite(arguments); + + case UnfavoriteCommand.COMMAND_WORD: + return prepareUnfavorite(arguments); default: return new IncorrectCommand(MESSAGE_UNKNOWN_COMMAND); } @@ -129,56 +143,56 @@ public Command parseCommand(String userInput) { * @return the prepared command */ private Command prepareAdd(String args){ - + final Matcher matcherNatural = NATURAL_ARGS_FORMAT.matcher(args.trim()); final Matcher matcherStart = NATURAL_ARGS_FORMAT_WITH_START_TIME.matcher(args.trim()); final Matcher matcherDeadline = NATURAL_ARGS_FORMAT_WITH_DEADLINE.matcher(args.trim()); final Matcher matcherStartEnd = NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME.matcher(args.trim()); final Matcher matcherStartDeadline = NATURAL_ARGS_FORMAT_WITH_START_AND_DEADLINE.matcher(args.trim()); final Matcher matcherStartEndDeadline = NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME_AND_DEADLINE.matcher(args.trim()); - + // Validate arg string format if (!matcherNatural.matches() && !matcherStart.matches() && !matcherDeadline.matches() && !matcherStartEnd.matches() && !matcherStartDeadline.matches() && !matcherStartEndDeadline.matches()) { return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } - + else if(matcherNatural.matches()){ try{ - return createCommandNatural(matcherNatural.group("name"), + return createCommandStart(matcherNatural.group("name"), "now", - "no endtime", - "no deadline", + EMPTY_STRING, + EMPTY_STRING, getTagsFromArgs(matcherNatural.group("tagArguments")) - ); + ); }catch(IllegalValueException ive){ return new IncorrectCommand(ive.getMessage()); } - + } else if(matcherStart.matches() && !(Pattern.compile("at.*by").matcher(args).find())){ try{ return createCommandStart( matcherStart.group("name"), matcherStart.group("startTime"), - "no endtime", - "no deadline", + EMPTY_STRING, + EMPTY_STRING, getTagsFromArgs(matcherStart.group("tagArguments")) ); - + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } } else if(matcherDeadline.matches()){ try{ - return createCommandDeadline( + return createCommandStartDeadline( matcherDeadline.group("name"), "now", - "no endtime", + EMPTY_STRING, matcherDeadline.group("deadline"), getTagsFromArgs(matcherDeadline.group("tagArguments")) ); - + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } @@ -190,10 +204,10 @@ else if(matcherStartEnd.matches() && !(Pattern.compile("from.*to.*by").matcher(a matcherStartEnd.group("name"), matcherStartEnd.group("startTime"), matcherStartEnd.group("endTime"), - "no deadline", + EMPTY_STRING, getTagsFromArgs(matcherStartEnd.group("tagArguments")) ); - + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } @@ -203,11 +217,11 @@ else if(matcherStartDeadline.matches() && (Pattern.compile("at.*by").matcher(arg return createCommandStartDeadline( matcherStartDeadline.group("name"), matcherStartDeadline.group("startTime"), - "no endtime", + EMPTY_STRING, matcherStartDeadline.group("deadline"), getTagsFromArgs(matcherStartDeadline.group("tagArguments")) ); - + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } @@ -221,264 +235,145 @@ else if(matcherStartEndDeadline.matches() && (Pattern.compile("from.*to.*by").ma matcherStartEndDeadline.group("deadline"), getTagsFromArgs(matcherStartEndDeadline.group("tagArguments")) ); - + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } } else { return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } - -} - - private Command createCommandNatural(String name, String startTime, String endTime, String deadline, Set tags){ - try{ - return new AddCommand(name, startTime, endTime, deadline, tags); - }catch(IllegalValueException i){ + + } + + //@@ author A0152958R + private Command createCommandStart(String name, String startTime, String endTime, String deadline, Set tags){ + TimeParser parserTime = new TimeParser(); + TimeParserResult time = parserTime.parseTime(startTime); + StringBuilder start = new StringBuilder(); + if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME){ + start.append(time.getFirstDate().toString()); + start.append(" "); + start.append(String.format("%02d", time.getFirstTime().getHour())); + start.append(":"); + start.append(String.format("%02d", time.getFirstTime().getMinute())); + } + if(start.length() == 0){ + return new IncorrectCommand("Incorrect time format"); + } + try{ + return new AddCommand(name, start.toString(), endTime, deadline, tags); + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } - - } - //@@ author A0152958R - private Command createCommandStart(String name, String startTime, String endTime, String deadline, Set tags){ - TimeParser parserTime = new TimeParser(); - TimeParserResult time = parserTime.parseTime(startTime); - StringBuilder start = new StringBuilder(); - if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME){ - start.append(time.getFirstTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE){ - start.append(time.getFirstDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - } - if(start.length() == 0){ - return new IncorrectCommand("Incorrect time format"); - } - try{ - return new AddCommand(name, start.toString(), endTime, deadline, tags); - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); + + } + + + + + private Command createCommandStartEnd(String name, String startTime, String endTime, String deadline, Set tags){ + TimeParser parserTime = new TimeParser(); + String timeString = "from " + startTime + " to "+ endTime; + TimeParserResult time = parserTime.parseTime(timeString); + if(time == null){ + return new IncorrectCommand("The task can't end before it starts"); } - - } - - private Command createCommandDeadline(String name, String startTime, String endTime, String deadline, Set tags){ - TimeParser parserTime = new TimeParser(); - TimeParserResult time = parserTime.parseTime(deadline); - StringBuilder deadlineString = new StringBuilder(); - if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME){ - deadlineString.append(time.getFirstTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE){ - deadlineString.append(time.getFirstDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME){ - deadlineString.append(time.getFirstDate().toString()); - deadlineString.append(" "); - deadlineString.append(time.getFirstTime().toString()); - } - if(deadlineString.length() == 0){ - return new IncorrectCommand("Incorrect time format"); - } - try{ - return new AddCommand(name, startTime, endTime, deadlineString.toString(), tags); - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); + StringBuilder start = new StringBuilder(); + StringBuilder end = new StringBuilder(); + + if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE_END_TIME){ + start.append(time.getFirstDate().toString()); + start.append(" "); + start.append(String.format("%02d", time.getFirstTime().getHour())); + start.append(":"); + start.append(String.format("%02d", time.getFirstTime().getMinute())); + end.append(time.getSecondDate().toString()); + end.append(" "); + end.append(String.format("%02d", time.getSecondTime().getHour())); + end.append(":"); + end.append(String.format("%02d", time.getSecondTime().getMinute())); + } + if(start.length() == 0 || end.length() == 0){ + return new IncorrectCommand("Incorrect time format"); } - - } - - private Command createCommandStartEnd(String name, String startTime, String endTime, String deadline, Set tags){ - TimeParser parserTime = new TimeParser(); - String timeString = "from " + startTime + " to "+ endTime; - System.out.println(timeString); - TimeParserResult time = parserTime.parseTime(timeString); - if(time == null){ - return new IncorrectCommand("The task can't end before it starts"); - } - StringBuilder start = new StringBuilder(); - StringBuilder end = new StringBuilder(); - if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_TIME){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_DATE){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_DATE){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_DATE_END_TIME){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - } - if(start.length() == 0 || end.length() == 0){ - return new IncorrectCommand("Incorrect time format"); - } - try{ - return new AddCommand(name, start.toString(), end.toString(), deadline, tags); - }catch(IllegalValueException i){ + try{ + return new AddCommand(name, start.toString(), end.toString(), deadline, tags); + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); - } - } - - private Command createCommandStartDeadline(String name, String startTime, String endTime, String deadline, Set tags){ - TimeParser parserTime = new TimeParser(); - String timeString = "from " + startTime + " to "+ deadline; - System.out.println(timeString); - TimeParserResult time = parserTime.parseTime(timeString); - if(time == null){ - return new IncorrectCommand("The task can't end before it starts"); - } - StringBuilder start = new StringBuilder(); - StringBuilder end = new StringBuilder(); - if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_TIME){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_DATE){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_DATE){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_DATE_END_TIME){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - } - if(start.length() == 0 || end.length() == 0){ - return new IncorrectCommand("Incorrect time format"); - } - try{ - return new AddCommand(name, start.toString(), endTime, end.toString(), tags); - }catch(IllegalValueException i){ + } + } + + private Command createCommandStartDeadline(String name, String startTime, String endTime, String deadline, Set tags){ + TimeParser parserTime = new TimeParser(); + String timeString = "from " + startTime + " to "+ deadline; + TimeParserResult time = parserTime.parseTime(timeString); + if(time == null){ + return new IncorrectCommand("The task can't end before it starts"); + } + StringBuilder start = new StringBuilder(); + StringBuilder end = new StringBuilder(); + if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE_END_TIME){ + start.append(time.getFirstDate().toString()); + start.append(" "); + start.append(String.format("%02d", time.getFirstTime().getHour())); + start.append(":"); + start.append(String.format("%02d", time.getFirstTime().getMinute())); + end.append(time.getSecondDate().toString()); + end.append(" "); + end.append(String.format("%02d", time.getSecondTime().getHour())); + end.append(":"); + end.append(String.format("%02d", time.getSecondTime().getMinute())); + } + if(start.length() == 0 || end.length() == 0){ + return new IncorrectCommand("Incorrect time format"); + } + try{ + return new AddCommand(name, start.toString(), endTime, end.toString(), tags); + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } - } - - private Command createCommandStartEndDeadline(String name, String startTime, String endTime, String deadline, Set tags){ - TimeParser parserTime = new TimeParser(); - TimeParser parserDeadline = new TimeParser(); - String timeString = "from " + startTime + " to "+ endTime; - System.out.println(timeString); - TimeParserResult time = parserTime.parseTime(timeString); - TimeParserResult deadlineTime = parserDeadline.parseTime(deadline); - if(time == null){ - return new IncorrectCommand("The task can't end before it starts"); - } - StringBuilder start = new StringBuilder(); - StringBuilder end = new StringBuilder(); - StringBuilder deadString = new StringBuilder(); - if(deadlineTime.getRawDateTimeStatus() == DateTimeStatus.START_TIME){ - deadString.append(deadlineTime.getFirstTime().toString()); - }else if(deadlineTime.getRawDateTimeStatus() == DateTimeStatus.START_DATE){ - deadString.append(deadlineTime.getFirstDate().toString()); - }else if(deadlineTime.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME){ - deadString.append(deadlineTime.getFirstDate().toString()); - deadString.append(" "); - deadString.append(deadlineTime.getFirstTime().toString()); - } - if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_TIME){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_DATE){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_DATE){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - start.append(" "); - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_END_DATE_END_TIME){ - start.append(time.getFirstDate().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - }else if(time.getRawDateTimeStatus() == DateTimeStatus.START_TIME_END_DATE_END_TIME){ - start.append(time.getFirstTime().toString()); - end.append(time.getSecondDate().toString()); - end.append(" "); - end.append(time.getSecondTime().toString()); - } - if(start.length() == 0 || end.length() == 0 || deadString.length() == 0){ - return new IncorrectCommand("Incorrect time format"); - } - try{ - return new AddCommand(name, start.toString(), end.toString(), deadString.toString(), tags); - }catch(IllegalValueException i){ + } + + private Command createCommandStartEndDeadline(String name, String startTime, String endTime, String deadline, Set tags){ + TimeParser parserTime = new TimeParser(); + TimeParser parserDeadline = new TimeParser(); + String timeString = "from " + startTime + " to "+ endTime; + TimeParserResult time = parserTime.parseTime(timeString); + TimeParserResult deadlineTime = parserDeadline.parseTime(deadline); + if(time == null){ + return new IncorrectCommand("The task can't end before it starts"); + } + StringBuilder start = new StringBuilder(); + StringBuilder end = new StringBuilder(); + StringBuilder deadString = new StringBuilder(); + if(deadlineTime.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME){ + deadString.append(deadlineTime.getFirstDate().toString()); + deadString.append(" "); + deadString.append(String.format("%02d", deadlineTime.getFirstTime().getHour())); + deadString.append(":"); + deadString.append(String.format("%02d", deadlineTime.getFirstTime().getMinute())); + } + if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME_END_DATE_END_TIME){ + start.append(time.getFirstDate().toString()); + start.append(" "); + start.append(String.format("%02d", time.getFirstTime().getHour())); + start.append(":"); + start.append(String.format("%02d", time.getFirstTime().getMinute())); + end.append(time.getSecondDate().toString()); + end.append(" "); + end.append(String.format("%02d", time.getSecondTime().getHour())); + end.append(":"); + end.append(String.format("%02d", time.getSecondTime().getMinute())); + } + if(start.length() == 0 || end.length() == 0 || deadString.length() == 0){ + return new IncorrectCommand("Incorrect time format"); + } + try{ + return new AddCommand(name, start.toString(), end.toString(), deadString.toString(), tags); + }catch(IllegalValueException i){ return new IncorrectCommand(i.getMessage()); } - } - //@@author + } + //@@author /** @@ -494,119 +389,64 @@ private static Set getTagsFromArgs(String tagArguments) throws IllegalVa final Collection tagStrings = Arrays.asList(tagArguments.replaceFirst(" #", "").split(" #")); return new HashSet<>(tagStrings); } - - + + //@@author A0152958R private Command prepareEdit(String args){ final Matcher matcher = EDIT_TASK_DATA_ARGS_FORMAT_NATURAL.matcher(args.trim()); // Validate arg string format if (!matcher.matches()) { return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE)); } - final Matcher matcherNatural = NATURAL_ARGS_FORMAT.matcher(matcher.group("content")); - final Matcher matcherStart = NATURAL_ARGS_FORMAT_WITH_START_TIME.matcher(matcher.group("content")); - final Matcher matcherDeadline = NATURAL_ARGS_FORMAT_WITH_DEADLINE.matcher(matcher.group("content")); - final Matcher matcherStartEnd = NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME.matcher(matcher.group("content")); - final Matcher matcherStartDeadline = NATURAL_ARGS_FORMAT_WITH_START_AND_DEADLINE.matcher(matcher.group("content")); - final Matcher matcherStartEndDeadline = NATURAL_ARGS_FORMAT_WITH_START_AND_END_TIME_AND_DEADLINE.matcher(matcher.group("content")); - if (!matcherNatural.matches() && !matcherStart.matches() && !matcherStartEnd.matches() && !matcherStartDeadline.matches() && !matcherStartEndDeadline.matches()) { - return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); - } - - if(matcherNatural.matches()){ + int index = Integer.parseInt(matcher.group("targetIndex")); + String item = matcher.group("item"); + String content = matcher.group("content"); + TimeParser parserTime = new TimeParser(); + TimeParserResult time = parserTime.parseTime(content); + StringBuilder start = new StringBuilder(); + switch(item){ + case EDIT_NAME: try{ - return new EditCommand(Integer.parseInt(matcher.group("targetIndex")), - matcherNatural.group("name"), - "now", - "no endtime", - "no deadline", - getTagsFromArgs(matcherNatural.group("tagArguments")) - ); + return new EditCommand(index, item, content, null); }catch(IllegalValueException ive){ return new IncorrectCommand(ive.getMessage()); } - - } - else if(matcherStart.matches() && !(Pattern.compile("at.*by").matcher(args).find())){ - try{ - return new EditCommand(Integer.parseInt(matcher.group("targetIndex")), - matcherStart.group("name"), - matcherStart.group("startTime"), - "no endtime", - "no deadline", - getTagsFromArgs(matcherStart.group("tagArguments")) - ); - - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); + case EDIT_START_TIME: + case EDIT_END_TIME: + case EDIT_DEADLINE: + if(time.getRawDateTimeStatus() == DateTimeStatus.START_DATE_START_TIME){ + start.append(time.getFirstDate().toString()); + start.append(" "); + start.append(String.format("%02d", time.getFirstTime().getHour())); + start.append(":"); + start.append(String.format("%02d", time.getFirstTime().getMinute())); } - } - - else if(matcherDeadline.matches()){ - try{ - return new EditCommand(Integer.parseInt(matcher.group("targetIndex")), - matcherStart.group("name"), - "now", - "no endtime", - matcherStart.group("deadline"), - getTagsFromArgs(matcherStart.group("tagArguments")) - ); - - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); + if(start.length() == 0){ + return new IncorrectCommand("Incorrect time format"); } - } - else if(matcherStartEnd.matches() && !(Pattern.compile("from.*to.*by").matcher(args).find())){ try{ - return new EditCommand(Integer.parseInt(matcher.group("targetIndex")), - matcherStartEnd.group("name"), - matcherStartEnd.group("startTime"), - matcherStartEnd.group("endTime"), - "no deadline", - getTagsFromArgs(matcherStartEnd.group("tagArguments")) - ); - - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); + return new EditCommand(index, item, start.toString(), null); + }catch(IllegalValueException ive){ + return new IncorrectCommand(ive.getMessage()); } - } - else if(matcherStartDeadline.matches() && (Pattern.compile("at.*by").matcher(args).find())){ + case EDIT_TAG: try{ - return new EditCommand(Integer.parseInt(matcher.group("targetIndex")), - matcherStartDeadline.group("name"), - matcherStartDeadline.group("startTime"), - "no endtime", - matcherStartDeadline.group("deadline"), - getTagsFromArgs(matcherStartDeadline.group("tagArguments")) - ); - - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); + return new EditCommand(index, item, item, getTagsFromArgs(content)); + }catch(IllegalValueException ive){ + return new IncorrectCommand(ive.getMessage()); } - } - else if(matcherStartEndDeadline.matches() && (Pattern.compile("from.*to.*by").matcher(args).find())) { - try{ - return new EditCommand(Integer.parseInt(matcher.group("targetIndex")), - matcherStartEndDeadline.group("name"), - matcherStartEndDeadline.group("startTime"), - matcherStartEndDeadline.group("endTime"), - matcherStartEndDeadline.group("deadline"), - getTagsFromArgs(matcherStartEndDeadline.group("tagArguments")) - ); + default: + return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); - }catch(IllegalValueException i){ - return new IncorrectCommand(i.getMessage()); - } } - else { return new IncorrectCommand(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } } - - - - - - + + + + + + /** * Parses arguments in the context of the delete task command. @@ -624,7 +464,7 @@ private Command prepareDelete(String args) { return new DeleteCommand(index.get()); } - + /** * Parses arguments in the context of the undo task command. * @@ -693,7 +533,7 @@ private Command prepareFind(String args) { final Set keywordSet = new HashSet<>(Arrays.asList(keywords)); return new FindCommand(keywordSet); } - + /** * Parses arguments in the context of the directory command. * @@author A0147944U @@ -706,15 +546,15 @@ private Command prepareDirectory(String args) { } return new DirectoryCommand( matcher.group("directory") - ); + ); } - + /** - * Parses arguments in the context of the backup command. - * - * @param args full command args string - * @return the prepared command - */ + * Parses arguments in the context of the backup command. + * + * @param args full command args string + * @return the prepared command + */ private Command prepareBackup(String args) { final Matcher matcher = DIRECTORY_ARGS_FORMAT.matcher(args.trim()); // Validate arg string format @@ -726,9 +566,8 @@ private Command prepareBackup(String args) { ); } //@@author - - private Command prepareDone(String - args) { + + private Command prepareDone(String args) { Optional index = parseIndex(args); if(!index.isPresent()){ @@ -749,4 +588,26 @@ private Command prepareUndone(String args) { return new UndoneCommand(index.get()); } + + private Command prepareFavorite(String args) { + + Optional index = parseIndex(args); + if(!index.isPresent()){ + return new IncorrectCommand( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, FavoriteCommand.MESSAGE_USAGE)); + } + + return new FavoriteCommand(index.get()); + } + + private Command prepareUnfavorite(String args) { + + Optional index = parseIndex(args); + if(!index.isPresent()){ + return new IncorrectCommand( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnfavoriteCommand.MESSAGE_USAGE)); + } + + return new UnfavoriteCommand(index.get()); + } } diff --git a/src/main/java/seedu/task/logic/parser/TimeParser.java b/src/main/java/seedu/task/logic/parser/TimeParser.java index 6b1647526c8a..c6369619b118 100644 --- a/src/main/java/seedu/task/logic/parser/TimeParser.java +++ b/src/main/java/seedu/task/logic/parser/TimeParser.java @@ -11,10 +11,7 @@ public class TimeParser { private static final String NATTY_DATE_TIME = "DATE_TIME"; - private static final String NATTY_RELATIVE_DATE = "RELATIVE_DATE"; - private static final String NATTY_EXPLICIT_DATE = "EXPLICIT_DATE"; - private static final String NATTY_RELATIVE_TIME = "RELATIVE_TIME"; - private static final String NATTY_EXPLICIT_TIME = "EXPLICIT_TIME"; + private static final int NO_DATE_TIME = 0; private static final int ONE_DATE_TIME = 1; private static final int TWO_DATE_TIME = 2; @@ -64,23 +61,19 @@ private void postTraverseSyntaxTree(Tree node, List dates) { if (node.getText().equals(NATTY_DATE_TIME)){ dateTimeCount++; } - if (node.getText().equals(NATTY_RELATIVE_DATE) || node.getText().equals(NATTY_EXPLICIT_DATE)) { + if (dateTimeCount == ONE_DATE_TIME) { timeParserResult.setFirstDate(dates.get(FIRST_DATE_INDEX)); - } else if (dateTimeCount == TWO_DATE_TIME) { - timeParserResult.setSecondDate(dates.get(SECOND_DATE_INDEX)); - }else if (dateTimeCount == THREE_DATE_TIME) { - timeParserResult.setThirdDate(dates.get(THIRD_DATE_INDEX)); - } - } else if (node.getText().equals(NATTY_RELATIVE_TIME) || node.getText().equals(NATTY_EXPLICIT_TIME)) { - if (dateTimeCount == ONE_DATE_TIME) { + timeParserResult.setFirstTime(dates.get(FIRST_DATE_INDEX)); } else if (dateTimeCount == TWO_DATE_TIME) { + timeParserResult.setSecondDate(dates.get(SECOND_DATE_INDEX)); timeParserResult.setSecondTime(dates.get(SECOND_DATE_INDEX)); }else if (dateTimeCount == THREE_DATE_TIME) { + timeParserResult.setThirdDate(dates.get(THIRD_DATE_INDEX)); timeParserResult.setThirdTime(dates.get(THIRD_DATE_INDEX)); } - } + for (int i = 0; i < node.getChildCount(); i++) { postTraverseSyntaxTree(node.getChild(i), dates); } diff --git a/src/main/java/seedu/task/model/task/Deadline.java b/src/main/java/seedu/task/model/task/Deadline.java index a9338a6a2f72..901ee3f3cf15 100644 --- a/src/main/java/seedu/task/model/task/Deadline.java +++ b/src/main/java/seedu/task/model/task/Deadline.java @@ -12,7 +12,7 @@ public class Deadline { public static final String MESSAGE_DEADLINE_CONSTRAINTS = "Task deadline should be in any date format"; public static final String DEADLINE_VALIDATION_REGEX = "((1[012]|[1-9]).[0-5][0-9](\\s)?(?i)(am|pm)|(1[012]|[1-9])(\\s)?(?i)(am|pm))|(^.+)"; - public static final String NO_DEADLINE = "no deadline"; + public static final String NO_DEADLINE = ""; public final String value; /** diff --git a/src/main/java/seedu/task/model/task/EndTime.java b/src/main/java/seedu/task/model/task/EndTime.java index 0811fb9c5659..4bf20f9215a5 100644 --- a/src/main/java/seedu/task/model/task/EndTime.java +++ b/src/main/java/seedu/task/model/task/EndTime.java @@ -13,7 +13,7 @@ public class EndTime { public static final String MESSAGE_ENDTIME_CONSTRAINTS = "Task end times should be in hh.mmam or hh.mmpm format"; public static final String ENDTIME_VALIDATION_REGEX = "((1[012]|[1-9]).[0-5][0-9](\\s)?(?i)(am|pm)|(1[012]|[1-9])(\\s)?(?i)(am|pm))|(^.+)"; - public static final String NO_ENDTIME = "no end time"; + public static final String NO_ENDTIME = ""; public final String value; diff --git a/src/main/java/seedu/task/model/task/ReadOnlyTask.java b/src/main/java/seedu/task/model/task/ReadOnlyTask.java index d03b49b112e5..e8cc5c83cf55 100644 --- a/src/main/java/seedu/task/model/task/ReadOnlyTask.java +++ b/src/main/java/seedu/task/model/task/ReadOnlyTask.java @@ -30,7 +30,8 @@ default boolean isSameStateAs(ReadOnlyTask other) { && other.getName().equals(this.getName()) // state checks here onwards && other.getStartTime().equals(this.getStartTime()) && other.getEndTime().equals(this.getEndTime()) - && other.getDeadline().equals(this.getDeadline())); + && other.getDeadline().equals(this.getDeadline()) + && other.getTags().equals(this.getTags())); } /** @@ -38,15 +39,22 @@ default boolean isSameStateAs(ReadOnlyTask other) { */ default String getAsText() { final StringBuilder builder = new StringBuilder(); - builder.append(getName()) - .append(" Start time: ") - .append(getStartTime()) - .append(" End time: ") - .append(getEndTime()) - .append(" Deadline: ") - .append(getDeadline()) - .append(" Tags: "); - getTags().forEach(builder::append); + builder.append(getName()); + + if (!getStartTime().toString().isEmpty()) { + builder.append(" \nStart time: ").append(getStartTime()); + } + if (!getEndTime().toString().isEmpty()) { + builder.append(" \nEnd time: ").append(getEndTime()); + } + if (!getDeadline().toString().isEmpty()) { + builder.append(" \nDeadline: ").append(getDeadline()); + } + if (!getTags().toSet().isEmpty()) { + builder.append(" \nTags: "); + getTags().forEach(builder::append); + } + return builder.toString(); } diff --git a/src/main/java/seedu/task/model/task/StartTime.java b/src/main/java/seedu/task/model/task/StartTime.java index a5b11bda627e..263442f6f653 100644 --- a/src/main/java/seedu/task/model/task/StartTime.java +++ b/src/main/java/seedu/task/model/task/StartTime.java @@ -11,7 +11,7 @@ public class StartTime { public static final String MESSAGE_STARTTIME_CONSTRAINTS = "Task start times should be in hh.mmam or hh.mmpm format"; public static final String STARTTIME_VALIDATION_REGEX = "((1[012]|[1-9]).[0-5][0-9](\\s)?(?i)(am|pm)|(1[012]|[1-9])(\\s)?(?i)(am|pm))|(^.+)"; - public static final String NO_STARTTIME = "no start time"; + public static final String NO_STARTTIME = ""; public final String value; diff --git a/src/main/java/seedu/task/model/task/Status.java b/src/main/java/seedu/task/model/task/Status.java index e6b0c3bcb972..7aaba7518080 100644 --- a/src/main/java/seedu/task/model/task/Status.java +++ b/src/main/java/seedu/task/model/task/Status.java @@ -10,18 +10,18 @@ public class Status { private boolean isOverdue; - private boolean newlyAdded; + private boolean isFavorite; public Status() { this.isDone = false; this.isOverdue = false; - this.newlyAdded = false; + this.isFavorite = false; } - public Status(boolean isDone, boolean isOverdue, boolean newlyAdded) { + public Status(boolean isDone, boolean isOverdue, boolean isFavorite) { this.isDone = isDone; this.isOverdue = isOverdue; - this.newlyAdded = newlyAdded; + this.isFavorite = isFavorite; } public void setDoneStatus(boolean doneStatus) { @@ -32,8 +32,8 @@ public void setOverdueStatus(boolean overdueStatus) { this.isDone = overdueStatus; } - public void setNewlyAdded(boolean newlyAdded) { - this.newlyAdded = newlyAdded; + public void setFavoriteStatus(boolean isFavorite) { + this.isFavorite = isFavorite; } public boolean getDoneStatus() { @@ -44,7 +44,7 @@ public boolean getOverdueStatus() { return isOverdue; } - public boolean getNewlyAddedStatus() { - return newlyAdded; + public boolean getFavoriteStatus() { + return isFavorite; } } diff --git a/src/main/java/seedu/task/storage/XmlAdaptedTask.java b/src/main/java/seedu/task/storage/XmlAdaptedTask.java index 1376dbde3fc8..558fe213b79f 100644 --- a/src/main/java/seedu/task/storage/XmlAdaptedTask.java +++ b/src/main/java/seedu/task/storage/XmlAdaptedTask.java @@ -1,19 +1,27 @@ package seedu.task.storage; +import seedu.task.commons.core.LogsCenter; import seedu.task.commons.exceptions.IllegalValueException; import seedu.task.model.tag.Tag; import seedu.task.model.tag.UniqueTagList; import seedu.task.model.task.*; +import seedu.task.ui.TaskCard; import javax.xml.bind.annotation.XmlElement; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.logging.Logger; /** * JAXB-friendly version of the Task. */ public class XmlAdaptedTask { - + private final Logger logger = LogsCenter.getLogger(XmlAdaptedTask.class); @XmlElement(required = true) private String name; @XmlElement(required = true) @@ -27,7 +35,7 @@ public class XmlAdaptedTask { @XmlElement(required = true) private boolean overdueStatus; @XmlElement(required = true) - private boolean newlyAdded; + private boolean favoriteStatus; @XmlElement @@ -49,9 +57,11 @@ public XmlAdaptedTask(ReadOnlyTask source) { startTime = source.getStartTime().value; endTime = source.getEndTime().value; deadline = source.getDeadline().value; + + doneStatus = source.getStatus().getDoneStatus(); - overdueStatus = source.getStatus().getOverdueStatus(); - newlyAdded = source.getStatus().getNewlyAddedStatus(); + + favoriteStatus = source.getStatus().getFavoriteStatus(); tagged = new ArrayList<>(); for (Tag tag : source.getTags()) { tagged.add(new XmlAdaptedTag(tag)); @@ -73,7 +83,30 @@ public Task toModelType() throws IllegalValueException { final EndTime endTime = new EndTime(this.endTime); final Deadline deadline = new Deadline(this.deadline); final UniqueTagList tags = new UniqueTagList(taskTags); - final Status status = new Status(this.doneStatus, this.overdueStatus, this.newlyAdded); + + if (!this.deadline.isEmpty()) { + String strDatewithTime = this.deadline.replace(" ", "T"); + LocalDateTime aLDT = LocalDateTime.parse(strDatewithTime); + + Date currentDate=new Date(); + LocalDateTime localDateTime = LocalDateTime.ofInstant(currentDate.toInstant(), ZoneId.systemDefault()); + + logger.info("NOW IS " + localDateTime + "AND " + aLDT); + + + if (aLDT.isBefore(localDateTime)) { + this.overdueStatus = true; + } + else { + this.overdueStatus = false; + } + + } + else { + this.overdueStatus = false; + } + + final Status status = new Status(this.doneStatus, this.overdueStatus, this.favoriteStatus); return new Task(name, startTime, endTime, deadline, tags, status); } } \ No newline at end of file diff --git a/src/main/java/seedu/task/ui/TaskCard.java b/src/main/java/seedu/task/ui/TaskCard.java index 3250792bccd9..03ceb6e5d83d 100644 --- a/src/main/java/seedu/task/ui/TaskCard.java +++ b/src/main/java/seedu/task/ui/TaskCard.java @@ -1,5 +1,7 @@ package seedu.task.ui; +import java.util.logging.Logger; + import javafx.animation.PauseTransition; import javafx.event.ActionEvent; import javafx.event.EventHandler; @@ -8,11 +10,12 @@ import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.util.Duration; +import seedu.task.commons.core.LogsCenter; import seedu.task.model.task.ReadOnlyTask; //@@author A0147335E-reused public class TaskCard extends UiPart{ - + private final Logger logger = LogsCenter.getLogger(TaskCard.class); private static final String FXML = "TaskListCard.fxml"; @FXML @@ -49,17 +52,17 @@ public static TaskCard load(ReadOnlyTask task, int displayedIndex){ public void initialize() { name.setText(task.getName().fullName); id.setText(displayedIndex + ". "); - if(!task.getDeadline().value.equals("now") && !task.getDeadline().value.equals(" from now")){ + if (!task.getStartTime().toString().isEmpty()) { startTimeLabel.setText(" from " + task.getStartTime().value); }else{ startTimeLabel.setText(""); } - if(!task.getEndTime().value.equals("no endtime") && !task.getEndTime().value.equals(" to no endtime")){ + if(!task.getEndTime().toString().isEmpty()){ endTimeLabel.setText(" to " + task.getEndTime().value); }else{ endTimeLabel.setText(""); } - if(!task.getDeadline().value.equals("no deadline") && !task.getDeadline().value.equals(" to no deadline")){ + if(!task.getDeadline().toString().isEmpty()){ deadlineLabel.setText(" ends " + task.getDeadline().value); }else{ deadlineLabel.setText(""); @@ -69,6 +72,7 @@ public void initialize() { //@@author A0147335E public HBox getLayout() { + /* if (task.getStatus().getNewlyAddedStatus() == true) { cardPane.setStyle("-fx-background-color: #FFFE00"); @@ -83,17 +87,24 @@ public void handle(ActionEvent event) { delay.play(); } - if (task.getStatus().getDoneStatus() == true) { + */ + if (task.getStatus().getOverdueStatus()) { + cardPane.setStyle("-fx-background-color: #FF0000"); + } + if (task.getStatus().getDoneStatus() && task.getStatus().getFavoriteStatus()) { + cardPane.setStyle("-fx-background-color: linear-gradient(from 25% 25% to 100% 100%, #ADDBAC, #FFFE00)"); + } + else if (task.getStatus().getDoneStatus()) { + cardPane.setStyle("-fx-background-color: #ADDBAC"); } + else if (task.getStatus().getFavoriteStatus()) { + cardPane.setStyle("-fx-background-color: #FFFE00"); + } return cardPane; } - //@@author A0147335E - public static boolean isAdded() { - return task.getStatus().getNewlyAddedStatus(); - } - + @Override public void setNode(Node node) { cardPane = (HBox)node; diff --git a/src/main/java/seedu/task/ui/TaskListPanel.java b/src/main/java/seedu/task/ui/TaskListPanel.java index ef6a6da2593c..e0cd82e4f121 100644 --- a/src/main/java/seedu/task/ui/TaskListPanel.java +++ b/src/main/java/seedu/task/ui/TaskListPanel.java @@ -71,9 +71,9 @@ private void setConnections(ObservableList taskList) { private void addToPlaceholder() { SplitPane.setResizableWithParent(placeHolderPane, false); - placeHolderPane.getChildren().add(panel); - + + } private void setEventHandlerForSelectionChangeEvent() { @@ -102,8 +102,10 @@ public static void addAutoScroll(final ListView view) { c.next(); final int size = view.getItems().size(); if (size > 0) { - view.scrollTo(size - 1); - } + view.scrollTo(c.getFrom()); + view.getSelectionModel().clearAndSelect(c.getFrom()); + + } })); } diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css index 70a4c80c261e..59c03eff8ee7 100644 --- a/src/main/resources/view/DarkTheme.css +++ b/src/main/resources/view/DarkTheme.css @@ -285,4 +285,7 @@ #filterField, #taskListPanel{ -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0); +} +.done { + -fx-background-color: #ADDBAC; } \ No newline at end of file diff --git a/src/test/data/XmlUtilTest/validTaskManager.xml b/src/test/data/XmlUtilTest/validTaskManager.xml index d00a6011dc46..9b5d939d27c2 100644 --- a/src/test/data/XmlUtilTest/validTaskManager.xml +++ b/src/test/data/XmlUtilTest/validTaskManager.xml @@ -2,35 +2,39 @@ Watch world news - 2100hrs - 2200hrs - Living Room + 2016-11-01 21:55 + 2016-11-01 21:55 + 2016-11-01 21:55 false false + false Play soccer - 1800hrs - 1900hrs - Bedok Stadium + 2016-11-01 21:55 + 2016-11-01 21:55 + 2016-11-01 21:55 false false + false Train for IPPT - 0900hrs - 1100hrs - Tekong Park + 2016-11-01 21:55 + 2016-11-01 21:55 + 2016-11-01 21:55 false false + false Buy pizza - 1500hrs - 1500hrs - Pizza hut + 2016-11-01 21:55 + 2016-11-01 21:55 + 2016-11-01 21:55 false false + false diff --git a/src/test/data/sandbox/empty.xml b/src/test/data/sandbox/empty.xml index a5a345f10d2f..5df4c7fd03a9 100644 --- a/src/test/data/sandbox/empty.xml +++ b/src/test/data/sandbox/empty.xml @@ -1,21 +1,43 @@ - DO - now - no endtime - no deadline - true + kk + 2016-11-02 14:00 + + 2016-11-01 21:55 + false false - false + false + school - do nothing - now - no endtime - no deadline - true + dos + 2016-11-01 15:00 + + 2016-11-01 21:30 + false false - false + false + + doo + 2016-11-01 15:00 + + 2016-11-01 21:57 + false + false + false + + + do sth + 2016-11-02 22:00 + + + false + false + false + + + school + diff --git a/src/test/data/sandbox/notempty.xml b/src/test/data/sandbox/notempty.xml index a5a345f10d2f..5df4c7fd03a9 100644 --- a/src/test/data/sandbox/notempty.xml +++ b/src/test/data/sandbox/notempty.xml @@ -1,21 +1,43 @@ - DO - now - no endtime - no deadline - true + kk + 2016-11-02 14:00 + + 2016-11-01 21:55 + false false - false + false + school - do nothing - now - no endtime - no deadline - true + dos + 2016-11-01 15:00 + + 2016-11-01 21:30 + false false - false + false + + doo + 2016-11-01 15:00 + + 2016-11-01 21:57 + false + false + false + + + do sth + 2016-11-02 22:00 + + + false + false + false + + + school + diff --git a/src/test/java/guitests/EditCommandTest.java b/src/test/java/guitests/EditCommandTest.java index 9254fe7ade42..d315d26b81e9 100644 --- a/src/test/java/guitests/EditCommandTest.java +++ b/src/test/java/guitests/EditCommandTest.java @@ -15,8 +15,8 @@ public void edit() { TestTask[] currentList = td.getTypicalTasks(); - commandBox.runCommand("edit 1 Accompany dad to the doctor, from 2016-10-25 02:00 to 2016-10-26 17:00 by 2016-10-27 15:00 #gwsDad"); - + commandBox.runCommand("edit 1 name, Accompany dad to the doctor"); + commandBox.runCommand("edit 1 tag, gwsDad"); assertEditSuccess(1, TypicalTestTasks.taskJ, currentList); diff --git a/src/test/java/guitests/UndoCommandTest.java b/src/test/java/guitests/UndoCommandTest.java index 2b3b0b8b7b5e..7eb243d12e43 100644 --- a/src/test/java/guitests/UndoCommandTest.java +++ b/src/test/java/guitests/UndoCommandTest.java @@ -17,7 +17,9 @@ public class UndoCommandTest extends TaskManagerGuiTest { public void undo() { TestTask[] currentList = td.getTypicalTasks(); - commandBox.runCommand("edit 1 Accompany dad to the doctor, from 2016-10-25 02:00 to 2016-10-26 17:00 by 2016-10-27 15:00 #gwsDad"); + commandBox.runCommand("edit 1 name, Accompany dad to the doctor"); + commandBox.runCommand("edit 1 tag, gwsDad"); + commandBox.runCommand("undo"); commandBox.runCommand("undo"); assertUndoSuccess(currentList); diff --git a/src/test/java/seedu/task/logic/LogicManagerTest.java b/src/test/java/seedu/task/logic/LogicManagerTest.java index e7ad6b90b90a..2cf98412ba7b 100644 --- a/src/test/java/seedu/task/logic/LogicManagerTest.java +++ b/src/test/java/seedu/task/logic/LogicManagerTest.java @@ -394,7 +394,7 @@ class TestDataHelper{ //@@author A0147944U-reused Task revise() throws Exception { Name name = new Name("Revise CS2103"); - StartTime startTime = new StartTime("2016-10-25"); + StartTime startTime = new StartTime("2016-10-25 15:00"); EndTime endTime = new EndTime("2016-11-25 15:00"); Deadline location = new Deadline("2016-11-26 15:00"); Tag tag1 = new Tag("tag1"); diff --git a/src/test/java/seedu/task/testutil/TestUtil.java b/src/test/java/seedu/task/testutil/TestUtil.java index 6007c51ed862..6bca4e25341b 100644 --- a/src/test/java/seedu/task/testutil/TestUtil.java +++ b/src/test/java/seedu/task/testutil/TestUtil.java @@ -67,15 +67,15 @@ public static void assertThrows(Class expected, Runnable ex private static Task[] getSampleTaskData() { try { return new Task[]{ - new Task(new Name("Accompany mom to the doctor"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Borrow software engineering book"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Call Jim"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Do homework"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Edit AddressBook file"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Finish up the project"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Go for a jog"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Help Jim with his task"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()), - new Task(new Name("Iron new clothes"), new StartTime("10.00am"), new EndTime("02.59am"), new Deadline("10.00pm"), new UniqueTagList(), new Status()) + new Task(new Name("Accompany mom to the doctor"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Borrow software engineering book"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Call Jim"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Do homework"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Edit AddressBook file"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Finish up the project"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Go for a jog"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Help Jim with his task"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()), + new Task(new Name("Iron new clothes"), new StartTime("2016-11-01 21:55"), new EndTime("2016-11-01 21:55"), new Deadline("2016-11-01 21:55"), new UniqueTagList(), new Status()) };