Skip to content
This repository has been archived by the owner on Dec 4, 2021. It is now read-only.

Commit

Permalink
Add FindCommand implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
ethan-l-m-e committed Aug 27, 2020
1 parent 7c1d7ad commit c99559e
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/main/java/duke/command/FindCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package duke.command;

import duke.storage.Storage;
import duke.task.TaskList;
import duke.ui.Ui;

public class FindCommand extends Command {
public static final String COMMAND_WORD = "find";

private final String keyWords;

public FindCommand(String keyWords) {
this.keyWords = keyWords;
}

@Override
public boolean isExit() {
return false;
}

@Override
public void execute(TaskList tasks, Ui ui, Storage storage) {
ui.findTasksMessage(tasks, keyWords);
}
}
10 changes: 10 additions & 0 deletions src/main/java/duke/parser/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ public static Command parse(String fullCommand) throws DukeException {
return prepareDelete(suffix);
case ListCommand.COMMAND_WORD:
return prepareList(suffix);
case FindCommand.COMMAND_WORD:
return prepareFind(suffix);
case ExitCommand.COMMAND_WORD:
return new ExitCommand();
default:
Expand Down Expand Up @@ -85,4 +87,12 @@ private static Command prepareList(String suffix) throws DukeException {
return new ListCommand();
}
}

private static Command prepareFind(String suffix) throws DukeException {
if (suffix.length() == 0) {
throw new DukeException("You cannot search for nothing.");
} else {
return new FindCommand(suffix);
}
}
}
4 changes: 4 additions & 0 deletions src/main/java/duke/task/Task.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,8 @@ public String getDescription() {
public String toString() {
return "[" + this.getStatusIcon() + "] " + this.getDescription();
}

public boolean contains(String keyWords) {
return description.contains(keyWords);
}
}
10 changes: 10 additions & 0 deletions src/main/java/duke/ui/Ui.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,14 @@ public void listTasksMessage(TaskList tasks) {
public void exitMessage() {
System.out.println("Bye. Hope to see you again soon!");
}

public void findTasksMessage(TaskList tasks, String keyWords) {
System.out.println("Here are the matching tasks in your list:");
for (int i = 1; i <= tasks.getNumOfTasks(); i++) {
Task t = tasks.retrieve(i);
if (t.contains(keyWords)) {
System.out.format("%d.%s\n", i, t.toString());
}
}
}
}

0 comments on commit c99559e

Please sign in to comment.