By: Team SE-EDU Since: Jun 2016 Licence: MIT

1. Introduction

WishBook (WB) is a piggy bank in a digital app form, made for people who need a user-friendly solution for keeping track of their disposable income. Not only does WB keep records of your savings, it also allows you to set items as goals for users to work towards, serving as a way to cultivate the habit of saving. WB is made for people who have material wants in life, but are uncertain of purchasing said wants, by helping them to reserve disposable income so that they know they can spend on their wants. So what are you waiting for? Go to Section 2, Section 2, “Quick Start” and start saving!

2. Quick Start

  1. Ensure you have Java version 9 or later installed in your Computer.

  2. Download the latest wishbook.jar here.

  3. Copy the file to the folder you want to use as the home folder for your WishBook app.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. 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.

  6. Some example commands you can try:

    • list : Lists all the items you have set as wishes (sorted by due date).

    • addn/uPhoneXX p/1000 a/5m : adds an item “uPhoneXX” as a goal to be completed in 5 months.

    • help: displays list of command with usage.

    • clear: clears view

    • exit : exits the app

  7. Refer to Section 3, “Features” for details of each command.

3. Features

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add WISH, WISH is a parameter which can be used as add iPhone.

  • Items in square brackets are optional e.g. in list [FILTER], FILTER is an optional parameter, since the list command can be used as list to display all wishes in WishBook.

    • An exception to this is TIME_GIVEN and END_DATE, whereby only one of the two can be used in any command.

    • The add command requires either TIME_GIVEN and END_DATE.

    • The edit command can take either or none of them.

  • Items with ​ after them can be used multiple times including zero times e.g. [t/TAG]…​ can be used as   (i.e. 0 times), t/broke, t/needs etc.

  • The / symbol between parameters means that you can use either of the parameters types in the command e.g. in add WISH PRICE [TIME_GIVEN]/[START_DATE to END_DATE], you provide either the TIME_GIVEN parameter or START_DATE and END_DATE parameters.

3.1. Viewing help : help

Displays a popup window showing all the commands a user can use in WishBook.
Format: help

3.2. Add a new wish: add

Add a new wish to the wish list.
Format: add n/WISH_NAME p/PRICE [a/PERIOD_GIVEN]/[d/END_DATE] [u/URL] [t/TAG]…​

  • [END_DATE]: Specified in dd/mm/yyyy format.

  • [TIME_GIVEN]: Specified in terms of years, months, weeks, and days, suffixes (coming after the value) marking such time periods are ‘y’, ‘m’, ‘w’, and ‘d’ respectively.

The order of [TIME_GIVEN] must be from the biggest unit of time to the smallest unit of time, meaning that the suffix `y` cannot come after any of the other three suffixes, and 'w' cannot come after 'd', but can come after 'y' and 'm'.

If you enter an invalid date, a warning message will be displayed to prompt the user to reenter a valid date. Until all fields provided are valid, the wish will not be added to WishBook.

The expiry date you enter must be after current date.

Examples:

  • add n/XBoxTwo p/999 a/1y

  • add n/kfcBook 13inch p/2300 a/6m3w r/For dad t/family t/computing

  • add n/prinkles p/1.95 d/24/04/2020

  • add n/prinkles p/1.95 d/24/04/2020 u/www.amazon.com/prinkles t/high

3.3. Edit a wish : edit

Edits an existing wish in the wish list.
Format: edit INDEX [n/WISH_NAME] [p/PRICE] [a/TIME_GIVEN]/[d/END_DATE] [u/URL] [t/TAG]

  • Edits the wish at the specified INDEX. INDEX refers to the index number shown in the displayed list of goals. INDEX must be a positive integer 1, 2, 3, …

  • INDEX is labelled at the side of each wish.

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

  • When editing tags, the existing tags of the wish will be removed i.e. adding of tags is not cumulative.

  • You can remove all tags by typing t/ without specifying any tags after it.

Examples:

  • edit 1 n/Macbook Pro t/Broke wishes
    Edits the name of the wish and the tag of the 1st wish to be Macbook Pro and Broke wishes respectively

  • edit 2 p/22 a/22w
    Edits the price and time given to accomplish the 2nd wish to 22 (in the chosen currency) and 22 weeks respectively.

3.4. List wishes : list

Shows a list of all the wishes you have set, sorted by date by default, based on the given filter. If no filter is specified, all wishes in the WishBook will be listed.
Format: list [FILTER]

  • list
    Lists all the wishes in the WishBook.

  • list -c
    Lists all the completed wishes in the WishBook.

  • list -u
    Lists all the uncompleted wishes in the WishBook.

  • Only wishes in the current state of the wishbook will be listed.

  • Deleted wishes will not be displayed.

3.5. List history of entered commands : history -c

Lists all the commands that you have entered in reverse chronological order.
Format: history -c

Pressing the and arrows will display the previous and next input respectively in the command box.

3.6. View your saving history: history -s

Shows a history of savings you have allocated, from newest to oldest.
Format: history -s

Only history of wishes which currently exist in the WishBook will be stored. (i.e. wishes that have been deleted will no longer be tracked.)

3.7. Locate your wish with speed and precision: find

Find wishes which match the given search keywords.
Format: find [-e] [n/NAME_KEYWORD]…​ [t/TAG_KEYWORD]…​ [r/REMARK_KEYWORD]…​

  • At least one keyword must be provided.

  • Searching multiple keywords of the same prefix will return wishes whose attribute corresponding to the prefix contain any one of the keywords.

  • Searching with keywords of different prefixes will return only wishes that match will all the keywords of the different prefixes.

  • Using the exact match flag, -e returns wishes whose corresponding attributes contain all the keywords.

  • The search is case insensitive. e.g. watch will match Watch.

Examples:

  • find n/wat
    Returns any wish whose name contains the wat.

  • find n/wat n/balloon n/appl
    Returns wishes whose names which contain at least any one of wat, balloon or appl.

  • find -e n/wat n/balloon n/appl
    Returns only wishes whose names that contain all of wat, balloon and appl.

  • find n/watch t/important
    Returns any wish whose name contains watch, and whose tags contains broke wishes.

  • find n/wat n/balloon t/important
    Returns any wish whose name contains wat or balloon, and whose tags contains important.

3.8. Delete a wish : delete

Deletes the specified wish from the list and moves any funds in that wish to unusedFunds.
Format: delete INDEX

  • INDEX refers to the index number shown in the displayed list.

  • INDEX must be a positive integer 1, 2, 3…​

  • If the wish at INDEX is not yet fulfilled, the saved amount in that wish will be channelled to unusedFunds.

Examples:

  • list
    delete 2
    Deletes the 2nd wish in the list.

  • find watch
    delete 1
    Deletes the 1st wish in the results of the find command (if any).

3.9. Select a wish : select

Selects the wish identified by the index number used in the displayed wish list.
Format: select INDEX

  • Selects the wish and displays content relevant to that wish in the view.

  • Webpage at the url specific to that wish at the specified INDEX will be loaded in the view.

  • If there is no internet connection, the webpage will not be loaded.

  • Savings history view will also reflect the savings history for the selected wish, if the selected wish is valid.

  • INDEX refers to the index number shown in the displayed wish list.

  • INDEX must be a positive integer 1, 2, 3, …​

Examples:

  • list
    select 2
    Selects the 2nd wish in the wish list.

  • find price
    select 1
    Selects the 1st wish in the results of the find command.

3.10. Save money for a particular wish: save

Channel a specified amount of money to savings for a specified wish.
Format: save INDEX AMOUNT

  • INDEX should be a positive integer 1, 2, 3… no larger than the number of wishes.

  • If INDEX is 0, AMOUNT will be channelled directly to unusedFunds.

  • If AMOUNT saved to INDEX is greater than the amount needed to fulfil that wish, excess funds will be channelled to unusedFunds.

  • If AMOUNT is negative, money will be removed from amount saved for that wish.

  • AMOUNT will not be accepted if:

    • AMOUNT brings the savings value for that wish to below 0.

    • The wish at INDEX is already fulfilled.

Examples:

  • save 1 1000
    Attempt to save $1000 for the wish at index 1.

  • save 1 -100.50
    Attempt to remove $100.50 from the savings for the wish at index 1.

  • save 0 100.50
    Attempt save $100.50 to unusedFunds.

3.11. Move money between wishes: move

Moves funds from one wish to another.
Format: move FROM_WISH_INDEX TO_WISH_INDEX AMOUNT

  • FROM_WISH_INDEX and TO_WISH_INDEX should be a positive integer 1, 2, 3… no larger than the number of wishes

  • If FROM_WISH_INDEX is 0, AMOUNT will be channelled from unusedFunds to TO_WISH_INDEX.

  • If TO_WISH_INDEX is 0, AMOUNT will be channelled from FROM_WISH_INDEX to unusedFunds.

  • AMOUNT from unusedFunds will only be successfully channelled if the exact amount requested is present in unusedFunds.

  • If FROM_WISH_INDEX equals TO_WISH_INDEX, both indexes will not be accepted.

  • If AMOUNT saved to TO_WISH_INDEX is greater than the amount needed to fulfil that wish, excess funds will be channelled to unusedFunds.

  • AMOUNT will not be accepted if:

    • AMOUNT is negative.

    • AMOUNT brings the savings amount of wish at FROM_WISH_INDEX to below 0.

    • Either wish at FROM_WISH_INDEX or TO_WISH_INDEX is already fulfilled.

Index 0 is specially allocated for unused funds. Excess funds when user attempts to save to a wish will be automatically allocated to unusedFunds. The user can also choose to channel funds from unusedFunds to a valid wish.

Examples:

  • move 1 2 10
    Attempt to move $10 from the wish at index 1 to the wish at index 2.

  • move 0 1 10
    Attempt to move $10 from unusedFunds to the wish at index 1.

  • move 1 0 10
    Attempt to move $10 from the wish at index 1 to unusedFunds.

3.12. Edit a remark for a wish : remark

Edits the remark for a wish specified in the index.
Format: remark INDEX r/[REMARK]

  • INDEX refers to the index number shown in the displayed list.

  • INDEX must be a positive integer 1, 2, 3…​

Examples:

  • list
    remark 1 r/Buying this for dad.
    Edits the remark for the first wish to Buying this for dad.

  • list
    remark 1 r/
    Removes the remark for the first wish (if any).

3.13. Undo previous command : undo

Restores WishBook to the state before the previous undoable command was executed.
Format: undo

  • If no undoable commands exist or the state of the wishbook is already in its original state, the undo command will fail and the state of the wishbook will remain unchanged.

Undoable commands: commands that modify WishBook content (add, delete, edit, save).

Examples:

  • delete 1
    list
    undo (reverses the delete 1 command)

  • select 1
    list
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)

3.14. Redo the previously undone command : redo

Reverses the most recent undo command.
Format: redo

Examples:

  • delete 1
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)

  • delete 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete 1 command)
    redo (reapplies the delete 1 command)
    redo (reapplies the clear command)

3.15. Clearing all entries : clear

Clears all entries from WishBook.
Format: clear

3.16. Exiting the program : exit

Exits the program.
Format: exit

3.17. Saving the data

WishBook data are saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

4. 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 the file that contains the data of your previous WishBook folder.

5. Command Summary

  • Add add n/WISH_NAME p/PRICE t/[a/TIME_GIVEN]/[d/END_DATE] [u/URL] [t/TAG]…​
    e.g. add n/Sega Genesis p/2300 a/6m3w

  • Clear : clear

  • Delete : delete INDEX
    e.g. delete 3

  • Edit : edit INDEX [n/WISH_NAME] [p/PRICE] [a/TIME_GIVEN]/[d/END_DATE] [t/TAG]
    e.g. edit 1 n/Macbook Pro t/technology

  • Find : find [-e] [n/NAME_KEYWORD]…​ [t/TAG_KEYWORD]…​ [r/REMARK_KEYWORD]…​
    e.g. find n/Vacuum Cleaner t/family

  • List : list

  • List completed : list -c

  • List uncompleted : list -u

  • Help : help

  • Select : select INDEX
    e.g.select 2

  • Save : save INDEX AMOUNT
    e.g. save 1 1000

  • Move : move FROM_WISH_INDEX TO_WISH_INDEX AMOUNT
    e.g. move 1 2 10

  • Command History : history -c

  • Savings History : history -s

  • Remark : remark INDEX r/[REMARK]

  • Undo : undo

  • Redo : redo

  • Exit : exit