From 2a6540aee020e181a4bfcf86b517ae971a206b89 Mon Sep 17 00:00:00 2001 From: Ronak Lakhotia Date: Mon, 11 Sep 2017 19:37:17 +0800 Subject: [PATCH 1/5] Implement Find command ignoring case --- .../addressbook-level2.jar | Bin 0 -> 50233 bytes .../addressbook-level2/META-INF/MANIFEST.MF | 3 +++ src/META-INF/MANIFEST.MF | 3 +++ src/seedu/addressbook/commands/FindCommand.java | 4 ++-- src/seedu/addressbook/data/person/Name.java | 5 +++++ src/seedu/addressbook/parser/Parser.java | 2 +- 6 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 out/artifacts/addressbook_level2_jar/addressbook-level2.jar create mode 100644 out/production/addressbook-level2/META-INF/MANIFEST.MF create mode 100644 src/META-INF/MANIFEST.MF diff --git a/out/artifacts/addressbook_level2_jar/addressbook-level2.jar b/out/artifacts/addressbook_level2_jar/addressbook-level2.jar new file mode 100644 index 0000000000000000000000000000000000000000..c38fc5765ea27308104e40f4976d7d2cfe83f5e2 GIT binary patch literal 50233 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 E4}OewfdBvi literal 0 HcmV?d00001 diff --git a/out/production/addressbook-level2/META-INF/MANIFEST.MF b/out/production/addressbook-level2/META-INF/MANIFEST.MF new file mode 100644 index 000000000..db183a2d6 --- /dev/null +++ b/out/production/addressbook-level2/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: seedu.addressbook.Main + diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF new file mode 100644 index 000000000..db183a2d6 --- /dev/null +++ b/src/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: seedu.addressbook.Main + diff --git a/src/seedu/addressbook/commands/FindCommand.java b/src/seedu/addressbook/commands/FindCommand.java index 7fe2c52c3..eea51271e 100644 --- a/src/seedu/addressbook/commands/FindCommand.java +++ b/src/seedu/addressbook/commands/FindCommand.java @@ -17,7 +17,7 @@ public class FindCommand extends Command { public static final String COMMAND_WORD = "find"; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all persons whose names contain any of " - + "the specified keywords (case-sensitive) and displays them as a list with index numbers.\n" + + "the specified keywords (case-insensitive) and displays them as a list with index numbers.\n" + "Parameters: KEYWORD [MORE_KEYWORDS]...\n" + "Example: " + COMMAND_WORD + " alice bob charlie"; @@ -49,7 +49,7 @@ public CommandResult execute() { private List getPersonsWithNameContainingAnyKeyword(Set keywords) { final List matchedPersons = new ArrayList<>(); for (ReadOnlyPerson person : addressBook.getAllPersons()) { - final Set wordsInName = new HashSet<>(person.getName().getWordsInName()); + final Set wordsInName = new HashSet<>(person.getName().getWordsInNameIgnoreCase()); if (!Collections.disjoint(wordsInName, keywords)) { matchedPersons.add(person); } diff --git a/src/seedu/addressbook/data/person/Name.java b/src/seedu/addressbook/data/person/Name.java index d1d271414..0f1bb54c6 100644 --- a/src/seedu/addressbook/data/person/Name.java +++ b/src/seedu/addressbook/data/person/Name.java @@ -15,6 +15,7 @@ public class Name { public static final String MESSAGE_NAME_CONSTRAINTS = "Person names should be spaces or alphabetic characters"; public static final String NAME_VALIDATION_REGEX = "[\\p{Alpha} ]+"; public final String fullName; + public final String fullNameInLowerCase; /** * Validates given name. @@ -27,6 +28,7 @@ public Name(String name) throws IllegalValueException { throw new IllegalValueException(MESSAGE_NAME_CONSTRAINTS); } this.fullName = trimmedName; + this.fullNameInLowerCase = trimmedName.toLowerCase(); } /** @@ -43,6 +45,9 @@ public List getWordsInName() { return Arrays.asList(fullName.split("\\s+")); } + public List getWordsInNameIgnoreCase() { + return Arrays.asList(fullNameInLowerCase.split("\\s+")); + } @Override public String toString() { return fullName; diff --git a/src/seedu/addressbook/parser/Parser.java b/src/seedu/addressbook/parser/Parser.java index 25c412f6b..2dc05c0a6 100644 --- a/src/seedu/addressbook/parser/Parser.java +++ b/src/seedu/addressbook/parser/Parser.java @@ -245,7 +245,7 @@ private Command prepareFind(String args) { } // keywords delimited by whitespace - final String[] keywords = matcher.group("keywords").split("\\s+"); + final String[] keywords = matcher.group("keywords").toLowerCase().split("\\s+"); final Set keywordSet = new HashSet<>(Arrays.asList(keywords)); return new FindCommand(keywordSet); } From 0f4cc76c38b4031399ebfb95da78de7bab8f075f Mon Sep 17 00:00:00 2001 From: Ronak Lakhotia Date: Mon, 11 Sep 2017 19:41:21 +0800 Subject: [PATCH 2/5] Chnage I/O files for testing. --- .DS_Store | Bin 0 -> 6148 bytes test/expected.txt | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a56d646a69b7127411d3421deb6f36a83cef875d GIT binary patch literal 6148 zcmeHK-Hy^g6h5;>D58-IBVP8##0w;>?$3oWK^87Z)EF^(p@wZK?lyKin^Kmnh~dU} zSRcVR@eOL5PXQfJgHGvag>5E`0!D$qO#$)lR%k#&;uKN#{SA8|A9^A8z!0p5Xm@`} z!-(h>x#Z&$(}>3Sc!vbq%Zucp?CT-a!Xk*P4kgujahaj&qkdd zs!TL5QDN4rL{F$kd(@?8)Tge-7Byzs7AlG)VZhu^*9Fc>Gz<`1@E6|NLZcDZbquiNkXhkV*k z++;FtyYU-&75F1hjbCyeo{wGcRWO9+({#eF&?k0!u zm5Bz`+HAJf+^##@JM+3T+ud!}ovjBu^SN!;?rc8l?H`?foPC;qK7-;ghFwwG4TVei ziov-KC;d1Id31oeC4b4gTvXZY%H^gp(TxH|fqzf|u|7Cx0$U0fDaxe-ojd{n3z(LM zvG}tfd>n->g^Lt%2gXuYVCu@$5rd`fn0FMfrErmA>P}1@KA6hP)Cq;j?1=A3I19>y|J{qv|9K~KWfU+9{8tLFLZ{zpqa?Mrt`sNsS_f?(O_<;gq{%={6MGMLUN@JAK+4XkMcT>t<8 literal 0 HcmV?d00001 diff --git a/test/expected.txt b/test/expected.txt index 84f7f8bf3..2fe30df24 100644 --- a/test/expected.txt +++ b/test/expected.txt @@ -14,7 +14,7 @@ || Example: delete 1 || Clears address book permanently. || Example: clear -|| find: Finds all persons whose names contain any of the specified keywords (case-sensitive) and displays them as a list with index numbers. +|| find: Finds all persons whose names contain any of the specified keywords (case-insensitive) and displays them as a list with index numbers. || Parameters: KEYWORD [MORE_KEYWORDS]... || Example: find alice bob charlie || list: Displays all persons in the address book as a list with index numbers. @@ -200,7 +200,7 @@ || =================================================== || Enter command: || [Command entered: find] || Invalid command format! -|| find: Finds all persons whose names contain any of the specified keywords (case-sensitive) and displays them as a list with index numbers. +|| find: Finds all persons whose names contain any of the specified keywords (case-insensitive) and displays them as a list with index numbers. || Parameters: KEYWORD [MORE_KEYWORDS]... || Example: find alice bob charlie || =================================================== @@ -213,8 +213,9 @@ || 0 persons listed! || =================================================== || Enter command: || [Command entered: find betsy] +|| 1. Betsy Choo Tags: [secretive] || -|| 0 persons listed! +|| 1 persons listed! || =================================================== || Enter command: || [Command entered: find Betsy] || 1. Betsy Choo Tags: [secretive] From 9d9c4ee4ef647b438b830ee9cb125cc1431c5781 Mon Sep 17 00:00:00 2001 From: Ronak Lakhotia Date: Mon, 11 Sep 2017 20:43:37 +0800 Subject: [PATCH 3/5] Change test files and implement Junit testing for FindCommand --- .../addressbook-level2.jar | Bin 50233 -> 50328 bytes .../addressbook/commands/FindCommandTest.java | 9 ++++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/out/artifacts/addressbook_level2_jar/addressbook-level2.jar b/out/artifacts/addressbook_level2_jar/addressbook-level2.jar index c38fc5765ea27308104e40f4976d7d2cfe83f5e2..ace388ea7f8e3efe3c01170c5bdcbc61237859da 100644 GIT binary patch delta 8240 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 C*IKy% diff --git a/test/java/seedu/addressbook/commands/FindCommandTest.java b/test/java/seedu/addressbook/commands/FindCommandTest.java index f21b1e8e7..d6d1f417a 100644 --- a/test/java/seedu/addressbook/commands/FindCommandTest.java +++ b/test/java/seedu/addressbook/commands/FindCommandTest.java @@ -26,7 +26,7 @@ public void execute() throws IllegalValueException { assertFindCommandBehavior(new String[]{"Amy"}, Arrays.asList(td.amy)); //same word, different case: not matched - assertFindCommandBehavior(new String[]{"aMy"}, Collections.emptyList()); + assertFindCommandBehavior(new String[]{"aMy"},Arrays.asList(td.amy)); //partial word: not matched assertFindCommandBehavior(new String[]{"my"}, Collections.emptyList()); @@ -49,11 +49,18 @@ public void execute() throws IllegalValueException { private void assertFindCommandBehavior(String[] keywords, List expectedPersonList) { FindCommand command = createFindCommand(keywords); CommandResult result = command.execute(); + System.out.println(expectedPersonList.size()); assertEquals(Command.getMessageForPersonListShownSummary(expectedPersonList), result.feedbackToUser); } private FindCommand createFindCommand(String[] keywords) { + //final Set keywordSet = new HashSet<>(Arrays.asList(keywords)); + + for(int i = 0;i keywordSet = new HashSet<>(Arrays.asList(keywords)); FindCommand command = new FindCommand(keywordSet); command.setData(addressBook, Collections.emptyList()); From 899dc9d0a2ab6c36f034b3bc2a3dfdee77144698 Mon Sep 17 00:00:00 2001 From: Ronak Lakhotia Date: Mon, 11 Sep 2017 20:51:14 +0800 Subject: [PATCH 4/5] User Guide Updated --- doc/UserGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/UserGuide.md b/doc/UserGuide.md index fcd5a7121..9a1b1045c 100644 --- a/doc/UserGuide.md +++ b/doc/UserGuide.md @@ -57,14 +57,14 @@ Format: `list` Finds persons whose names contain any of the given keywords.
Format: `find KEYWORD [MORE_KEYWORDS]` -> The search is case sensitive, the order of the keywords does not matter, only the name is searched, +> The search is case insensitive, the order of the keywords does not matter, only the name is searched, and persons matching at least one keyword will be returned (i.e. `OR` search). Examples: * `find John`
Returns `John Doe` but not `john` * `find Betsy Tim John`
- Returns Any person having names `Betsy`, `Tim`, or `John` + Returns Any person having names `Betsy`, `Tim`, or `John` ignoring the case ### Deleting a person : `delete` Deletes the specified person from the address book. Irreversible.
From 55f1fbd172d32f471466790657e241719f70d43e Mon Sep 17 00:00:00 2001 From: Ronak Lakhotia Date: Tue, 3 Oct 2017 11:56:26 +0800 Subject: [PATCH 5/5] Check --- src/seedu/addressbook/Main.java | 1 + test/java/seedu/addressbook/common/UtilsTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/seedu/addressbook/Main.java b/src/seedu/addressbook/Main.java index 3442a7bb4..7b0e2150b 100644 --- a/src/seedu/addressbook/Main.java +++ b/src/seedu/addressbook/Main.java @@ -28,6 +28,7 @@ public class Main { private TextUi ui; private StorageFile storage; private AddressBook addressBook; + private int lol; /** The list of person shown to the user most recently. */ private List lastShownList = Collections.emptyList(); diff --git a/test/java/seedu/addressbook/common/UtilsTest.java b/test/java/seedu/addressbook/common/UtilsTest.java index 012a6715d..6b6592d05 100644 --- a/test/java/seedu/addressbook/common/UtilsTest.java +++ b/test/java/seedu/addressbook/common/UtilsTest.java @@ -36,6 +36,18 @@ public void elementsAreUnique() throws Exception { assertNotUnique(null, "a", "b", null); } + @Test + public void testIsAnyNullObject() throws Exception { + + assertAreNull(); + assertAreNull((Object) null); + + } + private void assertAreNull(Object... objects) { + + assertTrue(Utils.isAnyNull((Object) null)); + } + private void assertAreUnique(Object... objects) { assertTrue(Utils.elementsAreUnique(Arrays.asList(objects))); }