Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CS2113T-F12-2] AniChan #54

Open
wants to merge 1,444 commits into
base: master
Choose a base branch
from

Conversation

ChanJianHao
Copy link

AniChan is an all-rounded tool to effectively create and organise anime lists with viewing statistics, efficiency-focused features, and tools to improve anime-watching experience.

Copy link

@BenardoTang BenardoTang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very well documented and explained for the most part. However, do take a look at some of the diagrams as they seem overly complicated and some don't load in the website. Good Job!!


<br/>

![Main Sequence Diagram](images/Overall-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
The sequence diagram dosen't seem to load in the DG. Seems to happen for other components below...

<br/>

### 4.1 Estimation Feature

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2

This portion seems overly confusing to a new user like me... i think a flow diagram/class diagram would greatly help with explaining this implementation.


<br/>

![Estimate Command Sequence Diagram](images/EstimateCommand-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capture
The diagram is too complicated, do consider splitting the diagram up to smaller portions. It is also difficult to read the words inside the diagram

<br/>

##### Aspect: When should the program read the script file

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capture
While i feel the explanations here are well done, It could be too wordy and overly complicated. It should be easier to understand with a general flow diagram to justify your design choices.


<br/>

![Watchlist Command Sequence Diagram](images/WatchlistCommand-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Capture

Should the Sequence diagram be split into different portions? It is difficult to understand what's going on...

An example scenario would be browsing the 2nd page of a **sorted** list in ascending order.
The only step that would change would be at Step 3, where it will perform sorting of `AnimeData` list.

![Browse Object Diagram 3](images/Browse-Sorted-State.png) <br/>
Copy link

@BenardoTang BenardoTang Oct 28, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that there is a diagram for almost after every step, well done!

Copy link

@Bryanbeh1998 Bryanbeh1998 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall a very well documented DG! Would look forward to trying out your product. Perhaps you can work on making the sequence diagram less complex. There is a part where it may seem a little too wordy as well. Great job!


<br/>

![Estimate Command Sequence Diagram](images/EstimateCommand-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Diagram is too complex. The words may also be a little too small for people to read.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps you can consider breaking it down further


The user executes `watchlist -d 2` to delete the second watchlist ("NewAnime") in the list.

![Watchlist Command State After Delete Diagram](images/WatchlistCommand-After-Delete.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Words are too small in the sequence diagram. Hard for the user to read and follow


<br/>

![Main Sequence Diagram](images/Overall-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The diagram does not load on the website. Perhaps you can check again


<br/>

#### 4.1.2 Design Consideration

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section although well documented, may seem a little too wordy

Copy link

@skyaxe97 skyaxe97 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good and detailed! Do look out for when the fonts in the diagrams get a little too tiny. Besides that, good work!

Comment on lines 31 to 33
## 1. Introduction
**AniChan** is a command-line application written in **Java 11**. It is written using the Object-Oriented Programming (OOP) paradigm which provides us with means to structure a software program into organized, reusable and reusable pieces of code that makes it good for future improvements and revisions.
<br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should a more detailed introduction of the program be included here to introduce the functionality of the application?


<br/>

![Main Sequence Diagram](images/Overall-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Is there a missing name of method call from XYZParser to Command? And also, would it be better if the line from the activation bar of XYZParser to Command be lower on the activation bar? (It doesn't appear too distinct on the website)


<br/>

![Watchlist Command Sequence Diagram](images/WatchlistCommand-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Maybe consider using reference frames to split the diagram into different portions to make it more readable? It may consequently help to increase the font size of the wordings as it does get a little too small to read.

`BrowseCommand#buildBrowseOutput()` will shift its page window down by 1 page as depicted in the diagram below.

![Browse Object Diagram 2](images/Browse-Default-State2.png) <br/>
*Figure 13: Browse Next Page Object Diagram*

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Good use of object diagrams to reflect the states.

@jtankw3
Copy link

jtankw3 commented Oct 29, 2020

Hi team F12-2, please rename your PR with CS2113T instead.

Copy link

@chewyang chewyang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DG is well formatted and consistent, looks neat and diagrams are accurate and used when needed. Although some UML diagrams could be cropped and zoomed in to the use, omitting the main and parser classes as it may be a little repetitive. But overall great effort!


<br/>

### 3.3 Parser Component

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Hi! this is a very clear diagram but should this arrow be a arrow with an empty head instead to show inheritance?

*Figure 21: Bookmark Entries with more Add*

The following sequence diagram shows how the `Add Bookmark` operation works:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Great use of colours to show the components, however should this diagram include sequences already introduced earlier? will showing the sequence after the execute() be clearer?


![Bookmark State After Delete Diagram](images/Bookmark-After-Step6.png) <br/>
*Figure 23: Bookmark Entries After Delete*

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Great use of tables to illustrate the bookmarking implementation!

Though the 1st approach could have created a more authentic browsing feature it would not fit the requirements as well as the
2nd approach. The 2nd approach allows for more precise browsing of pages means that more experienced users are able to utilise the
tool quicker and to the same effect as the first approach. As a result, the 2nd approach was chosen as a better fit of the requirements
and in favour of having an application that is highly object-oriented.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to see that all aspects for the browsing have been well thought out and considered before making your decision on the implementation to go for. Well documented as well!

Copy link

@yAOwzers yAOwzers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall good job for the DG! There are some formatting issues like irregular spacings between titles and headings, but other than that 🥇

Comment on lines 36 to 37
## 1. Introduction
**AniChan** is a command-line application written in **Java 11**. It is written using the Object-Oriented Programming (OOP) paradigm which provides us with means to structure a software program into organized, reusable and reusable pieces of code that makes it good for future improvements and revisions.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be better if your team included a bit more details of what this application does/functions?


<br/>

![Architectural Diagram](images/Architectural-Design.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was the intention of the arrows from the main component to not be connected (touching) the other components? At the current moment, I feel a little unsure of where the main arrows should be pointing at.


*Figure 1: Architecture Design Diagram*

> :bulb: The images used are stored in the directory: `images/`. If you wish to update a diagram you may replace the images in this folder.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be good to indicate what the light bulb image means at the beginning of the DG to help the user understand the logos and images used in this document!

Comment on lines 307 to 315
| Attribute | Option | Function |
| --- | --- | --- |
| order | 0 | Ascending |
| order | 1 | Descending |
| sortType | 0 | No Sort |
| sortType | 1 | by name |
| sortType | 2 | by rating |
| sortType | 3 | back to original |
| page | \>= 1 | page number |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this concept of using a table as information is presented in a very readable and simple manner. The only question I have is with regards to the heading. Maybe it would be better if you explained to the user what the headings were before introducing them? If not it might lead to further confusion.

**Step 4:** Now `BrowseCommand` will utilise its `BrowseCommand#buildBrowseOutput()` operation to access all
`Anime objects within the page window, as shown in the diagram below.

![Browse Object Diagram 1](images/Browse-Default-State.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Object diagrams do make it very simple for developers to understand the entire structure of a said component/function. From what I gathered, your team is explaining steps with respect to a given example. Would a sequence diagram be better at facilitating the flow of information since the users can read in a linear flow?


Here is the sequence diagram to better illustrate the lifecycle of a browse command.

![Browse Sequence Diagram](images/Browse-SequenceDiagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Nice sequence diagram to illustrate the entire lifecycle of the browse command! I'm not sure if it's my device but there seems to be some missing arrows for return values? Or is that the intended course of action for the various methods that were called? Also, the activation bar should end at appropriate life cycles, however there are a few activation bars that are left elongated.


**Step 2:** The `Parser` class would then extract out `info` from the input given, which will instantiate a new `InfoParser` object, in which `InfoCommand` object is constructed as well.

**Step3:** The `InfoParser#parse()` method will be invoked, and this will validate the parameters given by the user. Once validated, ANIME_ID will be set inside the `InfoCommand` object that was created previously. `InfoCommand` object will be returned back all the way to `Main`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There might be an overlooked irregular spacing here!


> :memo: The other options (`-s`, `-l`, `-d`) follows a similar process, only the list and switch option does not interact with `StorageManager` and `Watchlist`.

![Workspace Command Sequence Diagram](images/WorkspaceCommand-Sequence-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Just to check, the box seems to be missing the label (eg. alt, opt)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello, may I know which box you're referring to?

Comment on lines 640 to 643
| Approach | Pros | Cons |
| --- | --- | --- |
| After each command execution **(current design)**. | User don't have to worry about lost data if their application or system crashes midway. | Application might slow down when the data grows large. |
| When the user exits the program. | Saving is more efficient and could improve performance. | User may lose their data if the application or system crashes midway. |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simple to read and understand! Good job 👍

The following sequence diagram shows how the `Add Bookmark` operation works:

![Bookmark Add Command Sequence Diagram](images/Bookmark-Add-Sequence-Diagram.png) <br/>
*Figure 27: Bookmark Add Command Sequence Diagram*

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Good job on the sequence diagram, everything looks to be in-check! Easy to understand 👍

@ChanJianHao ChanJianHao changed the title [CS2113-F12-2] AniChan [CS2113T-F12-2] AniChan Oct 29, 2020
@ChanJianHao
Copy link
Author

Hi team F12-2, please rename your PR with CS2113T instead.

Hello, we have renamed the PR. Thank you!

Copy link

@MuhammadHoze MuhammadHoze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, good use of the tables and diagrams, maybe you could include them for most if not all of the implementations. Elaboration of each implementation is done clearly as well.


<br/>

![Architectural Diagram](images/Architectural-Design.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest you could put main in the middle and connect the rest of the relevant boxes to it rather than the floating arrows which may arise confusion.

* `User`: Manages the workspace(s) and user data.
* `AnimeData`: Provides data from the anime source file.
* `Storage`: Reads data from, and writes data to, the hard disk.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nicely explained here what each class does.

**Step 4:** The `ViewWatchlistCommand#execute()` would then be called by `Main`, in which the WATCHLIST_ID will be validated, and if valid, a string containing all the anime name inside the active `Watchlist` will be built and returned to `Main`, where it will be printed out by `Ui`.

**Step 5:** `ViewWatchlistParser`, `ViewWatchlistCommand`, `Parser` and `Command` are terminated

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest maybe having a diagram for certain steps here like for your other implementations for better understanding


The Bookmark class uses three ArrayList to store bookmark entries of the user, these arraylists maintain information about the anime index, episode and notes. The synchronisation between arraylist is required so that it enables easy retrieval of bookmark information using the bookmark index on the three arraylist.

![Bookmark Class Diagram](images/Bookmark-Class-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well done here! got a better picture on this implementation

<br/>

### 3.7 Storage Component
![Storage Class Diagram](images/Storage-Class-Diagram.png) <br/>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clear view of all the class diagram


<br/>

![Architectural Diagram](images/Architectural-Design.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Where are the arrows from the main intended to point to? It might be better if the arrows point more specifically.

The UI component consists of a `UI` class that handles all user input and system output. The UI is only dependent on the `Main` class and does not interact directly with other classes ensuring high cohesiveness and separation of roles.

The `Ui` component listens for:
* the execution of commands to print the result of the Command.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
Perhaps the Command could use the Command markdown instead since it is a major component, and also looks more consistent with the rest of the DG.

![UI Class Diagram](images/Ui-Class-Diagram.png) <br/>
*Figure 3: UI Class Diagram*

The UI component consists of a `UI` class that handles all user input and system output. The UI is only dependent on the `Main` class and does not interact directly with other classes ensuring high cohesiveness and separation of roles.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
It might be better UI could use the UI markdown as well to maintain the consistency of the markdowns.

| --- | --- | --- |
| 1. Leaving the list unsorted | - No complexity and fastest approach | - List will be unsorted and may cause confusion to users |
| 2. Resorting the list again | - The list will be back into its original form before browsing | - May hinder performance as resorting could take time <br/> - Requires altering of the main list |
| 3. Cloning a duplicate animeData object to sort | - The list will be back to its original form <br/> - The main list will not be affected at all | - Expensive operation that will require large storage and time complexity |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
The use of a table is appropriate but it is a little wordy. Perhaps some icons could be used to increase the readability of the table.

ChanJianHao and others added 30 commits November 9, 2020 20:41
…UpDiagram

Merge Update the image to reflect new changes
…or-Fix

Merge ChanJianHao-V21-Javadocs-Minor-Fix
Merge Update UG to change release link to V2.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.