diff --git a/README.md b/README.md
index 7a50760482c..b20684a1eac 100644
--- a/README.md
+++ b/README.md
@@ -7,30 +7,30 @@
-* This is a desktop Address Book application. It has a GUI but most of the user interactions happen using
+* This is a desktop Address Book application. It has a GUI but most of the user interactions happen using
a CLI (Command Line Interface).
-* It is a Java sample application intended for students learning Software Engineering while using Java as
- the main programming language.
-* It is **written in OOP fashion**. It provides a **reasonably well-written** code example that is
- **significantly bigger** (around 6 KLoC)than what students usually write in beginner-level SE modules.
+* It is a Java sample application intended for students learning Software Engineering while using Java as
+ the main programming language.
+* It is **written in OOP fashion**. It provides a **reasonably well-written** code example that is
+ **significantly bigger** (around 6 KLoC)than what students usually write in beginner-level SE modules.
* What's different from [level 3](https://github.com/se-edu/addressbook-level3):
* A more sophisticated GUI that includes a list panel and an in-built Browser.
* More test cases, including automated GUI testing.
* Support for *Build Automation* using Gradle and for *Continuous Integration* using Travis CI.
-
+
#### Site Map
-* [User Guide](docs/UserGuide.md)
-* [Developer Guide](docs/DeveloperGuide.md)
-* [Learning Outcomes](docs/LearningOutcomes.md)
+* [User Guide](docs/UserGuide.md)
+* [Developer Guide](docs/DeveloperGuide.md)
+* [Learning Outcomes](docs/LearningOutcomes.md)
* [About Us](docs/AboutUs.md)
* [Contact Us](docs/ContactUs.md)
#### Acknowledgements
-* Some parts of this sample application were inspired by the excellent
- [Java FX tutorial](http://code.makery.ch/library/javafx-8-tutorial/) by *Marco Jakob*.
+* Some parts of this sample application were inspired by the excellent
+ [Java FX tutorial](http://code.makery.ch/library/javafx-8-tutorial/) by *Marco Jakob*.
#### Licence : [MIT](LICENSE)
diff --git a/build.gradle b/build.gradle
index 9d03209f31e..eaf71e032c9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,7 @@
* For more details take a look at the Java Quickstart chapter in the Gradle
* user guide available at http://gradle.org/docs/2.2.1/userguide/tutorial_java_projects.html
*/
-
+
plugins {
id "com.github.kt3k.coveralls" version "2.4.0"
id "com.github.johnrengelman.shadow" version '1.2.3'
@@ -72,7 +72,7 @@ allprojects {
}
testCompile "org.testfx:openjfx-monocle:$monocleVersion"
}
-
+
sourceSets {
main {
java {
diff --git a/docs/AboutUs.md b/docs/AboutUs.md
index 5a76ca17b8c..8d2010e02e3 100644
--- a/docs/AboutUs.md
+++ b/docs/AboutUs.md
@@ -12,36 +12,36 @@ We are a team based in the [School of Computing, National University of Singapor
#### [Joshua Lee](http://github.com/lejolly)
-Role: Developer
+Role: Developer
Responsibilities: UI
-----
-#### [Leow Yijin](http://github.com/yijinl)
+#### [Leow Yijin](http://github.com/yijinl)
-Role: Developer
+Role: Developer
Responsibilities: Data
-----
#### [Martin Choo](http://github.com/m133225)
-Role: Developer
+Role: Developer
Responsibilities: Dev Ops
-----
#### [Thien Nguyen](https://github.com/ndt93)
- Role: Developer
+ Role: Developer
Responsibilities: Threading
-
+
-----
-#### [You Liang](http://github.com/yl-coder)
+#### [You Liang](http://github.com/yl-coder)
- Role: Developer
+ Role: Developer
Responsibilities: UI
-
+
-----
# Contributors
diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md
index 922aa47318c..54c176ab99a 100644
--- a/docs/DeveloperGuide.md
+++ b/docs/DeveloperGuide.md
@@ -1,4 +1,4 @@
-# AddressBook Level 4 - Developer Guide
+# AddressBook Level 4 - Developer Guide
By : `Team SE-EDU` Since: `Jun 2016` Licence: `MIT`
@@ -25,7 +25,7 @@ By : `Team SE-EDU` Since: `Jun 2016` &nbs
> Having any Java 8 version is not enough.
This app will not work with earlier versions of Java 8.
-
+
2. **Eclipse** IDE
3. **e(fx)clipse** plugin for Eclipse (Do the steps 2 onwards given in
[this page](http://www.eclipse.org/efxclipse/install.html#for-the-ambitious))
@@ -36,7 +36,7 @@ By : `Team SE-EDU` Since: `Jun 2016` &nbs
### 1.2. Importing the project into Eclipse
0. Fork this repo, and clone the fork to your computer
-1. Open Eclipse (Note: Ensure you have installed the **e(fx)clipse** and **buildship** plugins as given
+1. Open Eclipse (Note: Ensure you have installed the **e(fx)clipse** and **buildship** plugins as given
in the prerequisites above)
2. Click `File` > `Import`
3. Click `Gradle` > `Gradle Project` > `Next` > `Next`
@@ -47,9 +47,9 @@ By : `Team SE-EDU` Since: `Jun 2016` &nbs
> * Depending on your connection speed and server load, it can even take up to 30 minutes for the set up to finish
(This is because Gradle downloads library files from servers during the project set up process)
> * If Eclipse auto-changed any settings files during the import process, you can discard those changes.
-
+
### 1.3. Configuring Checkstyle
-1. Click `Project` -> `Properties` -> `Checkstyle` -> `Local Check Configurations` -> `New...`
+1. Click `Project` -> `Properties` -> `Checkstyle` -> `Local Check Configurations` -> `New...`
2. Choose `External Configuration File` under `Type`
3. Enter an arbitrary configuration name e.g. addressbook
4. Import checkstyle configuration file found at `config/checkstyle/checkstyle.xml`
@@ -57,21 +57,21 @@ By : `Team SE-EDU` Since: `Jun 2016` &nbs
6. Tick and select `files from packages`, click `Change...`, and select the `resources` package
7. Click OK twice. Rebuild project if prompted
-> Note to click on the `files from packages` text after ticking in order to enable the `Change...` button
+> Note to click on the `files from packages` text after ticking in order to enable the `Change...` button
### 1.4. Troubleshooting project setup
**Problem: Eclipse reports compile errors after new commits are pulled from Git**
-* Reason: Eclipse fails to recognize new files that appeared due to the Git pull.
-* Solution: Refresh the project in Eclipse:
+* Reason: Eclipse fails to recognize new files that appeared due to the Git pull.
+* Solution: Refresh the project in Eclipse:
Right click on the project (in Eclipse package explorer), choose `Gradle` -> `Refresh Gradle Project`.
-
+
**Problem: Eclipse reports some required libraries missing**
-* Reason: Required libraries may not have been downloaded during the project import.
+* Reason: Required libraries may not have been downloaded during the project import.
* Solution: [Run tests using Gradle](UsingGradle.md) once (to refresh the libraries).
-
+
## 2. Design
@@ -114,7 +114,7 @@ interface and exposes its functionality using the `LogicManager.java` class.
_Figure 2.1.2 : Class Diagram of the Logic Component_
-#### Events-Driven nature of the design
+#### Events-Driven nature of the design
The _Sequence Diagram_ below shows how the components interact for the scenario where the user issues the
command `delete 1`.
@@ -131,7 +131,7 @@ being saved to the hard disk and the status bar of the UI being updated to refle
_Figure 2.1.3b : Component interactions for `delete 1` command (part 2)_
> Note how the event is propagated through the `EventsCenter` to the `Storage` and `UI` without `Model` having
- to be coupled to either of them. This is an example of how this Event Driven approach helps us reduce direct
+ to be coupled to either of them. This is an example of how this Event Driven approach helps us reduce direct
coupling between components.
The sections below give more details of each component.
@@ -237,7 +237,7 @@ and logging destinations.
### 3.2. Configuration
-Certain properties of the application can be controlled (e.g App name, logging level) through the configuration file
+Certain properties of the application can be controlled (e.g App name, logging level) through the configuration file
(default: `config.json`):
@@ -257,36 +257,36 @@ Tests can be found in the `./src/test/java` folder.
We have two types of tests:
-1. **GUI Tests** - These are _System Tests_ that test the entire App by simulating user actions on the GUI.
+1. **GUI Tests** - These are _System Tests_ that test the entire App by simulating user actions on the GUI.
These are in the `guitests` package.
-
+
2. **Non-GUI Tests** - These are tests not involving the GUI. They include,
1. _Unit tests_ targeting the lowest level methods/classes.
e.g. `seedu.address.commons.UrlUtilTest`
- 2. _Integration tests_ that are checking the integration of multiple code units
+ 2. _Integration tests_ that are checking the integration of multiple code units
(those code units are assumed to be working).
e.g. `seedu.address.storage.StorageManagerTest`
- 3. Hybrids of unit and integration tests. These test are checking multiple code units as well as
+ 3. Hybrids of unit and integration tests. These test are checking multiple code units as well as
how the are connected together.
e.g. `seedu.address.logic.LogicManagerTest`
-
+
##### Headless GUI Testing
Thanks to the [TestFX](https://github.com/TestFX/TestFX) library we use,
- our GUI tests can be run in the _headless_ mode.
+ our GUI tests can be run in the _headless_ mode.
In the headless mode, GUI tests do not show up on the screen.
That means the developer can do other things on the Computer while the tests are running.
See [UsingGradle.md](UsingGradle.md#running-tests) to learn how to run tests in headless mode.
-
+
### 4.1. Troubleshooting tests
**Problem: Tests fail because NullPointException when AssertionError is expected**
-
- * Reason: Assertions are not enabled for JUnit tests.
+
+ * Reason: Assertions are not enabled for JUnit tests.
This can happen if you are not using a recent Eclipse version (i.e. _Neon_ or later)
- * Solution: Enable assertions in JUnit tests as described
+ * Solution: Enable assertions in JUnit tests as described
[here](http://stackoverflow.com/questions/2522897/eclipse-junit-ea-vm-option).
Delete run configurations created when you ran tests earlier.
-
+
## 5. Dev Ops
### 5.1. Build Automation
@@ -301,12 +301,12 @@ See [UsingTravis.md](UsingTravis.md) and [UsingAppVeyor.md](UsingAppVeyor.md) fo
### 5.3. Making a Release
Here are the steps to create a new release.
-
+
1. Generate a JAR file [using Gradle](UsingGradle.md#creating-the-jar-file).
2. Tag the repo with the version number. e.g. `v0.1`
- 2. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/)
+ 2. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/)
and upload the JAR file you created.
-
+
### 5.4. Managing Dependencies
A project often depends on third-party libraries. For example, Address Book depends on the
@@ -363,7 +363,7 @@ Use case ends.
1. Should work on any [mainstream OS](#mainstream-os) as long as it has Java `1.8.0_60` or higher installed.
2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.
-3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands)
+3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands)
should be able to accomplish most of the tasks faster using commands than using the mouse.
{More to be added}
diff --git a/docs/LearningOutcomes.md b/docs/LearningOutcomes.md
index 9c90be67f2e..371786f6273 100644
--- a/docs/LearningOutcomes.md
+++ b/docs/LearningOutcomes.md
@@ -29,7 +29,7 @@ _Architecture Diagrams_ and high-level sequence diagrams.
## Use Event-Driven Programming `[LO-EventDriven]`
-Note how the [Developer Guide](DeveloperGuide.md#architecture) uses events to communicate with components
+Note how the [Developer Guide](DeveloperGuide.md#architecture) uses events to communicate with components
without needing a direct coupling. Also note how the `EventsCenter` class acts as an event dispatcher to
facilitate communication between event creators and event consumers.
@@ -43,8 +43,8 @@ is given in the [`Logic.java`](../src/main/java/seedu/address/logic/Logic.java)
**Resources**
-* [A three-minutes video](https://www.youtube.com/watch?v=Un80XoRT1ME) of designing architecture of and
- discovering component APIs for a Game of Tic-Tac-Toe.
+* [A three-minutes video](https://www.youtube.com/watch?v=Un80XoRT1ME) of designing architecture of and
+ discovering component APIs for a Game of Tic-Tac-Toe.
------------------------------------------------------------------------------------------------------
@@ -54,17 +54,17 @@ Note how the AddressBook app uses Java `assert`s to verify assumptions.
**Resources**
- * [Programming With Assertions](http://docs.oracle.com/javase/6/docs/technotes/guides/language/assert.html) - a
- guide from Oracle.
+ * [Programming With Assertions](http://docs.oracle.com/javase/6/docs/technotes/guides/language/assert.html) - a
+ guide from Oracle.
* [How to enable assertions in Eclipse](http://stackoverflow.com/questions/5509082/eclipse-enable-assertions)
-
+
#### Exercise: Add more assertions
- * Make sure assertions are enabled in Eclipse by forcing an assertion failure (e.g. add `assert false;` somewhere in
+ * Make sure assertions are enabled in Eclipse by forcing an assertion failure (e.g. add `assert false;` somewhere in
the code and run the code to ensure the runtime reports an assertion failure).
-
+
* Add more assertions to AddressBook as you see fit.
-
+
------------------------------------------------------------------------------------------------------
## Use Logging `[LO-Logging]`
@@ -75,9 +75,9 @@ Note [how the AddressBook app uses Java's `java.util.log` package to do logging]
* Tutorials
* [Logging using java.util.logging](http://tutorials.jenkov.com/java-logging/index.html) - a tutorial by Jakob Jenkov
- * [Logging tutorial](http://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) - a more detailed
+ * [Logging tutorial](http://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) - a more detailed
tutorial from Oracle.
- * Logging best practices
+ * Logging best practices
* [Apache Commons Logging guide](http://commons.apache.org/proper/commons-logging/guide.html#Message_PrioritiesLevels)
* [10 Tips for Proper Application Logging](https://www.javacodegeeks.com/2011/01/10-tips-proper-application-logging.html)
* [Base 22 Java Logging Standards and Guidelines](https://wiki.base22.com/display/btg/Java+Logging+Standards+and+Guidelines)
@@ -85,18 +85,18 @@ Note [how the AddressBook app uses Java's `java.util.log` package to do logging]
#### Exercise: Add more logging
Add more logging to AddressBook as you see fit.
-
+
------------------------------------------------------------------------------------------------------
-
+
## Use Defensive Coding `[LO-DefensiveCoding]`
-
- Note how AddressBook uses the `ReadOnly*` interfaces to prevent objects being modified by clients who are not
+
+ Note how AddressBook uses the `ReadOnly*` interfaces to prevent objects being modified by clients who are not
supposed to modify them.
-
+
#### Exercise: identify more places for defensive coding
Analyze the AddressBook code/design to identify,
-
+
* where defensive coding is used
* where the code can be more defensive
@@ -110,13 +110,13 @@ Note [how the AddressBook app uses Gradle to automate build tasks](UsingGradle.m
* Tutorials
* [Getting started with Gradle (Java)](https://gradle.org/getting-started-gradle-java/) - a tutorial from the Gradle team
- * [Another tutorial](http://www.tutorialspoint.com/gradle/) - from TutorialPoint
-
+ * [Another tutorial](http://www.tutorialspoint.com/gradle/) - from TutorialPoint
+
#### Exercise: Use gradle to run tasks
- * Use gradle to do these tasks (instructions are [here](UsingGradle.md))
+ * Use gradle to do these tasks (instructions are [here](UsingGradle.md))
: Run all tests in headless mode, build the jar file.
-
+
#### Exercise: Use gradle to manage dependencies
* Note how the build script `build.gradle` file manages third party dependencies such as ControlsFx.
@@ -133,11 +133,11 @@ Note [how the AddressBook app uses Travis to perform Continuous Integration](Usi
* Tutorials
* [Getting started with Travis](https://docs.travis-ci.com/user/getting-started/) - a tutorial from the Travis team
-
+
#### Exercise: Use Travis in your own project
* Set up Travis to perform CI on your own project.
-
+
------------------------------------------------------------------------------------------------------
## Use Code Coverage `[LO-CodeCoverage]`
@@ -147,31 +147,31 @@ Note how our CI server [Travis uses Coveralls to report code coverage](UsingTrav
After setting up Coveralls for your project, you can visit Coveralls website to find details about the
coverage of code pushed to your repo. [Here](https://coveralls.io/github/se-edu/addressbook-level4?branch=master) is an example.
-
+
#### Exercise: Use EclEmma to measure coverage locally
- * Install the [EclEmma Eclipse Plugin](http://www.eclemma.org/) in your computer and use that to find code that
- is not covered by the tests. This plugin can help you to find coverage details even before you push code
+ * Install the [EclEmma Eclipse Plugin](http://www.eclemma.org/) in your computer and use that to find code that
+ is not covered by the tests. This plugin can help you to find coverage details even before you push code
to the remote repo.
-
+
------------------------------------------------------------------------------------------------------
## Apply Test Case Design Heuristics `[LO-TestCaseDesignHeuristics]`
The [`StringUtilTest.java`](../src/test/java/seedu/address/commons/util/StringUtilTest.java) class gives some examples
of how to use _Equivalence Partitions_, _Boundary Value Analysis_, and _Test Input Combination Heuristics_ to improve
-the efficiency and effectiveness of test cases testing the
+the efficiency and effectiveness of test cases testing the
[`StringUtil.java`](../src/main/java/seedu/address/commons/util/StringUtil.java) class.
-
+
#### Exercise: Apply Test Case Design Heuristics to other places
* Find answers to these questions:
* What is an Equivalence Partition? How does it help to improve E&E of testing?
* What is Boundary Value Analysis? How does it help to improve E&E of testing?
- * What are the heuristics that can be used when combining multiple test inputs?
+ * What are the heuristics that can be used when combining multiple test inputs?
* Use the test case design heuristics mentioned above to improve test cases in other places.
-
+
------------------------------------------------------------------------------------------------------
## Write Integration Tests `[LO-IntegrationTests]`
@@ -182,13 +182,13 @@ Consider the [`StorageManagerTest.java`](../src/test/java/seedu/address/storage/
The `StorageManager` class is correctly wired to its dependencies.
* Test method `handleAddressBookChangedEvent_exceptionThrown_eventRaised()` is a unit test because it uses
- _dependency injection_ to isolate the SUT `StorageManger::handleAddressBookChangedEvent(...)` from its
+ _dependency injection_ to isolate the SUT `StorageManger::handleAddressBookChangedEvent(...)` from its
dependencies.
-Compare the above with [`LogicManagerTest`](../src/test/java/seedu/address/logic/LogicManagerTest.java).
-Many of the tests in that class (e.g. `execute_add_*` methods) tests are neither integration nor unit tests.
+Compare the above with [`LogicManagerTest`](../src/test/java/seedu/address/logic/LogicManagerTest.java).
+Many of the tests in that class (e.g. `execute_add_*` methods) tests are neither integration nor unit tests.
They are a _integration + unit_ tests because they not only checks if the LogicManager is correctly wired to its
-dependencies, but also checks the working of its dependencies. For example, the following two lines test the
+dependencies, but also checks the working of its dependencies. For example, the following two lines test the
the `LogicManager` but also the `Parser`.
```java
@@ -200,97 +200,97 @@ public void execute_add_invalidArgsFormat() throws Exception {
...
}
```
-
+
#### Exercise: Write unit and integration tests for the same method.
* Write a unit test for a a high-level methods somewhere in the code base.
* Write an integration test for the same method.
-
+
------------------------------------------------------------------------------------------------------
## Perform System Testing `[LO-SystemTesting]`
-Note how tests below `src/test/java/guitests` package
-(e.g [`AddCommandTest.java`](../src/test/java/guitests/AddCommandTest.java)) are system tests because they test
+Note how tests below `src/test/java/guitests` package
+(e.g [`AddCommandTest.java`](../src/test/java/guitests/AddCommandTest.java)) are system tests because they test
the entire system end-to-end.
-
-#### Exercise: Write more system tests
+
+#### Exercise: Write more system tests
* Add some more system tests to the existing system tests.
-
+
------------------------------------------------------------------------------------------------------
## Automate GUI Testing `[LO-AutomateGuiTesting]`
-Note how this project uses TextFX library to automate GUI testing, including
+Note how this project uses TextFX library to automate GUI testing, including
[_headless_ GUI testing](DeveloperGuide.md#headless-gui-testing).
-
-#### Exercise: Write more automated GUI tests
+
+#### Exercise: Write more automated GUI tests
* Add some more automated GUI tests.
-
+
------------------------------------------------------------------------------------------------------
## Apply Design Patterns `[LO-DesignPatterns]`
Here are some example design patterns used in the code base.
-* **Singleton Pattern** : [`EventsCenter.java`](../src/main/java/seedu/address/commons/core/EventsCenter.java) is
+* **Singleton Pattern** : [`EventsCenter.java`](../src/main/java/seedu/address/commons/core/EventsCenter.java) is
Singleton class. Its single instance can be accessed using the `EventsCenter.getInsance()` method.
-* **Facade Pattern** : [`StorageManager.java`](../src/main/java/seedu/address/storage/StorageManager.java) is
- not only shielding the internals of the Storage component from outsiders, it is mostly redirecting methods calls
- to its internal components (i.e. minimal logic in the class itself). Therefore, `StorageManager` can be considered a
+* **Facade Pattern** : [`StorageManager.java`](../src/main/java/seedu/address/storage/StorageManager.java) is
+ not only shielding the internals of the Storage component from outsiders, it is mostly redirecting methods calls
+ to its internal components (i.e. minimal logic in the class itself). Therefore, `StorageManager` can be considered a
Facade class.
-* **Command Pattern** : The [`Command.java`](../src/main/java/seedu/address/logic/commands/Command.java) and its
+* **Command Pattern** : The [`Command.java`](../src/main/java/seedu/address/logic/commands/Command.java) and its
sub classes implement the Command Pattern.
-* **Observer Pattern** : The [event driven mechanism](DeveloperGuide.md#events-driven-nature-of-the-design) used by
+* **Observer Pattern** : The [event driven mechanism](DeveloperGuide.md#events-driven-nature-of-the-design) used by
this code base employs the Observer pattern.
For example, objects that are interested in events need to have the `@Subscribe` annotation in the class (this is
similar to implementing an `<>` interface) and register with the `EventsCenter`. When something noteworthy
happens, an event is raised and the `EventsCenter` notifies all relevant subscribers. Unlike in the
- Observer pattern in which the `<>` class is notifying all `<>` objects, here the
+ Observer pattern in which the `<>` class is notifying all `<>` objects, here the
`<>` classes simply raises an event and the `EventsCenter` takes care of the notifications.
-* **MVC Pattern** :
+* **MVC Pattern** :
* The 'View' part of the application is mostly in the `.fxml` files in the `src/main/resources/view`
- folder.
+ folder.
* `Model` component contains the 'Model'.
- * Sub classes of [`UiPart`](../src/main/java/seedu/address/ui/UiPart.java) (e.g. `PersonListPanel` )
- act as 'Controllers', each controlling some part of the UI and communicating with the 'Model' via a `Logic`
- component which sits between the 'Controller' and the 'Model'.
+ * Sub classes of [`UiPart`](../src/main/java/seedu/address/ui/UiPart.java) (e.g. `PersonListPanel` )
+ act as 'Controllers', each controlling some part of the UI and communicating with the 'Model' via a `Logic`
+ component which sits between the 'Controller' and the 'Model'.
* **Abstraction Occurrence Pattern** : Not currently used in the app.
-
+
#### Exercise: Discover other possible applications of the patterns
* Find other possible applications of the patterns to improve the current design.
e.g. where else in the design can you apply the Singleton pattern?
* Discuss pros and cons of applying the pattern in each of the situations you found in the previous step.
-
-#### Exercise: Find more applicable patterns
+
+#### Exercise: Find more applicable patterns
* Learn other _Gang of Four_ Design patterns to see if they are applicable to the app.
------------------------------------------------------------------------------------------------------
-
+
## Use Static Analysis `[LO-StaticAnalysis]`
-
- Note how this project uses the [CheckStyle](http://checkstyle.sourceforge.net/) static analysis tool to confirm
+
+ Note how this project uses the [CheckStyle](http://checkstyle.sourceforge.net/) static analysis tool to confirm
compliance with the coding standard.
-
+
Other popular Java static analysis tools:
-
+
* [Find Bugs](http://findbugs.sourceforge.net/)
* [PMD](https://pmd.github.io/)
-
+
#### Exercise: Use the CheckStyle Eclipse plugin
- * Install the [CheckStyle Eclipse plugin](http://eclipse-cs.sourceforge.net/#!/) and use it to detect
+ * Install the [CheckStyle Eclipse plugin](http://eclipse-cs.sourceforge.net/#!/) and use it to detect
coding standard violations.
-
+
------------------------------------------------------------------------------------------------------
## Do Code Reviews `[LO-CodeReview]`
-* Note how some PRs in this project have been reviewed by other developers.
+* Note how some PRs in this project have been reviewed by other developers.
Here is an [example](https://github.com/se-edu/addressbook-level4/pull/147).
* Also not how we have used [Codacy](https://www.codacy.com) to do automate some part of the code review workload
([![Codacy Badge](https://api.codacy.com/project/badge/Grade/fc0b7775cf7f4fdeaf08776f3d8e364a)](https://www.codacy.com/app/damith/addressbook-level4?utm_source=github.com&utm_medium=referral&utm_content=se-edu/addressbook-level4&utm_campaign=Badge_Grade))
@@ -309,12 +309,12 @@ Here are some things you can comment on when reviewing code:
**Resources**
-* [Code Review Best Practices](https://www.kevinlondon.com/2015/05/05/code-review-best-practices.html) -
+* [Code Review Best Practices](https://www.kevinlondon.com/2015/05/05/code-review-best-practices.html) -
Blog post by Kevin London
* [Why Code Reviews Matter](https://www.atlassian.com/agile/code-reviews) - An article by Atlassian
-
+
#### Exercise: Review a PR
-* Review a GitHub PR created by a team member.
+* Review a GitHub PR created by a team member.
diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 65840cf464b..eb06f437893 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -12,20 +12,20 @@ By : `Team SE-EDU` Since: `Jun 2016` &nbs
## 1. Quick Start
0. Ensure you have Java version `1.8.0_60` or later installed in your Computer.
-
+
> Having any Java 8 version is not enough.
> This app will not work with earlier versions of Java 8.
-
+
1. Download the latest `addressbook.jar` from the [releases](../../../releases) tab.
2. Copy the file to the folder you want to use as the home folder for your Address Book.
-3. Double-click the file to start the app. The GUI should appear in a few seconds.
+3. Double-click the file to start the app. The GUI should appear in a few seconds.
>
4. Type the command in the command box and press Enter to execute it.
- e.g. typing **`help`** and pressing Enter will open the help window.
+ e.g. typing **`help`** and pressing Enter will open the help window.
5. Some example commands you can try:
* **`list`** : lists all contacts
- * **`add`**` John Doe p/98765432 e/johnd@gmail.com a/John street, block 123, #01-01` :
+ * **`add`**` John Doe p/98765432 e/johnd@gmail.com a/John street, block 123, #01-01` :
adds a contact named `John Doe` to the Address Book.
* **`delete`**` 3` : deletes the 3rd contact shown in the current list
* **`exit`** : exits the app
@@ -46,15 +46,15 @@ By : `Team SE-EDU` Since: `Jun 2016` &nbs
Format: `help`
> Help is also shown if you enter an incorrect command e.g. `abcd`
-
+
### 2.2. Adding a person: `add`
Adds a person to the address book
-Format: `add NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...`
+Format: `add NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...`
> Persons can have any number of tags (including 0)
-Examples:
+Examples:
* `add John Doe p/98765432 e/johnd@gmail.com a/John street, block 123, #01-01`
* `add Betsy Crowe t/friend e/betsycrowe@gmail.com a/Newgate Prison p/1234567 t/criminal`
@@ -76,7 +76,7 @@ Format: `find KEYWORD [MORE_KEYWORDS]`
> * Persons matching at least one keyword will be returned (i.e. `OR` search).
e.g. `Hans` will match `Hans Bo`
-Examples:
+Examples:
* `find John`
Returns `John Doe` but not `john`
@@ -92,12 +92,12 @@ Format: `delete INDEX`
> The index refers to the index number shown in the most recent listing.
> The index **must be a positive integer** 1, 2, 3, ...
-Examples:
+Examples:
* `list`
`delete 2`
Deletes the 2nd person in the address book.
-* `find Betsy`
+* `find Betsy`
`delete 1`
Deletes the 1st person in the results of the `find` command.
@@ -106,30 +106,30 @@ Examples:
Selects the person identified by the index number used in the last person listing.
Format: `select INDEX`
-> Selects the person and loads the Google search page the person at the specified `INDEX`.
+> Selects the person and loads the Google search page the person at the specified `INDEX`.
> The index refers to the index number shown in the most recent listing.
> The index **must be a positive integer** 1, 2, 3, ...
-Examples:
+Examples:
* `list`
`select 2`
Selects the 2nd person in the address book.
-* `find Betsy`
+* `find Betsy`
`select 1`
Selects the 1st person in the results of the `find` command.
### 2.7. Clearing all entries : `clear`
Clears all entries from the address book.
-Format: `clear`
+Format: `clear`
### 2.8. Exiting the program : `exit`
Exits the program.
-Format: `exit`
+Format: `exit`
-### 2.9. Saving the data
+### 2.9. Saving the data
Address book data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
@@ -137,29 +137,29 @@ There is no need to save manually.
## 3. FAQ
**Q**: How do I transfer my data to another Computer?
-**A**: Install the app in the other computer and overwrite the empty data file it creates with
+**A**: Install the app in the other computer and overwrite the empty data file it creates with
the file that contains the data of your previous Address Book folder.
-
+
## 4. Command Summary
* **Add** `add NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...`
e.g. `add James Ho p/22224444 e/jamesho@gmail.com a/123, Clementi Rd, 1234665 t/friend t/colleague`
* **Clear** : `clear`
-
-* **Delete** : `delete INDEX`
+
+* **Delete** : `delete INDEX`
e.g. `delete 3`
-
+
* **Find** : `find KEYWORD [MORE_KEYWORDS]`
e.g. `find James Jake`
-
+
* **List** : `list`
e.g.
-
+
* **Help** : `help`
e.g.
-
+
* **Select** : `select INDEX`
e.g.`select 2`
-
+
diff --git a/docs/UsingGradle.md b/docs/UsingGradle.md
index e0fe66c5b4b..3c66f030104 100644
--- a/docs/UsingGradle.md
+++ b/docs/UsingGradle.md
@@ -1,11 +1,11 @@
# Using Gradle
-[Gradle](https://gradle.org/) is a build automation tool. It can automate build-related tasks such as
+[Gradle](https://gradle.org/) is a build automation tool. It can automate build-related tasks such as
* Running tests
* Managing library dependencies
* Analyzing code for style compliance
-The gradle configuration for this project is defined in the _build script_ [`build.gradle`](../build.gradle).
+The gradle configuration for this project is defined in the _build script_ [`build.gradle`](../build.gradle).
> To learn more about gradle build scripts,
refer [Build Scripts Basics](https://docs.gradle.org/current/userguide/tutorial_using_tasks.html).
@@ -23,15 +23,15 @@ Gradle commands look like this:
* **`clean`**
Deletes the files created during the previous build tasks (e.g. files in the `build` folder).
e.g. `./gradlew clean`
-
+
>**Tip `clean` to force Gradle to execute a task**:
- When running a Gradle task, Gradle will try to figure out if the task needs running at all.
+ When running a Gradle task, Gradle will try to figure out if the task needs running at all.
If Gradle determines that the output of the task will be same as the previous time, it will not run
the task. For example, it will not build the JAR file again if the relevant source files have not changed
since the last time the JAR file was built. If we want to force Gradle to run a task, we can combine
that task with `clean`. Once the build files have been `clean`ed, Gradle has no way to determine if
the output will be same as before, so it will be forced to execute the task.
-
+
## Creating the JAR file
* **`shadowJar`**
@@ -39,12 +39,12 @@ Gradle commands look like this:
e.g. `./gradlew shadowJar`
> To force Gradle to create the JAR file even if the current one is up-to-date, you can '`clean`' first.
- e.g. `./gradlew clean shadowJar`
+ e.g. `./gradlew clean shadowJar`
**Note: Why do we create a fat JAR?**
If we package only our own class files into the JAR file, it will not work properly unless the user has all the other
- JAR files (i.e. third party libraries) our classes depend on, which is rather inconvenient.
- Therefore, we package all dependencies into a single JAR files, creating what is also known as a _fat_ JAR file.
+ JAR files (i.e. third party libraries) our classes depend on, which is rather inconvenient.
+ Therefore, we package all dependencies into a single JAR files, creating what is also known as a _fat_ JAR file.
To create a fat JAR fil, we use the Gradle plugin [shadow jar](https://github.com/johnrengelman/shadow).
## Running the application
@@ -59,7 +59,7 @@ If we package only our own class files into the JAR file, it will not work prope
* **`checkstyleMain`**
Runs the code style check for the main code base
-
+
* **`checkstyleTest`**
Runs the code style check for the test code base
@@ -73,14 +73,14 @@ To enable _exceptions_ to code styles, add in the comment `//CODESTYLE.OFF: Rule
* **`guiTests`**
Runs all tests in the `guitests` package
-
+
* **`nonGuiTests`**
Runs all non-GUI tests in the `seedu.address` package
-
+
* **`headless`**
- Sets the test mode as _headless_.
+ Sets the test mode as _headless_.
The mode is effective for that Gradle run only so it should be combined with other test tasks.
-
+
Here are some examples:
* `./gradlew headless allTests` -- Runs all tests in headless mode
@@ -89,16 +89,16 @@ Here are some examples:
## Updating Dependencies
-There is no need to run these Gradle tasks manually as they are called automatically by other
+There is no need to run these Gradle tasks manually as they are called automatically by other
relevant Gradle tasks.
* **`compileJava`**
- Checks whether the project has the required dependencies to compile and run the main program, and download
+ Checks whether the project has the required dependencies to compile and run the main program, and download
any missing dependencies before compiling the classes.
See `build.gradle` -> `allprojects` -> `dependencies` -> `compile` for the list of dependencies required.
* **`compileTestJava`**
- Checks whether the project has the required dependencies to perform testing, and download
+ Checks whether the project has the required dependencies to perform testing, and download
any missing dependencies before compiling the test classes.
- See `build.gradle` -> `allprojects` -> `dependencies` -> `testCompile` for the list of
+ See `build.gradle` -> `allprojects` -> `dependencies` -> `testCompile` for the list of
dependencies required.
diff --git a/docs/UsingTravis.md b/docs/UsingTravis.md
index 637713ed086..e5d9a74ce0e 100644
--- a/docs/UsingTravis.md
+++ b/docs/UsingTravis.md
@@ -28,13 +28,13 @@ from [Travis CI Documentation](https://docs.travis-ci.com/).
or request access
![Request Access](images/request_access.png)
to Travis CI so that it can access your commits and build your code.
-
+
* If repository cannot be found, click `Sync account`
4. Activate the switch.
![Activate the switch](images/flick_repository_switch.png)
5. This repo comes with a [`.travis.yml`](../.travis.yml) that tells Travis what to do.
So there is no need for you to create one yourself.
-6. To see the CI in action, push a commit to the master branch!
+6. To see the CI in action, push a commit to the master branch!
* Go to the repository and see the pushed commit. There should be an icon which will link you to the Travis build.
![Commit build](images/build_pending.png)