From 881244a474463276bf5752c7d491dab3deb08676 Mon Sep 17 00:00:00 2001 From: Hengyu Date: Fri, 10 Nov 2017 16:40:37 +0800 Subject: [PATCH] Fixed some tests, recollated code --- .gitignore | 2 + collated/main/awarenessxz.md | 69 ++++--- collated/main/hengyu95.md | 83 +++++++-- collated/main/ritchielq-reuse.md | 20 ++ collated/main/ritchielq.md | 21 +++ collated/main/wenzongteo.md | 14 +- collated/test/awarenessxz.md | 173 ++++++++++++++---- collated/test/hengyu95.md | 35 +++- docs/UserGuide.adoc | 8 +- docs/team/hengyu.adoc | 18 +- .../systemtests/InstaCommandSystemTest.java | 4 +- 11 files changed, 362 insertions(+), 85 deletions(-) diff --git a/.gitignore b/.gitignore index 49b1278aa325..958221658157 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ classes/ /bin/ src/main/resources/docs/ out/ +collate.bat +Collate-TUI.jar diff --git a/collated/main/awarenessxz.md b/collated/main/awarenessxz.md index 76f1c9c7babf..81c3f45a9aba 100644 --- a/collated/main/awarenessxz.md +++ b/collated/main/awarenessxz.md @@ -234,6 +234,7 @@ public class EmailManager extends ComponentManager implements Email { private final EmailSend emailSend; private String emailStatus; + private String emailLoginStatus; public EmailManager() { logger.fine("Initializing Default Email component"); @@ -242,13 +243,14 @@ public class EmailManager extends ComponentManager implements Email { this.emailCompose = new EmailCompose(); this.emailSend = new EmailSend(); this.emailStatus = ""; + this.emailLoginStatus = "You are not logged in to any Gmail account."; } @Override public void composeEmail(MessageDraft message) { emailCompose.composeEmail(message); - this.emailStatus = "drafted"; + this.emailStatus = "drafted.\n"; } @Override @@ -258,7 +260,7 @@ public class EmailManager extends ComponentManager implements Email { @Override public String getEmailStatus() { - return this.emailStatus; + return this.emailStatus + this.emailLoginStatus; } @Override @@ -269,13 +271,19 @@ public class EmailManager extends ComponentManager implements Email { emailSend.sendEmail(emailCompose, emailLogin); //reset the email draft after email have been sent - this.emailStatus = "sent"; + this.emailStatus = "sent "; + this.emailLoginStatus = "using " + emailLogin.getEmailLogin(); resetData(); } @Override public void loginEmail(String [] loginDetails) throws EmailLoginInvalidException { emailLogin.loginEmail(loginDetails); + if (emailLogin.isUserLogin()) { + this.emailLoginStatus = "You are logged in to " + emailLogin.getEmailLogin(); + } else { + this.emailLoginStatus = "You are not logged in to any Gmail account."; + } } /** @@ -290,7 +298,8 @@ public class EmailManager extends ComponentManager implements Email { @Override public void clearEmailDraft() { resetData(); - this.emailStatus = "cleared"; + this.emailStatus = "cleared."; + this.emailLoginStatus = ""; } /** reset Email Draft Data **/ @@ -926,9 +935,6 @@ public class EmailCommandParser implements Parser { */ public class FindCommandParser implements Parser { -``` -###### \java\seedu\address\logic\parser\FindCommandParser.java -``` java /** * Parses the given {@code String} of arguments in the context of the FindCommand * and returns an FindCommand object for execution. @@ -1256,8 +1262,7 @@ public class LeftDisplayPanel extends UiPart { private PersonListPanel personListPanel; private PersonListBirthdatePanel birthdayListPanel; private MessageDisplay messageDisplay; - private boolean toggle; - private boolean toggle2; + private int tabIndex; @FXML private TabPane leftDisplayPanel; @@ -1293,24 +1298,32 @@ public class LeftDisplayPanel extends UiPart { messageDisplay = new MessageDisplay(); messageDraftPanelPlaceholder.getChildren().add(messageDisplay.getRoot()); - toggle = true; - toggle2 = true; + tabIndex = 0; } /** * Toggle Tabs */ - public void toggleTabs() { - if (toggle && toggle2) { - leftDisplayPanel.getSelectionModel().select(emailDraftTab); - toggle2 = !toggle2; - } else if (toggle && !toggle2) { - leftDisplayPanel.getSelectionModel().select(birthdateTab); - toggle2 = !toggle2; - toggle = false; + public void toggleTabs(int index) { + if (index >= 0) { + tabIndex = index; } else { + tabIndex = (tabIndex + 1) % 3; + } + + switch (tabIndex) { + case 0: leftDisplayPanel.getSelectionModel().select(personListTab); - toggle = true; + break; + case 1: + leftDisplayPanel.getSelectionModel().select(emailDraftTab); + break; + case 2: + leftDisplayPanel.getSelectionModel().select(birthdateTab); + break; + default: + assert false : "This should not happen"; + break; } } @@ -1318,16 +1331,22 @@ public class LeftDisplayPanel extends UiPart { * Scrolls one page down */ public void scrollDown() { - personListPanel.scrollDown(); - birthdayListPanel.scrollDown(); + if (tabIndex == 0) { + personListPanel.scrollDown(); + } else if (tabIndex == 2) { + birthdayListPanel.scrollDown(); + } } /** * Scrolls one page up */ public void scrollUp() { - personListPanel.scrollUp(); - birthdayListPanel.scrollUp(); + if (tabIndex == 0) { + personListPanel.scrollUp(); + } else if (tabIndex == 2) { + birthdayListPanel.scrollUp(); + } } public PersonListPanel getPersonListPanel() { @@ -1343,7 +1362,7 @@ public class LeftDisplayPanel extends UiPart { */ @FXML private void handleToggleTabs() { - leftDisplayPanel.toggleTabs(); + leftDisplayPanel.toggleTabs(-1); } ``` diff --git a/collated/main/hengyu95.md b/collated/main/hengyu95.md index 65303a7be00a..e1a0d4d5fa5c 100644 --- a/collated/main/hengyu95.md +++ b/collated/main/hengyu95.md @@ -1,10 +1,51 @@ # hengyu95 +###### \java\seedu\address\commons\events\model\BackupAddressBookEvent.java +``` java +/** Indicates that a backup command was used*/ +public class BackupAddressBookEvent extends BaseEvent { + + public final ReadOnlyAddressBook data; + + public BackupAddressBookEvent(ReadOnlyAddressBook data) { + this.data = data; + } + + @Override + public String toString() { + return "number of persons " + data.getPersonList().size() + ", number of tags " + data.getTagList().size(); + } +} +``` +###### \java\seedu\address\logic\commands\BackupCommand.java +``` java +public class BackupCommand extends Command { + + public static final String COMMAND_WORD = "backup"; + + public static final String COMMAND_ALIAS = "b"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Saves a backup copy of Augustine data.\n"; + + public static final String MESSAGE_SUCCESS = "Data backed up at \"/data/addressbook-backup.xml\"!"; + + public BackupCommand() { + } + + @Override + public CommandResult execute() { + model.backupAddressBook(); + return new CommandResult(MESSAGE_SUCCESS); + } +} +``` ###### \java\seedu\address\logic\commands\InstaCommand.java ``` java public class InstaCommand extends Command { public static final String COMMAND_WORD = "insta"; public static final String COMMAND_ALIAS = "i"; + public static final int INSTA_TAB = 2; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Opens the Instagram account of the person identified by the index number.\n" + "Parameters: INDEX (must be a positive integer)\n" @@ -35,7 +76,7 @@ public class InstaCommand extends Command { throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); } - BrowserPanel.setInstaBoolean(true); + EventsCenter.getInstance().post(new BrowserPanelChangeActiveTabEvent(INSTA_TAB)); ReadOnlyPerson personToEdit = lastShownList.get(targetIndex.getZeroBased()); @@ -329,9 +370,35 @@ public class UserId { +``` +###### \java\seedu\address\storage\StorageManager.java +``` java + @Override + public void backupAddressBook(ReadOnlyAddressBook addressBook) throws IOException { + String path = addressBookStorage.getAddressBookFilePath(); + saveAddressBook(addressBook, path.substring(0, path.indexOf(".xml")) + "-backup.xml"); + } +``` +###### \java\seedu\address\storage\StorageManager.java +``` java + @Override + @Subscribe + public void handleBackupAddressBookEvent(BackupAddressBookEvent event) { + logger.info(LogsCenter.getEventHandlingLogMessage(event, "Backup requested, saving to file")); + try { + backupAddressBook(event.data); + } catch (IOException e) { + raise(new DataSavingExceptionEvent(e)); + } + } + +} ``` ###### \java\seedu\address\ui\BrowserPanel.java ``` java + /** + * Loads Instagram page on Instagram tab + */ public void loadInsta(ReadOnlyPerson person) { if (person.getUserId().value.equals("-")) { @@ -341,18 +408,12 @@ public class UserId { .append("https://www.instagram.com/").append(person.getUserId()).toString())); } - if (insta) { - browserPanel.getSelectionModel().select(instaTab); - } else { - browserPanel.getSelectionModel().select(nusModsTab); - } } - /** - * Chooses between which of the two tabs to display - */ - public static void setInstaBoolean(boolean set) { - insta = set; + @Subscribe + private void handlePersonPanelDeselectionEvent(BrowserPanelChangeActiveTabEvent event) { + activeTab = event.targetTab; + setActiveTab(); } ``` diff --git a/collated/main/ritchielq-reuse.md b/collated/main/ritchielq-reuse.md index ea57c0aec7ed..87fe4950f9d7 100644 --- a/collated/main/ritchielq-reuse.md +++ b/collated/main/ritchielq-reuse.md @@ -1,4 +1,24 @@ # ritchielq-reuse +###### \java\seedu\address\commons\events\ui\BrowserPanelChangeActiveTabEvent.java +``` java +/** + * Indicates a request to change active tab for browser panel + */ +public class BrowserPanelChangeActiveTabEvent extends BaseEvent { + + public final int targetTab; + + public BrowserPanelChangeActiveTabEvent(int targetTab) { + this.targetTab = targetTab; + } + + @Override + public String toString() { + return this.getClass().getSimpleName(); + } + +} +``` ###### \java\seedu\address\commons\events\ui\DeselectEvent.java ``` java /** diff --git a/collated/main/ritchielq.md b/collated/main/ritchielq.md index cb6fd488176e..568954c7934a 100644 --- a/collated/main/ritchielq.md +++ b/collated/main/ritchielq.md @@ -43,6 +43,7 @@ public class NusmodsCommand extends UndoableCommand { public static final String COMMAND_WORD = "nusmods"; public static final String COMMAND_ALIAS = "nm"; + public static final int NUSMODS_TAB = 1; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edit nusmods details of person identified " + "by the index number used in the last person listing.\n" @@ -103,6 +104,7 @@ public class NusmodsCommand extends UndoableCommand { } model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + EventsCenter.getInstance().post(new BrowserPanelChangeActiveTabEvent(NUSMODS_TAB)); EventsCenter.getInstance().post(new JumpToListRequestEvent(index)); return new CommandResult(String.format(MESSAGE_NUSMODS_SUCCESS, editedPerson.getNusModules().toString())); } @@ -857,6 +859,25 @@ public class XmlAdaptedNusModule { semester = config.getSemester(); } +``` +###### \java\seedu\address\ui\BrowserPanel.java +``` java + /** + * Sets active tab to {@code activeTab} + */ + private void setActiveTab() { + switch (activeTab) { + case INSTA_TAB: + browserPanel.getSelectionModel().select(instaTab); + break; + case NUSMODS_TAB: + browserPanel.getSelectionModel().select(nusModsTab); + break; + default: + break; + } + } + ``` ###### \java\seedu\address\ui\MainWindow.java ``` java diff --git a/collated/main/wenzongteo.md b/collated/main/wenzongteo.md index c5a3a023c501..5f2cf8c08ae9 100644 --- a/collated/main/wenzongteo.md +++ b/collated/main/wenzongteo.md @@ -115,9 +115,10 @@ public class Photo { */ public static final String PHOTO_VALIDATION_REGEX = "([^\\s]+[\\s\\w]*(\\.(?i)(jpg|jpeg|))$)"; public static final String URL_REGEX = "\\b(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"; + public static final String DEFAULT_PHOTO = "data/images/default.jpeg"; + public static final String tempStorage = "data/temporary.jpg"; public final String value; - public final String tempStorage = "data/temporary.jpg"; private final String hash; /** @@ -155,14 +156,19 @@ public class Photo { /** * Photo entered by the app that does not require validation as Image should already exist. + * If Photo entered by the app does not exist, default image will used instead. * @param photo path to the image stored. * @param num used for overloading constructor. */ public Photo(String photo, int num) { + File image = new File(photo); this.value = photo; - MessageDigest hashing; + try { - File image = new File(photo); + if (!FileUtil.isFileExists(image)) { + Files.copy(Paths.get(DEFAULT_PHOTO), Paths.get(photo), StandardCopyOption.REPLACE_EXISTING); + } else { + } this.hash = generateHash(image); } catch (NoSuchAlgorithmException nsa) { throw new AssertionError("Algorithm should exist"); @@ -221,7 +227,7 @@ public class Photo { } catch (MalformedURLException mue) { throw new IllegalValueException(MESSAGE_LINK_ERROR); } catch (IOException ioe) { - throw new AssertionError("Read / Write have issue"); + throw new AssertionError("Read / Write issue"); } catch (Exception e) { throw new AssertionError("Impossible to reach here"); } diff --git a/collated/test/awarenessxz.md b/collated/test/awarenessxz.md index 725f6e2257c6..22465c451d14 100644 --- a/collated/test/awarenessxz.md +++ b/collated/test/awarenessxz.md @@ -62,13 +62,23 @@ public class EmailSubjectDisplayHandle extends NodeHandle