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

[CS2103T-F10-1] ResuMe #21

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

Conversation

chrisjwelly
Copy link

Team Members:
@chrisjwelly : Christian James Welly
@helloImHai : Nguyen Chi Hai
@wardetu : Nguyen Minh Hoang
@nhamhung : Nham Quoc Hung
@duongphammmm : Pham Thuy Duong

Copy link

@foochifa foochifa left a comment

Choose a reason for hiding this comment

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

Good job! May need to check for carelessness in naming.

@@ -316,30 +316,73 @@ _{More to be added}_
(For all use cases below, the *System* is the `AddressBook` and the *Actor* is the `user`, unless specified otherwise)
Copy link

Choose a reason for hiding this comment

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

The system name needs to be changed.

[none]
** 3a1. ResuMe shows an error message
+

Copy link

Choose a reason for hiding this comment

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

Maybe need to include a use case ends or resumes

[none]
** 1a1. ResuMe shows an error message.
+

Copy link

Choose a reason for hiding this comment

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

Maybe need a use case ends or resumes

Comment on lines 344 to 348

1. User enters `find KEYWORD` without specifying a `TYPE`
2. ResuMe displays all items whose names contain the `KEYWORD`
3. If user enters `find -TYPE KEYWORD`
4. ResuMe displays only items of the `TYPE` whose names contain the `KEYWORD`
Copy link

Choose a reason for hiding this comment

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

I think it may be a little too specific.
Maybe it can be:
User finds item using keyword etc...

Also,
It seems like these could be separated:
1-2 is Use case: Find item without specifying type
3-4 is Use case: Find item with specified type

1. User requests to list all items or only items of a specific `TYPE`
2. ResuMe shows a list of corresponding items
3. User checks for the `ID` of a specific item in the list to delete
4. User requests to edit a specific item in the list
Copy link

Choose a reason for hiding this comment

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

I think this may be 'delete' instead of 'edit'


1. User requests to list all items or only items of a specific `TYPE`
2. ResuMe shows a list of corresponding items
3. User checks for the `ID` of a specific item in the list to delete
Copy link

Choose a reason for hiding this comment

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

This may be borderline specific? Maybe can combine with line 4?
Maybe can change to User requests to delete a specific item based on ID?
Then extension can still follow

Comment on lines 325 to 326
3. User checks for the `ID` of a specific item in the list to edit
4. User requests to edit a specific item in the list
Copy link

Choose a reason for hiding this comment

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

Maybe can combine these two lines? Borderline specific.
Maybe can change to User requests to edit a specific item based on ID?
Then extension can still follow

Copy link

@zhuhanming zhuhanming left a comment

Choose a reason for hiding this comment

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

Excellent documentation! Really very, very impressed by all the UML diagrams and screenshots. I myself can't wait to use your app.

@@ -64,13 +64,24 @@ image::LogicClassDiagram.png[]
[discrete]

Choose a reason for hiding this comment

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

The Parser is still named AddressBookParser, need to change!

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with what @zhuhanming is pointing out.


.Component interactions for initialisation

image::ArchitectureInitSequenceDiagram.png[]

Choose a reason for hiding this comment

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

Excellent diagram!


.Component interactions for `delete 1` command
image::ArchitectureSequenceDiagram.png[]

Choose a reason for hiding this comment

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

The Save to file action should be changed to its method name. Furthermore, the arrow is detached from the activation bar, should be touching instead.

Copy link
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, why are there UML notes for your sequence diagram? Are these notes really helpful in this case, or can the reader get the same information from your descriptive method names?

@@ -79,14 +90,15 @@ image::UiClassDiagram.png[]

*API* : link:{repoURL}/src/main/java/seedu/address/ui/Ui.java[`Ui.java`]

The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `ItemDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.

Choose a reason for hiding this comment

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

Excellent!

@@ -98,13 +110,13 @@ image::LogicClassDiagram.png[]
*API* :
link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`]

Choose a reason for hiding this comment

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

This looks like the same diagram as before, not sure if it'll be good to replace one of the two.

. The result of the command execution is encapsulated as a `CommandResult` object which is passed back to the `Ui`.
. In addition, the `CommandResult` object can also instruct the `Ui` to perform certain actions, such as displaying help to the user.

Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete 1")` API call.
Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete 1 i/ res")` API call.

.Interactions Inside the Logic Component for the `delete 1` Command
image::DeleteSequenceDiagram.png[]

Choose a reason for hiding this comment

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

Excellent!

@@ -114,6 +126,7 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X
[[Design-Model]]
=== Model component

// TODO: Fix diagram layout
.Structure of the Model Component
image::ModelClassDiagram.png[]

Choose a reason for hiding this comment

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

Excellent!

Choose a reason for hiding this comment

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

Perhaps one area of improvement is to make the numbers on the arrows easier to read. Some of them are overlapping and hard to read.

Choose a reason for hiding this comment

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

Another point: Believe that ReadOnlyUserPrefs should have an <<Interface>> header.

Copy link
Contributor

Choose a reason for hiding this comment

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

Some things to consider:

  • For the arrow pointing to the Model interface (not from any class), where should it start from?
  • Does the arrow pointing to the Model interface from ModelManager accurately reflect the relationship between the two?
  • Is Item an interface? If not, why are classes like Internship, Resume etc implementing Item?

===== Adding into the resume
The following screenshot illustrates what happens when we use `redit` to add item into the resume. The numbers in the command represent the index of the item in the list. After the end of the command, the number of item in the resume would have increased.

image::ReditAddIntoResume.png[][AddIntoResume,442,337]

Choose a reason for hiding this comment

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

Excellent screenshots!

image::ReditTags.png[][ReditWithTags,442,337]

==== Design Considerations
===== Aspect: Whether `ResumeEditCommand` should extend `EditCommand`

Choose a reason for hiding this comment

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

Excellent considerations here!

Copy link

@ChesterSim ChesterSim left a comment

Choose a reason for hiding this comment

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

Overall, still a great DG effort, if possible, make the Sequence Diagrams smaller so as to have a clearer view on the relevant parts!

@@ -114,6 +126,7 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X
[[Design-Model]]
=== Model component

// TODO: Fix diagram layout
.Structure of the Model Component
image::ModelClassDiagram.png[]

Choose a reason for hiding this comment

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

Another point: Believe that ReadOnlyUserPrefs should have an <<Interface>> header.


== Implementation

This section describes some noteworthy details on how certain features are implemented.

=== [Proposed] Resume Edit feature

Choose a reason for hiding this comment

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

This section's screenshots feels more suited for a User Guide

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with @ChesterSim 's comment. Are there UML diagrams which can effectively capture the implementation details behind this feature instead?

ie. `AddItem` can add `Internship` to the `Internship` list, or add `Skill` to `Skill` list.

****
*Conclusion:* We went with our current design because it allows for each command type to only have one distinct job which

Choose a reason for hiding this comment

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

Good initiative for a conclusion!


The following sequence diagram shows how the `me` feature allows user to edit the user profile:

image::MeSequenceDiagram.png[]

Choose a reason for hiding this comment

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

Me Feature Implementation Sequence Diagram is wrong → control at EditUserCommand has two concurrent calls → getUser() and new Person("Quoc Hung") called before either returns anything

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with @ChesterSim 's comment.

@@ -218,21 +516,27 @@ image::CommitActivityDiagram.png[]

Choose a reason for hiding this comment

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

Commit Activity Diagram is unchanged!

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with @ChesterSim 's comment.

Copy link
Contributor

@joanneong joanneong left a comment

Choose a reason for hiding this comment

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

I took a look at your DG, and focused on the Design and Implementation sections. Overall, the team has done a good job updating the DG :)

However, there are some small bugs that can be fixed for the DG to be even better. Keep it up!

@@ -64,13 +64,24 @@ image::LogicClassDiagram.png[]
[discrete]
Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with what @zhuhanming is pointing out.


.Component interactions for `delete 1` command
image::ArchitectureSequenceDiagram.png[]
Copy link
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, why are there UML notes for your sequence diagram? Are these notes really helpful in this case, or can the reader get the same information from your descriptive method names?

@@ -114,6 +126,7 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X
[[Design-Model]]
=== Model component

// TODO: Fix diagram layout
.Structure of the Model Component
image::ModelClassDiagram.png[]
Copy link
Contributor

Choose a reason for hiding this comment

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

Some things to consider:

  • For the arrow pointing to the Model interface (not from any class), where should it start from?
  • Does the arrow pointing to the Model interface from ModelManager accurately reflect the relationship between the two?
  • Is Item an interface? If not, why are classes like Internship, Resume etc implementing Item?


== Implementation

This section describes some noteworthy details on how certain features are implemented.

=== [Proposed] Resume Edit feature
Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with @ChesterSim 's comment. Are there UML diagrams which can effectively capture the implementation details behind this feature instead?


* ** Alternative 2:** `ResumeEditCommand` extends `EditCommand`

** Pros: Some methods in `EditCommand` may be able to inherited by `ResumeEditCommand`, reducing code duplication.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you spot a slight grammatical error in this sentence?

* ** Alternative 1 (current choice):** `ABCCommand` is separated into many `ABCItemCommand`.

** Pros: More OOP. Flexible behaviour of `ABCItemCommand` and can be easily changed as required. No
casing required. Each `ABCItemCommand` has it's own and distinct functionality.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you spot a small grammatical error here?

Copy link
Contributor

Choose a reason for hiding this comment

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

Also, what does "casing" mean?


Command sequence:

1. User type `me` command in the command box.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you see the very slight grammatical mistake?


The following sequence diagram shows how the `me` feature allows user to edit the user profile:

image::MeSequenceDiagram.png[]
Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with @ChesterSim 's comment.

with the app.

==== Change Background and Font Color
This allows the user to change the background and font color using rgb or hex color codes.
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you think listing these sections contribute to a reader's understanding of the implementation for these features?

@@ -218,21 +516,27 @@ image::CommitActivityDiagram.png[]

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree with @ChesterSim 's comment.

helloImHai and others added 26 commits April 13, 2020 00:57
… into Update-DG

* 'master' of https://github.com/AY1920S2-CS2103T-F10-1/main:
  Remove Company A
  Modify SortCommandTest as suggested
  Add tests for `SortResumesCommand` and `SortSkillsCommand`
  Add tests for `SortNotesCommand` and `SortProjectsCommand`
  Add tests for `SortInternshipsCommand`
  Fix some initialization
  Add `SortCommandParserTest`
  Amends `equals` for sort commands
  a
  Initial commit for sort tests
  Add `equals` for the sort command
  Update UG: fix typo and format consistency
  Remove unused imports
  Refactor Sort commands
Modify edit so that cannot edit to same item
Update DG: introduction + model class diagram
Fix for my picture in UG to show
Add `UserPrefsTest` and `VersionedResumeBookTest`
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.

9 participants