Skip to content

Commit

Permalink
Merge pull request #295 from mingyuanc/292-final-edit-ppp
Browse files Browse the repository at this point in the history
Update PPP
  • Loading branch information
mingyuanc authored Nov 12, 2023
2 parents 7d41c44 + 533966c commit 971e49a
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 74 deletions.
161 changes: 89 additions & 72 deletions docs/team/mingyuanc.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,98 +6,115 @@ title: Ching Ming Yuan's Project Portfolio Page
### Project: ProfBook

ProfBook is a desktop address book application used for easy management of tasks, group schedules, and notes for every
tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in
Java, and has about 10 kLoC.
tutorial slot and group. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is tailor-made
to mimic the familiar terminal experience for our target users by introducing Linux-style commands, Dynamic commands and
a terminal like structure and interface. It is written in Java, and has about 10 kLoC.

Given below are my contributions to the project.

### Features Contribution

* **Dynamic Commands**:
* What it does: Allow user's command to have different effect based on their current location in the file structure
* Justification:
* Cuts down on the number of command that the user have to remember
* Commands become more intuitive and determinant as it's effect depends on their environment
* Safer command execution as we can cross-check the current environment with the command
* Highlights:
* Implementation of this required an in-depth analysis of design alternative.
* There were many ways of achieving the same result, but I believe the current implementation is most in
accordance with OOP's SOLID principal.
* Implementation were also made generic to allow for future extensions if needed.
* Implementation was challenging as it required modifying the whole flow and structure of the application

* **Streamline model modifications**:
* What it does: Provide a safe way for the command to modify the model
* Justification:
* Modification of the model should be done through a model manager instead of directly being modified by an
external class in accordance with OOP principals
* Allow for the future migration to immutable model
* Highlights:
* Implementation of this required an in-depth analysis of design alternative as there was a need for a generic
way to modify all the current different classes alongside future classes.
### **Code contributed**:

### Classes Contribution
[RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=w15&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code&since=2023-09-22&tabOpen=true&tabType=authorship&tabAuthor=mingyuanc&tabRepo=AY2324S1-CS2103T-W15-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false).

* **Introduced TaskListManager Class**:
### Features Contribution

* Manages the required operations of TaskList
* Ensure the expected behaviour with regard to managing the tasks
* No Duplicate tasks
* Able to accept subclasses of Tasks
* Other classes not being able to directly modify tasks
* **Introduced ChildManager Class**
* **Designed the ProfBook folder structure**:
* This folder structure allows our target users to organise their groups and students in an intuitive way
* justification:
* The folder structure closely mimics the natural hierarchy that our target user are familiar to.
* Such a structure would allow us to create more tailor-fit features such as Dynamic command and terminal-like
structure.
* Highlights:
* Deep understanding of OOP principals was needed to craft classes generic yet robust enough to capture the
behaviour of each hierarchy. This proved to be difficult as in-depth analysis of design alternative were required
* Implementation was challenging as it was hard to integrate with our dynamic commands.

* Manages the operation required to modify the children
* Ensure the expected behaviour with regard to managing the children
* No Duplicate children across the whole profbook
* Children are identified by their Unique ID
* Other classes not being able to directly modify children
### Classes Contribution

* **Introduced Student Class**
* **Introduced `TaskListManager` Class**:
* Manages the required operations of TaskList, reduces duplicated code.
* Ensure the expected behaviour with regard to managing the tasks:
* No Duplicated tasks.
* Able to accept subclasses of Tasks, more extensible.
* Other classes not being able to directly modify tasks.

* Encapsulates the required information to represent student
* **Introduced `ChildrenManager` Class**
* Manages the operation required to modify the children, reduces duplicated code.
* Ensure the expected behaviour with regard to managing the children.
* No Duplicate children across the whole ProfBook.
* Children are identified by their Unique ID.
* Other classes not being able to directly modify children.

* **Introduced Group Class**
* **Introduced `ChildrenAndTaskListManager` Class**
* Wrapper class that manages the operations required for both TaskList and Children.

* Encapsulates the required information to represent a group within tutorial group
* **Introduced `Student` Class**
* Encapsulates the required information to uniquely represent a student.

* **Introduced Root Class**
* **Introduced `Group` Class**
* Encapsulates the required information to uniquely represent a group in a tutorial slot.

* Encapsulates the required information to represent the whole application
* **Introduced `Root` Class**
* Encapsulates the required information to represent the whole application.

* **Enhanced StateManager Class**
* Provides the logic to safely manipulate data stored in Student/Group/Root
* Ensure separation of concern by implementing other two other classes, TaskOperation and ChildOperation,
each handling their own operation.
* Ensure the expected behaviour with regard to manipulating the model
* Path given matches the expected outcome
* Commands are unable to directly modify the model
* **Introduced `TaskOperation` and `ChildOperation` Class**
* Provided an operation class to allow `Command` logic to manipulate the model without exposing internal details.
* Justification:
* Follows OOP principals more closely.
* Allows for the future migration to an immutable model.
* Adds another layer of safety by checking the validity and presence of the directory before performing modification.
* Highlights:
* Deep-understanding of what is required by `Command` class was required when designing this class.

### **Code contributed**:
* **Enhanced `ModelManager` Class**
* Provides the logic to safely manipulate data stored in Student/Group/Root

[RepoSense link](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=w15&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code&since=2023-09-22&tabOpen=true&tabType=authorship&tabAuthor=mingyuanc&tabRepo=AY2324S1-CS2103T-W15-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false).
<div style="page-break-after: always;"></div>

### Project Management:

* Managed Releases v1.2 on GitHub

### Documentations:

* User Guide:
* Non-Feature specific
* Transferred initial command description from Google documents into Markdown format
* Wrote the overview of the whole project
* Wrote the overview for all three of our main features
* Updated the command summary page
* Developer Guide:
* to be added soon.

* Created and assigned issues for V1.3, V1.4

## Documentations:

### User Guide Contributions
* **Non-Feature Aspects**
* Transferred initial command description from Google documents into Markdown format.
* Provided skeleton format for each command so that teammates are able to more efficiently populate their features.
* Wrote the overview of the whole project.
* Wrote the overview for all three of our main features.
* Updated the command summary page.
* **Feature Aspects:**
* `ls` command.

### Developer Guide Contributions
* **Non-Feature Aspects**
* Migrated old documents to follow ProfBook new requirements and style.
* Updated introduction paragraphs .
* Proofread peer's contributions and performed changes for a more seamless reading experience.
* Performed final checks before submission.
* **Feature Aspects:**
* Wrote and create UML for `Model` component including it subpackages such as:
* `ProfBook`
* Wrote and created UML for the implementation of
* Folder structure
* Moving students
* Adding a student/group
* Editing a student/group
* Adding tasks for all/specific student/group

* **Community**:
* PRs reviewed (with non-trivial review comments):
* **[Pull Request #71](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/71)**
* **[Pull Request #87](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/87)**
* **[Pull Request #113](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/113)**
* **[Pull Request #115](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/115)**
* **[Pull Request #117](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/117)**
* **[Pull Request #118](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/118)**
* **[Pull Request #71](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/71)**
* **[Pull Request #87](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/87)**
* **[Pull Request #113](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/113)**
* **[Pull Request #115](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/115)**
* **[Pull Request #117](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/117)**
* **[Pull Request #118](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/118)**
* **[Pull Request #128](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/128)**
* **[Pull Request #286](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/286)**
* **[Pull Request #289](https://github.com/AY2324S1-CS2103T-W15-2/tp/pull/289)**
* Contributions to forum:
* **[Shared my GUI](https://github.com/nus-cs2103-AY2324S1/forum/issues/101#issuecomment-1706285315)**
* **[Help solved an issue](https://github.com/nus-cs2103-AY2324S1/forum/issues/110#issuecomment-1709913495)**
4 changes: 2 additions & 2 deletions docs/team/nereuswb922.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Java, and has about 10 kLoC.
2. **Introduced `Id` class :**
- Represent unique id of group and student.
3. **Introduced `Option` class :**
- Similar to AB3 `Prefix` class, but with short-hand and long-hand names.
- Similar to AB3 `Prefix` class, but with shorthand and long-hand names.
- e.g. Name option can be passed using option `--name` or `-n`.
4. **Introduced `Displayable` interface :**
- Classes that implement this interface can be displayed in the `ItemListPanel`.
Expand Down Expand Up @@ -57,7 +57,7 @@ coming soon
- Established our team's **organization** and **repo** on GitHub.
- Set up a **GitHub project** to manage issues related to user stories and tasks.
- Setup **project website deployment**.
- Integrated **Netifly** to enable automatic deployments of our PR previews.
- Integrated **Netlify** to enable automatic deployments of our PR previews.
- Integrated **Codecov** to automate code coverage assessment of PR.
- Wrapped up milestone v1.1 and released JAR file.
- Recorded video for v1.2 demo.
Expand Down

0 comments on commit 971e49a

Please sign in to comment.