Skip to content

lanjia0 iP#642

Open
nicho369 wants to merge 77 commits into
nus-cs2103-AY2526S1:masterfrom
nicho369:master
Open

lanjia0 iP#642
nicho369 wants to merge 77 commits into
nus-cs2103-AY2526S1:masterfrom
nicho369:master

Conversation

@nicho369

@nicho369 nicho369 commented Sep 2, 2025

Copy link
Copy Markdown

Ang Soon Tong Chatbot

Ang Soon Tong is a secret society and gang based in Singapore and Malaysia which has been active since the 1950s, mainly in the Sembawang area of Singapore.

Soon Tong is your friendly neighbourhood ah beng, he can help you:

  • Keep track of your daily tasks/commitments
  • Entertain you
  • Lend a listening ear
  • Talk to you politely

Here's 3 fun facts about Soon Tong

  1. He knows 2 languages - hokkien and java
  2. Humsup
  3. Likes Matcha 🍵🍃 and Clairo

His hobbies

if (name === "Ang Soon Tong) 
{ 
    playSong([favouriteSong]);
}

damithc and others added 19 commits July 11, 2024 16:52
In build.gradle, the dependencies on distZip and/or distTar causes
the shadowJar task to generate a second JAR file for which the
mainClass.set("seedu.duke.Duke") does not take effect.
Hence, this additional JAR file cannot be run.
For this product, there is no need to generate a second JAR file
to begin with.

Let's remove this dependency from the build.gradle to prevent the
shadowJar task from generating the extra JAR file.

@dingf3ng dingf3ng left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Looks promising as a project at early stage! Some OOP patterns are observed. Maybe need more time to do further development and polishing work :)

Comment thread src/main/java/AngSoonTong.java Outdated
System.out.println("Eh! I'm Soon Tong\nWhat you want?!");

// init array of Tasks
Task[] list = new Task[100];

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

It seems better to use Collections (ArrayList for example) to store the task :).

Comment thread src/main/java/AngSoonTong.java Outdated

String curr = sc.nextLine();
String[] words = curr.split(" "); // split by spaces
String firstWord = words[0]; // take the first word

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

camelCase variable name very good yay

Comment thread src/main/java/Task.java Outdated
}

// unmarks task, task is not done
public void markUndone() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

name representing methods are verbs! v good

Comment thread src/main/java/Task.java Outdated
@@ -0,0 +1,25 @@
public class Task {
private boolean isDone;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

camelCase and sounds like boolean! good job

Comment thread src/main/java/AngSoonTong.java Outdated
System.out.println("Eh! I'm Soon Tong\nWhat you want?!");

// init array of Tasks
Task[] list = new Task[100];

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

name sounds like a collection of objects! good!

@TheresiaOng TheresiaOng left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Keep up the good work on your iP progress! There are only minor adjustment you need to make (e.g. indentation fix) but overall this is a great foundation to build your iP on! Good job! ^^

Comment thread src/main/java/AngSoonTong.java Outdated

Storage storage = new Storage("./data/tasks.txt");
Task[] list = new Task[100];
boolean running = true;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

boolean variable name could be improved to isRunning to improve readability ^^

Comment thread src/main/java/AngSoonTong.java Outdated
while (running) {

String curr = sc.nextLine();
String[] words = curr.split(" "); // split by spaces

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Great usage of plural variable name to represent a collection of item (words)!

Comment thread src/main/java/TaskDecoder.java Outdated

Task task;
switch (type) {
case "T":

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Switch cases should be at the same indentation as the switch declaration ^^

Comment thread src/main/java/ToDo.java
// write to file format

@Override
public String toFileFormat() {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

great usage of camelCase and verb as your method name!

nicho369 and others added 30 commits September 8, 2025 17:05
use assertions to make sure important assumptions hold at various points in code

* assertions in Storage class ensure a filepath is provided on initialization
* assertions in TaskList ensure all accessed elements within bounds
* assertions in TaskDecoder ensure saved tasks are valid before writing
removing unecessary syntax and abstracting functions to substitute duplicate code occurances makes code neater and more readable

Let's:
* delete unused import statements
* abstract function that mutate task list and saves right after
tag existing tasks in task list with additional descriptive words (e.g. #fun) to provide more information about task
fix issues in TaskDecoder class and comment out redundant CLI methods in AngSoonTong class

GUI load from storage file fixed
to create a more unique AngSoonTong personality, add more authentic images for use as profile photo
allow users to remove individual tags that they have added, or remove all tags - for a specified task
chatbot "sings" a song when the input sing is given by the user
sing function will randomly choose one song to play from songs list
JUNIT test case already covered by Assertions in TaskList class
for thorough testing of methods in Parser and TaskList classes

Let's:
* add comments to explain which methods are being tested
…'s subclasses

Let's:
* add comments to classes and methods to describe their what, why
Let's:
* add comments to classes and methods to describe their what, why
Let's:
* add comments to classes and methods to describe their what, why
fix a mistake under the mark feature, where the returned output was incorrect
Add changes made on github website

merge to include changes directly made to remote repo
add screenshot of ui to showcase what the chatbot looks like
remove comments and annotations accidentally left in the README.md
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.

6 participants