diff --git a/src/seedu/addressbook/AddressBook.java b/src/seedu/addressbook/AddressBook.java index a43b1690..08a8ba2b 100644 --- a/src/seedu/addressbook/AddressBook.java +++ b/src/seedu/addressbook/AddressBook.java @@ -198,9 +198,21 @@ public class AddressBook { * method alone. * ==================================================================== */ + // Week 3 public static void main(String[] args) { showWelcomeMessage(); - processProgramArgs(args); + if (args.length >= 2) { + showToUser(MESSAGE_INVALID_PROGRAM_ARGS); + exitProgram(); + } + + if (args.length == 1) { + setupGivenFileForStorage(args[0]); + } + + if(args.length == 0) { + setupDefaultFileForStorage(); + } loadDataFromStorage(); while (true) { String userCommand = getUserInput(); @@ -254,20 +266,6 @@ private static void echoUserCommand(String userCommand) { * * @param args full program arguments passed to application main method */ - private static void processProgramArgs(String[] args) { - if (args.length >= 2) { - showToUser(MESSAGE_INVALID_PROGRAM_ARGS); - exitProgram(); - } - - if (args.length == 1) { - setupGivenFileForStorage(args[0]); - } - - if(args.length == 0) { - setupDefaultFileForStorage(); - } - } /** * Sets up the storage file based on the supplied file path. @@ -327,7 +325,7 @@ private static void loadDataFromStorage() { * COMMAND LOGIC * =========================================== */ - + // TEst /** * Executes the command as specified by the {@code userInputString} * @@ -353,6 +351,8 @@ public static String executeCommand(String userInputString) { return getUsageInfoForAllCommands(); case COMMAND_EXIT_WORD: executeExitProgramRequest(); + case "sort": + executeSortList(); default: return getMessageForInvalidCommandInput(commandType, getUsageInfoForAllCommands()); } @@ -421,6 +421,7 @@ private static String getMessageForSuccessfulAddPerson(String[] addedPerson) { */ private static String executeFindPersons(String commandArgs) { final Set keywords = extractKeywordsFromFindPersonArgs(commandArgs); + final ArrayList personsFound = getPersonsWithNameContainingAnyKeyword(keywords); showToUser(personsFound); return getMessageForPersonsDisplayedSummary(personsFound); @@ -452,11 +453,14 @@ private static Set extractKeywordsFromFindPersonArgs(String findPersonCo * @param keywords for searching * @return list of persons in full model with name containing some of the keywords */ + // Week 3, made "keyword" and "wordsinname" to string, and to lower case before comparing private static ArrayList getPersonsWithNameContainingAnyKeyword(Collection keywords) { final ArrayList matchedPersons = new ArrayList<>(); for (String[] person : getAllPersonsInAddressBook()) { final Set wordsInName = new HashSet<>(splitByWhitespace(getNameFromPerson(person))); - if (!Collections.disjoint(wordsInName, keywords)) { + String keywordsFinal = keywords.toString().toLowerCase(); + String wordsInNameFinal = wordsInName.toString().toLowerCase(); + if (keywordsFinal.equals(wordsInNameFinal)) { matchedPersons.add(person); } } @@ -548,7 +552,14 @@ private static String executeListAllPersonsInAddressBook() { showToUser(toBeDisplayed); return getMessageForPersonsDisplayedSummary(toBeDisplayed); } - + private static String executeSortList() { + ArrayList sortedUsers = getAllPersonsInAddressBook(); + // Sort here. + Collections.sort(sortedUsers); + + showToUser(sortedUsers); + return getMessageForPersonsDisplayedSummary(sortedUsers); + } /** * Request to terminate the program. * @@ -1169,8 +1180,11 @@ private static String getUsageInfoForExitCommand() { * * @return Priority string without p/ */ + // Week 3, Used refractor extract local variable to field. private static String removePrefixSign(String s, String sign) { - return s.replace(sign, ""); + + String removedPrefix = s.replace(sign, ""); + return removedPrefix; } /**