diff --git a/src/seedu/addressbook/Main.java b/src/seedu/addressbook/Main.java index bc18bed7e..3ddd2b64a 100644 --- a/src/seedu/addressbook/Main.java +++ b/src/seedu/addressbook/Main.java @@ -126,6 +126,10 @@ private StorageFile initializeStorage(String[] launchArgs) throws InvalidStorage boolean isStorageFileSpecifiedByUser = launchArgs.length > 0; return isStorageFileSpecifiedByUser ? new StorageFile(launchArgs[0]) : new StorageFile(); } + private static void helloworld() + { + System.out.print("helloworld"); + } } diff --git a/src/seedu/addressbook/commands/FindByPhone.java b/src/seedu/addressbook/commands/FindByPhone.java new file mode 100644 index 000000000..03136e8a1 --- /dev/null +++ b/src/seedu/addressbook/commands/FindByPhone.java @@ -0,0 +1,47 @@ +package seedu.addressbook.commands; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import seedu.addressbook.data.person.ReadOnlyPerson; + +public class FindByPhone extends Command +{ + public static final String COMMAND_WORD = "find by phone number"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + "Finds all persons whose phone number is" + "the specified keywords (case-sensitive) and displays them as a list with index numbers.\n"+ "Parameters: KEYWORD [MORE_KEYWORDS]...\n"+ "Example" + COMMAND_WORD + "alice"; + + private final Set keywords; + + public FindByPhone(Set keywords) + { + this.keywords = keywords; + } + + public Set getKeywords() + { + return new HashSet<>(keywords); + } + + public CommandResult execute() + { + final List personsFound = getPersonsWithNameContainingAnyKeyword(keywords); + return new CommandResult(getMessageForPersonListShownSummary(personsFound), personsFound); + } + + private List getPersonsWithNameContainingAnyKeyword(Set keywords) + { + final List matchedPersons = new ArrayList<>(); + for (ReadOnlyPerson person : addressBook.getAllPersons()) { + final Set PhoneNumber = new HashSet<>(person.getPhone().getPhone()); + if (!Collections.disjoint(PhoneNumber, keywords)) { + matchedPersons.add(person); + } + } + return matchedPersons; + } + +} diff --git a/src/seedu/addressbook/data/AddressBook.java b/src/seedu/addressbook/data/AddressBook.java index 537d35c89..a87489ef7 100644 --- a/src/seedu/addressbook/data/AddressBook.java +++ b/src/seedu/addressbook/data/AddressBook.java @@ -74,4 +74,8 @@ public boolean equals(Object other) { || (other instanceof AddressBook // instanceof handles nulls && this.allPersons.equals(((AddressBook) other).allPersons)); } + private static void helloworld() + { + System.out.print("helloworld"); + } } diff --git a/src/seedu/addressbook/data/person/Person.java b/src/seedu/addressbook/data/person/Person.java index 64551c7fe..6af906ba2 100644 --- a/src/seedu/addressbook/data/person/Person.java +++ b/src/seedu/addressbook/data/person/Person.java @@ -61,6 +61,7 @@ public Address getAddress() { public Set getTags() { return new HashSet<>(tags); } + /** * Replaces this person's tags with the tags in the argument tag set. diff --git a/src/seedu/addressbook/data/person/Phone.java b/src/seedu/addressbook/data/person/Phone.java index 431a7a882..75fd1bcd7 100644 --- a/src/seedu/addressbook/data/person/Phone.java +++ b/src/seedu/addressbook/data/person/Phone.java @@ -2,6 +2,9 @@ import seedu.addressbook.data.exception.IllegalValueException; +import java.util.Arrays; +import java.util.List; + /** * Represents a Person's phone number in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} @@ -35,6 +38,9 @@ public Phone(String phone, boolean isPrivate) throws IllegalValueException { public static boolean isValidPhone(String test) { return test.matches(PHONE_VALIDATION_REGEX); } + public List getPhone() { + return Arrays.asList(value.split("\\s+")); + } @Override public String toString() {