User Guide

Table of Contents (Sugandha)

1. Introduction

revisED aims to help students to revise their subjects through the creation of flashcards or tasks that have to be completed. The users can store the tasks under different subjects and flashcards under different topics, which can be created under the subjects. This application ensures that students would be able to revise, even if they are doing it at the last minute.

This user guide provides an in-depth documentation on the installation process, the application features, and the application usage to get you started.

Note the following symbols and formatting used in this document:

Symbols / Formatting Meaning
πŸ“οΈ NOTE: Important or additional information
⚠️ WARNING: Things to avoid or pay extra attention to
Grey highlight Code or terms related to the code/application

2. Quick Start (Chin Hang)

To setup the application,

  1. Ensure that you have Java 11 or above installed.
  2. Download the latest version of revised.jar here.
  3. Transfer the jar file to the folder of your choice.
  4. Open a command prompt in the folder you just put the jar file in. Follow this guide if you are unsure how.
  5. Run the command java -jar revised.jar to start the application.

You will see the logo of the application, as shown below, once u run it.

Hello from
                                    ___________
                                    |  __ |  _ \
 ____  ______      _____   ________ |  |__| | | |
|  __|/ __ \ \    / /| |  /  _____/ |   __| | | |
| |  |  __/ \ \__/ / | | /_____  /  |  |__| |_| |
| |   \___|  \____/  |_|/_______/   |_____|_____/
____________________________________________________________
Hello! I'm revisED
____________________________________________________________
____________________________________________________________
Alright, What can I do for you?
____________________________________________________________
____________________________________________________________
Type help for all available commands
____________________________________________________________

Subsequently, you can begin using the application!

3. Features (Chin Hang)

This section elaborates on the features of revisED along with their usage. We further break this section down into several subsections to better illustrate the design of the application.

To give you some context, revisED is divided into 3 logical levelsβ€”main, subject, and topic levels. In the main level, you can add/configure different subjects; in the subject level, you can add/configure different topics and tasks (under a subject); and in the topic level, you can add/configure different flashcards (under a topic & subject). Continue reading to learn more about the features in each level.

πŸ“οΈοΈ NOTE: The format of the command, an example of usage, and an expected output will be presented in grey boxes for each feature that involves the use of a command.

3.1 Main Level Features (Jia Lerk)

Main level features can only be used when the user is currently viewing the main section of the program. On this level, users are able to add and delete subjects in a subject list. Users are also able to access the subjects in the subject list. For more details on subjects, see section 3.2 Subject Level Features . This section describes the usage of commands that can be used to add, delete and list subjects.

3.1.1 Displaying all the available commands: help

Displays all available commands on the main level.

Format: help

Example of usage:

help

Sample output:

________________________________________________________________________________________________________________________
help:          shows the list of commands available at the main level
add abc:       adds a subject called 'abc'
find abc:      finds all subjects containing the letters abc
list:          shows the list of all subjects
list all:      shows the tree of all subjects, topics, tasks and flashcards
delete 1:      deletes the 1st subject in the list.
subject abc:   enters the subject called abc, now you can create, find, list, delete and enter the topics of subject abc
quiz abc:      starts a quiz for all the flashcards present in all the topics of subject abc,
               answer the questions of the current flashcards to test your knowledge
results abc:   gives you the results of all attempted quizzes for abc subject
export:        exports all the data to a JSON file
bye:           exits the application
________________________________________________________________________________________________________________________

3.1.2 Listing all subjects: list

Prints a list of all subjects in the main list.

Format: list

Example of usage:

list

Sample output:

____________________________________________________________
Here are the subject(s) in your list:
1.CS1010
2.CS2040C
3.CG2027
4.CS2113T
5.CS2101
____________________________________________________________

3.1.3 Listing all items: list all

Prints a list of all items stored in the application.

Format: list all

Example of usage:

list all

Sample output:

____________________________________________________________
Here's a list of all items:
(You are currently here)
β”œβ”€ 1. CG2027
β”‚  β”‚  Topics
β”‚  β”œβ”€ 1. Pass Transistor Multiplexers
β”‚  β”œβ”€ 2. Arithmetic Logic Unit
β”‚  β”‚  Tasks
β”‚  └─ 1. [T][N] revise on Arithmetic Logic Unit
β”œβ”€ 2. CS2101
β”‚  β”‚  Topics
β”‚  β”œβ”€ 1. Oral Presentation
β”‚  β”œβ”€ 2. Product Demo
β”‚  β”‚  Tasks
β”‚  └─ 1. [E][Y] Product Demo (at: 2:00 PM 5 Nov 2020)
└─ 3. CS2113T
   β”‚  Topics
   β”œβ”€ 1. Class Diagram
   β”œβ”€ 2. Abstraction
   β”‚  Tasks
   └─ 1. [D][N] Final Project (by: 11:59 PM 11 Nov 2020)
____________________________________________________________

3.1.4 Adding a subject: add

Adds a subject to the main list.

Format: add [SUBJECT_NAME]

⚠️ WARNING: [SUBJECT_NAME] is case-sensitive. cs2101 and CS2101 will be registered as 2 different subjects. Adding tasks or topics in cs2101 will not add the same tasks and topics in CS2101.

Example of usage:

add CS2101

Sample output:

____________________________________________________________
Got it. I've added this subject:
  CS2101
Now you have 5 subjects in the list.
____________________________________________________________

3.1.5 Deleting a subject: delete

Deletes the specified subject, given the subject number.

Format: delete [SUBJECT_NUMBER]

πŸ“οΈοΈ NOTE: The [SUBJECT_NUMBER] of a subject is the number assigned to each subject when the user uses the list command to print out the subjects.

πŸ“οΈοΈ NOTE: After deletion of a subject, the [SUBJECT_NUMBER] of subjects in the list may change.

⚠️ WARNING: It is impossible to retrieve data deleted by this command. Make sure you do not need the data in this subject before you delete it!

Example of usage:

delete 1

Sample output:

____________________________________________________________
 Noted. I've removed this subject:
   CS1010
 Now you have 4 subjects in the list.
____________________________________________________________

3.1.6 Finding a subject: find

Searches the list of subject names for all subjects that contains the query.

Format: find [QUERY]

⚠️ WARNING: [QUERY] is case-sensitive. e.g. cs2113t will not find a Subject with the name CS2113T.

Example of usage:

find CS

Sample output:

____________________________________________________________
 Here are the matching subject(s) in your list:
CS2040C
CS2113T
CS2101
____________________________________________________________

3.1.7 Accessing a subject: subject

Allows the user to access a pre-existing subject.

Format: subject [SUBJECT_NAME]

⚠️ WARNING: [SUBJECT_NAME] is case-sensitive. e.g. subject cs2113t will not access a subject with the name CS2113T.

Example of usage:

subject CS2113T

Sample output:

____________________________________________________________
Entering the Subject Level for the CS2113T subject.
____________________________________________________________
____________________________________________________________
Type help for all available commands
____________________________________________________________

3.1.8 Starting Subject Quiz: quiz

Starts a quiz for a particular subject. For more details, see taking quizzes.

Format: quiz [SUBJECT_NAME]

⚠️ WARNING: [SUBJECT_NAME] is case-sensitive. e.g. e.g. quiz cs2101 will not start a CS2101 quiz.

Example of usage:

quiz CS2113T

Sample output:

____________________________________________________________
You are about to begin the quiz for CS2113T.
____________________________________________________________

3.1.9 Viewing results for quizzes on a subject: results (Muthu)

This command allows you to look at the results for a subject. For more details, see result.

Format: results [SUBJECT_NAME]

⚠️ WARNING: [SUBJECT_NAME] is case-sensitive. e.g. results cs2101 will not enable you to see your CS2101 quiz results.

Example of usage:

results CS2113T

Sample output:

____________________________________________________________
Quiz 1: 1.0/2.0 -- Pass
Quiz 2: 2.0/2.0 -- Excellent
____________________________________________________________

3.1.10 Exporting data: export (Chin Hang)

This command exports all the data of the application to an external file. For more details, see Exporting Data section.

Format: export

Example of usage:

export

Sample output:

____________________________________________________________
Your data has been successfully exported to /home/guest/revised/export/data.json.
____________________________________________________________

3.1.11 Saving and exiting: bye

This command will save all the data in the application.

Format: bye

⚠️ WARNING: Use this command before closing the command line as this command ensures all your data updated is saved. Failure to use this method to exit the application will result in all work updated in the session being lost.

Example of usage:

bye

Sample output:

____________________________________________________________
Bye. Hope to see you again soon!
____________________________________________________________

3.2 Subject Level Features (Herman)

Subject level features can only be used when the user is currently viewing a subject. On this level, users are able to add and delete topics and tasks. Users are also able to access the topics listed in the current subject. For more details on topics, see section 3.3 Topic Level Features. This section describes the usage of commands that can be used to add, delete and list both topics and tasks.

3.2.1 Displaying all available commands: help

Displays all available commands on the subject level.

Format: help

Example of usage:

help

Sample output:

________________________________________________________________________________________________________________________
help:                              shows the list of commands available at the subject level
add abc:                           adds a topic called 'abc' in the current subject
todo abc:                          adds a todo type task with the description 'abc'
deadline abc /by 12:00 13-11-2020: adds a deadline type task with description 'abc' with date/time of deadline
                                   as 12:00 AM 13 Nov 2020
event abc /at 01:00 21-11-2020:    adds an event type task with description 'abc' with date/time of event
                                   as 1:00 AM 21 Nov 2020
find abc:                          finds all topics and tasks containing 'abc' in the current subject
list:                              shows the list of all topics and tasks in the current subject
list all:                          shows the tree of all subjects, topics, tasks and flashcards
delete topic 1:                    deletes the 1st topic in the list of topics.
delete task 1:                     deletes the 1st task in the list of tasks.
done 1:                            marks the 1st task in the list of tasks as done
topic abc:                         enters the topic abc, now you can add, find, list and delete flashcards of topic abc
quiz abc:                          starts a quiz for all the flashcards of the topic abc,
                                   answer the questions of the prompted flashcards to test your knowledge
results abc:                       gives you the results of all attempted quizzes for abc topic
exit:                              exits the subject to return to the main screen, where you can work with subjects
________________________________________________________________________________________________________________________

3.2.2 Listing all topics and tasks: list

Prints a list of all topics and tasks of the current subject.

Format: list

Example of usage:

list

Sample output:

____________________________________________________________
Here are the topic(s) under CS2101: 
1. Oral Presentation
2. Product Demo
____________________________________________________________
Here are the tasks(s) under CS2101: 
1. [E][N] Product Demo (at: 2:00 PM 5 Nov 2020)
____________________________________________________________

3.2.3 Listing all items: list all

Prints a list of all items stored in the application.

Format: list all

Example of usage:

list all

Sample output:

____________________________________________________________
Here's a list of all items:
β”œβ”€ 1. CG2027
β”‚  β”‚  Topics
β”‚  β”œβ”€ 1. Pass Transistor Multiplexers
β”‚  β”œβ”€ 2. Arithmetic Logic Unit
β”‚  β”‚  Tasks
β”‚  └─ 1. [T][N] revise on Arithmetic Logic Unit
β”œβ”€ 2. CS2101 (You are currently here)
β”‚  β”‚  Topics
β”‚  β”œβ”€ 1. Oral Presentation
β”‚  β”œβ”€ 2. Product Demo
β”‚  β”‚  Tasks
β”‚  └─ 1. [E][Y] Product Demo (at: 2:00 PM 5 Nov 2020)
└─ 3. CS2113T
   β”‚  Topics
   β”œβ”€ 1. Class Diagram
   β”œβ”€ 2. Abstraction
   β”‚  Tasks
   └─ 1. [D][N] Final Project (by: 11:59 PM 11 Nov 2020)
____________________________________________________________

Topic commands

3.2.4 Adding a topic: add

Adds a topic to the current subject.

Format: add [TOPIC_NAME]

⚠️ WARNING: [TOPIC_NAME] is case-sensitive. Product pitch and PRODUCT PITCH will be registered as 2 different topics. Adding flashcards in product pitch will not add the same flashcards in PRODUCT PITCH.

Example of usage:

add Product Pitch

Sample output:

____________________________________________________________
Got it. I've added this topic:
  Product Pitch
Now you have 3 topics in the list.
____________________________________________________________

3.2.5 Deleting a topic: delete topic

Deletes the topic from the current subject, given the topic number.

Format: delete topic [TOPIC_NUMBER]

πŸ“οΈοΈ NOTE: The [TOPIC_NUMBER] of a topic is the number assigned to each topic when the user uses the list command to print out the topics.

πŸ“οΈοΈ NOTE: After deletion of a topic, the [TOPIC_NUMBER] of topics in the list may change.

⚠️ WARNING: It is impossible to retrieve data deleted by this command. Make sure you do not need the data in this topic before you delete it!

Example of usage:

delete topic 3

Sample output:

____________________________________________________________
 Noted. I've removed this topic:
   Product Pitch
 Now you have 2 topics in the list.
____________________________________________________________

3.2.6 Finding a topic or task: find

Searches the current subject for all the topics and tasks that contains the query.

Format: find [QUERY]

⚠️ WARNING: [QUERY] is case-sensitive. e.g. product will not find a topic or task with the name PRODUCT.

Example of usage:

find Pro

Sample output:

____________________________________________________________
Here are the matching topic(s) in your list:
Product Demo

____________________________________________________________
Here are the matching task(s) in your list:
[E][Y] Product Demo (at: 2:00 PM 5 Nov 2020)
____________________________________________________________

3.2.7 Accessing a topic: topic

Enters a pre-existing topic.

Format: topic [TOPIC_NAME]

⚠️ WARNING: [TOPIC_NAME] is case-sensitive. e.g. topic product will not access a topic with the name PRODUCT.

Example of usage:

topic Oral Presentation

Sample output:

____________________________________________________________
Entering the topic Level for the Oral Presentation topic.
____________________________________________________________
____________________________________________________________
Type help for all available commands
____________________________________________________________

Task commands

3.2.8 Adding a 'todo' task: todo

Adds a todo task.

Format: todo [DESCRIPTION]

Example of usage:

todo look up on what is active listening

Sample output:

____________________________________________________________
Got it. I've added this task:
  [T][N] look up on what is active listening
Now you have 2 tasks in the list.
____________________________________________________________

3.2.9 Adding a 'deadline' task - deadline

Adds a deadline task.

Format: deadline [DESCRIPTION] /by [TIME]

πŸ“οΈοΈ NOTE: Add the time using the HH:MM DD-MM-YYYY format.

Example of usage:

deadline assignment /by 23:59 21-10-2020

Sample output:

____________________________________________________________
Got it. I've added this task:
  [D][N] assignment (by: 11:59 PM 21 Oct 2020)
Now you have 2 tasks in the list.
____________________________________________________________

3.2.10 Adding an event - event - Add event

Add an event task.

Format: event [DESCRIPTION] /at [TIME]

πŸ“οΈοΈ NOTE: Add the time using the HH:MM DD-MM-YYYY format.

Example of usage:

event tutorial /at 16:00 21-10-2020

Sample output:

____________________________________________________________
Got it. I've added this task:
  [E][N] tutorial (at: 4:00 PM 21 Oct 2020)
Now you have 3 tasks in the list.
____________________________________________________________

3.2.11 Deleting a task: delete task

Deletes a task from the current subject, given the task number.

Format: delete task [TASK_INDEX]

πŸ“οΈοΈ NOTE: The TASK_INDEX of a topic is the number assigned to each task when the user uses the list command to print out the tasks.

πŸ“οΈοΈ NOTE: After deletion of a task, the TASK_INDEX of tasks in the list may change.

⚠️ WARNING: It is impossible to retrieve data deleted by this command. Make sure you do not need the data in this task before you delete it!

Example of usage:

delete task 2

Sample output:

____________________________________________________________
 Noted. I've removed this task:
   [E][N] tutorial (at: 4:00 PM 21 Oct 2020)
 Now you have 2 tasks in the list.
____________________________________________________________

3.2.12 Marking a task as completed: done

Marks the specified task as done.

Format:

done [TASK_INDEX]

Example of usage:

done 2

Sample output:

____________________________________________________________
 Nice! I've marked this task as done:
   [D][Y] assignment (by: 11:59 PM 21 Oct 2020)
____________________________________________________________

3.2.13 Starting Topic Quiz - quiz

This type of quiz helps you to prepare for a particular topic. For more details, see section 3.4.1 Taking quizzes.

Format: quiz [TOPIC_NAME]

⚠️ WARNING: [TOPIC_NAME] is case-sensitive. e.g. quiz java will not start a Java quiz.

Example of usage:

quiz Java

Sample output:

____________________________________________________________
You are about to begin the quiz for Java.
____________________________________________________________

3.2.14 Viewing results for quizzes on a topic: results (Muthu)

This command allows you to look at the results for a topic. For more details, see result.

Format: results [TOPIC_NAME]

⚠️ WARNING: [TOPIC_NAME] is case-sensitive. e.g. results java will not enable you to see your Java quiz results.

Example of usage:

results Java

Sample output:

____________________________________________________________
Quiz 1: 1.0/2.0 -- Pass
Quiz 2: 2.0/2.0 -- Excellent
____________________________________________________________

3.2.15 Exiting the subject: exit

Exits the subjects and returns to the main level.

Format: exit

πŸ“οΈ NOTE: The exit command is not the same as the bye command. The bye command saves and closes the application, and can only be accessed on the main level.

Example of usage:

exit

Sample output:

____________________________________________________________
Going back to the main level.
____________________________________________________________

3.3 Topic Level Features (Sugandha)

Topic level features can only be used when the user is currently viewing a topic. On this level, users are able to add and delete flashcards, in the form of questions and answers. These flashcards can also be used to take topic or subject quizzes. For more information on subject quizzes see 3.1.8 Starting Subject Quiz and for topic quizzes see 3.2.13 Starting Topic Quiz. This section describes the usage of commands that can be used to add, delete and list flashcards.

3.3.1 Displaying all the available commands: help

Displays all available commands.

Format: help

Example of usage:

help

Sample output:

________________________________________________________________________________________________________________________
help:              shows the list of commands available at the topic level
add abc; def:      adds a flashcard with question 'abc' and answer 'def' in the current topic
list:              shows the list of all flashcards in the current topic
list all:          shows the tree of all subjects, topics, tasks and flashcards
delete 1:          deletes the 1st flashcard in the list
exit:              exits the topic to return to the subject level, where you can work with tasks and topics
________________________________________________________________________________________________________________________

3.3.2 Listing all flashcards: list

Prints a list of all flashcards of the topic you are currently viewing.

Format: list

list

Sample output:

____________________________________________________________
Here are the flashcard(s) under Java: 
1. Q: Name 3 Java primitive data types. 
   A: short, int, long.
2. Q: Is return 0 needed at the end of main method to indicate a successful execution? 
   A: No, it is considered as a successful execution unless an error is signalled specifically.
____________________________________________________________

3.3.3 Listing all items: list all

Prints a list of all items stored in the application.

Format: list all

Example of usage:

list all

Sample output:

____________________________________________________________
Here's a list of all items:
β”œβ”€ 1. CG2027
β”‚  β”‚  Topics
β”‚  β”œβ”€ 1. Arithmetic Logic Unit
β”‚  β”œβ”€ 2. Pass Transistor Multiplexers
β”‚  β”‚  Tasks
β”‚  └─ 1. [T][N] revise on Arithmetic Logic Unit
β”œβ”€ 2. CS2101
β”‚  β”‚  Topics
β”‚  β”œβ”€ 1. Oral Presentation
β”‚  β”œβ”€ 2. Product Demo
β”‚  β”‚  Tasks
β”‚  β”œβ”€ 1. [E][Y] Product Demo (at: 2:00 PM 5 Nov 2020)
β”‚  └─ 2. [T][N] look up on what is active listening
└─ 3. CS2113T
   β”‚  Topics
   β”œβ”€ 1. Abstraction
   β”œβ”€ 2. Class Diagram
   β”œβ”€ 3. Java (You are currently here)
   β”‚  └─ 1 Flashcard
   β”‚  Tasks
   └─ 1. [D][N] Final Project (by: 11:59 PM 11 Nov 2020)
____________________________________________________________

3.3.4 Adding a flashcard - add

Adds a flashcard under the topic you are currently viewing. These flashcards can be added to take notes. They are added in the form of questions and answers.

Format: add [QUESTION]; [ANSWER]

πŸ“οΈ ️ NOTE: Do not forget the semicolon, as it separates the question and the answer.

⚠️ WARNING: [QUESTION] and [ANSWER] of the flashcards are case-sensitive. Example of usage:

add What is the version of Java used in CS2113T; 11.0

Sample output:

____________________________________________________________
Got it. I've added this flashcard:
  Q: What is the version of Java used in CS2113T
  A: 11.0
Now you have 3 flashcards in the list.
____________________________________________________________

3.3.5 Deleting a flashcard: delete

Deletes the flashcard from the current topic, given the flashcard number. This can be used if you make a mistake or no longer need a flashcard. You can check the flashcard number from the list of flashcards, which is described next.

Format: delete [FLASHCARD_NUMBER]

πŸ“οΈοΈ NOTE: The FLASHCARD_NUMBER of a flashcard is the number assigned to each flashcard when the user uses the list command to print out the flashcards.

πŸ“οΈοΈ NOTE: After deletion of a flashcard, the FLASHCARD_NUMBER of topics in the list may change.

⚠️ WARNING: It is impossible to retrieve data deleted by this command. Make sure you do not need the data in this topic before you delete it!

Example of usage:

delete 3

Sample output:

____________________________________________________________
Noted. I've removed this flashcard:
  Q: What is the version of Java used in CS2113T
  A: 11.0
Now you have 2 flashcards in the list.
____________________________________________________________

3.3.6 Exiting the topic: exit

Exits the topic and returns the to the subject level.

Format: exit

πŸ“οΈ NOTE: The exit command is not the same as the bye command. The bye command saves and closes the application, and can only be accessed on the main level.

Example of usage:

exit

Sample output:

____________________________________________________________
Going back to the subject level.
____________________________________________________________

3.4 Other Features

This section expands on the features that are not specific to any part of the previous sections and features that require further explanations.

3.4.1 Taking quizzes (Muthu)

Once you have added the necessary flashcards, you can use the Quiz functionality to test yourself. This would let you gauge how much you understand from the material. This will be beneficial if you are running out of time to revise your own notes.

In this feature, the application prints the questions from the flashcards stored in the application. You need to complete the quiz within a certain time limit. There are two types of quizzes :

Quiz for a subject

This type of quiz helps you prepare for a particular subject.The application prints out the questions from the topics present in a subject.

Quiz for a Topic

This type of quiz helps you to prepare for a particular topic. The application prints out all the questions that have been saved in the specific topic .

πŸ“οΈ ️ NOTE: Ensure that you start a quiz for a subject/topic that has been added to the application and has a flashcard. Else, the application will not start the quiz.

Once you have entered the type of quiz you want to begin, the application starts the quiz. You are expected to answer these questions.

Format: Question [NAMEOFQUESTION]
Example: Question: What is the version of Java used in CS2113T?

Once the quiz has been completed, the application prints out the scores that you obtained. You will also be notified about the questions that you did not answer correctly.

The score is printed in the following format:

The code below shows an example of a result that you can get after attempting a quiz.

____________________________________________________________
Result:2/4 -- Pass
____________________________________________________________
Here are the questions which you got wrong.
           
Question:What is the version of Java used in CS2113T?
Correct Answer: 11.0 
Your Answer: 11.1
____________________________________________________________
Question:What is the ide used for the project? 
Correct Answer: Intellij
Your Answer: Vim
____________________________________________________________

You can stop the quiz by entering stop. The application then prints the score.
Format: stop
Sample output:The quiz has been stopped!.

____________________________________________________________
The quiz has been stopped!
____________________________________________________________
Result:1/2 -- Pass
____________________________________________________________

πŸ“οΈ ️ NOTE: If you stop the quiz, the application will only print the score for the particular quiz. It does not print the list of incorrect answers.

⚠️ WARNING: If you stop the quiz ,you cannot go back to the same quiz to continue it. You will have to restart another quiz.

3.4.2 Viewing quiz results (Muthu)

After completing a few number of quizzes, you would want to look at the results of the previous quizzes to see if you have improved over the time. You can use the results functionality to check your results. This can be done for the subjects or for the topics.

πŸ“οΈ ️ NOTE: Ensure that at least one quiz has been attempted under the subject or topic.

πŸ“οΈ ️ NOTE: The results for a subject is different from the results for a topic. The application only shows the result of a subject or topic that you requested for. Entering results CS2113T will not show you the results that you obtained for the topics in the CS2113T subject and vice-versa.

3.4.3 Storing data (Chin Hang)

When you exit the application, the data you have added to the application is automatically saved to the disk. The data is stored under the data/ folder in the same folder where you run the application.

⚠️ WARNING: The data (or any changes to the data) are not saved if the application is closed abnormally (i.e. not via bye command).

Instead of storing all data in one file, revisED creates a folder hierarchy under data/ following the logical structure of the subjects and topics added. For example, if you add a CS2113T subject and a Java topic under it, a CS2113T/ folder will be created under the data/ folder and an Java folder will be created under the CS2113T/ folder, as shown in figure 3.4.1 below.

revised.jar                     --> revisED Application
data                            --> Data main folder
└── CS2113T                     --> CS2113T subject folder
    β”œβ”€β”€ Java                    --> Java topic folder under CS2113T subject
    β”‚   β”œβ”€β”€ topicResults.json
    β”‚   └── flashcards.json
    β”œβ”€β”€ subjectResults.json
    └── tasks.txt

Figure 3.4.1 Sample directory structure created

The details of the files that are created under each subject and topic folder will be explained below.

πŸ“οΈοΈ NOTE: The name of the subject and topic folders can be changed manually, and the changes will be reflected in the application the next time you launch it.

tasks.txt

One tasks.txt file will be created under each subject folder. This file contains the tasks (Todo, Event, Deadline) you have added to a specific subject. An example of the file content is shown below.

T | 1 | someTodoTask                                    --> Todo task
D | 0 | someDeadlineTask | 11:59 PM 20 Dec 2020         --> Deadline task
E | 0 | someEventTask | 1:00 PM 10 Nov 2020             --> Event task

Figure 3.4.2 Sample tasks.txt content

The first column of data shows the type of task, where T corresponds to Todo task, D corresponds to Deadline task, and E corresponds to Event task. The second column shows if a task is completed, where 0 means not completed while 1 means completed. The third column shows the name of a task. Lastly, the fourth column shows the time and date of a deadline or event task.

⚠️ WARNING: Although you can change the content of this file manually, you are not advised to do so because a mismatch in the format will corrupt the data. If the data is corrupted, it will not be loaded by the application. Make a copy of the file before making changes if you have to do so manually.

subjectResults.json / topicResults.json

One subjectResults.json will be created under each subject folder, and one topicResults.json will be created under each topic folder. subjectResults.json stores the quiz results you have obtained from doing quizzes under a subject, while topicResults.json stores the quiz results you have obtained from doing quizzes under a topic. Both of the files have the same content format, and an example of the file content is shown below.

[
  {                                    --> Result record 1
    "score": 1.0,                      --> Score obtained
    "maxScore": 1.0,                   --> Maximum score that can be obtained
    "description": "Excellent"         --> Result description
  },
  {                                    --> Result record 2
    ...
  },
  ...
]

Figure 3.4.3 Sample subjectResults.json content

flashcards.json

One flashcards.json file will be created under each topic folder. This file stores all the flashcard data you have added under a specific subject and topic. An example of the file content is shown below.

[
  {                                            --> Flashcard 1
    "question": "x + y = 4. y = ? ",
    "answer": "4 - x"
  },
  {                                            --> Flashcard 2
    ...
  },
  ...
]

Figure 3.4.4 Sample flashcard.json content

Each entry enclosed with the curly braces ({}) corresponds to one flashcard.

⚠️ WARNING: Although you can change the content of this file manually, a mismatch in the format will corrupt the data. If the data is corrupted, it will not be loaded by the application. Therefore, make a copy of the file before making changes if you have to do so.

3.4.4 Loading data (Chin Hang)

Similar to storing data, when you launch the application, the saved data is automatically loaded from the disk.

πŸ“οΈ NOTE: Loaded subjects and topics will be sorted in alphabetical order, which can be seen when running list command. Flashcards, tasks, and results data, on the other hand, are not sorted and instead follow the added order.

⚠️ WARNING: If you have manually modified the contents of the files stored with wrong syntax, the files affected will not be loaded (and, instead, empty data will be loaded) when the application launches.

3.4.5 Exporting data (Chin Hang)

You can export all the data, including the quiz results and tasks, to a json file so that it can be imported into other applications that understand the data. To export the data, run the export command when you are in the main level of the application.

After running the command, the data will be exported to export/data.json under the same folder where revisED application resides. An example of the file content is shown below.

[
  {                                                                  --> Subject 1
    "title": "CS2113T",                                                
    "topics": {
      "topics": [                                                    --> Topics under CS2113T subject
        {                                                            --> Topic 1
          "title": "Java",                                        
          "flashcards": [same as the content of flashcards.json],    --> Flashcards under Java topic
          "results": {
            "resultList": [same as the content of topicResults.json] --> Results under Java topic
          }
        },
        ...
      ]
    },
    "tasks": {                                                       --> Tasks under CS2113T subject
      "taskList": [
        {                                                            --> Task 1
          "description": "someTodoTask",
          "isDone": false
        },
        {                                                            --> Task 2
          "dateTime": {
            "date": {
              "year": 2020,
              "month": 12,
              "day": 20
            },
            "time": {
              "hour": 23,
              "minute": 59,
              "second": 0,
              "nano": 0
            }
          },
          "description": "someDeadlineTask",
          "isDone": false
        },
        ...                                                       
      ]
    },                            
    "results": {
      "resultList": [same as the content of subjectResults.json]    --> Results under CS2113T subject
    }
  },
  ...                                                               --> More subjects
]

Figure 3.4.5 Sample data.json content

Note that the content of the file follows the same logical structure as that in the data/ folder.

πŸ“οΈ ️ NOTE: Importing of the exported file is currently not supported as it is meant to be read by other applications. Nevertheless, the feature may be implemented in the future versions if it is highly requested.

3.4.6 Sorting tasks (Muthu)

The tasks in the application are sorted according to their deadlines. Tasks which are due soon are placed at the front of the list, while tasks which are due later are placed at the rear. Todo tasks are placed at the end of the list since they do not have any deadlines.

Suppose you use the list command and get this output:

____________________________________________________________
Here are the tasks(s) under CS2113T: 
1. [D][N] homework (by: 6:00 PM 6 Nov 2020)
2. [E][N] marathon (at: 6:00 PM 9 Nov 2020)
____________________________________________________________

Adding the following deadline by deadline project /by 18:00 07-11-2020 and using the list command would yield this output.

____________________________________________________________
Here are the tasks(s) under CS2113T: 
1. [D][N] homework (by: 6:00 PM 6 Nov 2020)
2. [D][N] project (by: 6:00 PM 7 Nov 2020)
3. [E][N] marathon (at: 6:00 PM 9 Nov 2020)
____________________________________________________________

3.4.7 Printing upcoming tasks (Muthu)

Once you open the application, it will print the tasks which are due in the upcoming week. Only tasks which have not been completed yet will be printed out. The tasks will be sorted out according to the subjects, then the date and time at which the task is due.

Example:


Hello from
                                    ___________
                                    |  __ |  _ \
 ____  ______      _____   ________ |  |__| | | |
|  __|/ __ \ \    / /| |  /  _____/ |   __| | | |
| |  |  __/ \ \__/ / | | /_____  /  |  |__| |_| |
| |   \___|  \____/  |_|/_______/   |_____|_____/

____________________________________________________________
Hello! I'm revisED
____________________________________________________________
Here are the upcoming tasks for next week!
CS2113T
1. [D][N] homework (by: 6:00 PM 6 Nov 2020)
CG2027
2. [E][N] exam (at: 7:00 PM 9 Nov 2020)
____________________________________________________________
Alright, What can I do for you?
____________________________________________________________
____________________________________________________________
Type help for all available commands
____________________________________________________________

4. FAQ

This section answers some common questions that you may have about revisED.

Q: I moved the jar file to another location. Will my previous data be erased automatically?
A: Do not worry. You previous data will still be avaiable in the data/ folder.

Q: I accidentally saved a task as an event, when it is a deadline. Is there any method to change the type of the task?
A: Unfortunately, no. You will have to delete the event using the delete task [TASK_INDEX]to delete the task, and then add the task back using the deadline [DESCRIPTION] /by [TIME] command.

Q: Is there any limit to the number of topics/subjects that I can store in my application?
A: No. You can store unlimited number of topics/subjects.

Q: A file named revisED0.log appears in the folder after I run the application. What is it? Can I delete it?
A: This is the log file that logs down the activities of the application when you are running it. In the case where you find any bugs or the application crashes, you can send us a bug report here along with the log file to help us with solving the bugs. Nevertheless, you can delete it if you want to, and it does not affect the behavior of the application in any way.

5. Command Summary (Muthu)

A summary of all the commands available is shown in the table below.

Action Examples
SUBJECT COMMANDS (MAIN LEVEL)
Add subject add CS2113T
Change to the specific subject subject CS2113T
Start a quiz for a subject quiz CS2113T
View results for a subject results CS2113T
Find Subject find CS2113T
Delete Subject delete 1
List all subjects list
Export data export
Exit application bye
TOPIC AND TASK COMMANDS (SUBJECT LEVEL)
Add topic add Java
Delete topic delete topic 4
Change to the specific topic topic Java
Start a quiz for a topic quiz Java
View results for a topic results Java
Add todo todo revise for test
Add deadline deadline assignment /by 23:59 21-10-2020
Add an event event tutorial /at 16:00 21-10-2020
Find tasks find assignment
Complete task done 4
Delete task delete task 4
List topics and tasks list
Exit subject exit
FLASHCARD COMMANDS (TOPIC LEVEL)
Add flashcard add What version of Java are you using; 11.0
Delete flashcard delete 1
List flashcards list
Exit topic exit
OTHER COMMANDS (All LEVELS)
List all the items in the application list all
List all the commands help