From 09a9472dae46d7ab68fb0d8bf9de9e8eb53758a7 Mon Sep 17 00:00:00 2001 From: joel Date: Sun, 14 Apr 2024 23:32:04 +0800 Subject: [PATCH] Update Sort Command --- .../address/logic/commands/SortCommand.java | 7 +++---- .../java/seedu/address/model/grade/Grade.java | 6 +++--- .../seedu/address/model/student/Student.java | 4 ++-- .../TestNameEqualsKeywordPredicate.java | 2 +- .../logic/commands/SortCommandTest.java | 21 +++++++++---------- 5 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/SortCommand.java b/src/main/java/seedu/address/logic/commands/SortCommand.java index 2f4e9a6789a..d8f99cfdfbb 100644 --- a/src/main/java/seedu/address/logic/commands/SortCommand.java +++ b/src/main/java/seedu/address/logic/commands/SortCommand.java @@ -3,7 +3,6 @@ import static java.util.Objects.requireNonNull; import java.util.Comparator; -import java.util.Optional; import seedu.address.commons.util.ToStringBuilder; import seedu.address.logic.Messages; @@ -52,9 +51,9 @@ public SortCommand(TestNameEqualsKeywordPredicate predicate, boolean isReverse) public CommandResult execute(Model model) { requireNonNull(model); Comparator gradeComparator = (student1, student2) -> { - String grade1 = Optional.ofNullable(student1.getGradeForTest(predicate.keyword)).orElse("0"); - String grade2 = Optional.ofNullable(student2.getGradeForTest(predicate.keyword)).orElse("0"); - return grade1.compareTo(grade2); + int grade1 = student1.getGradeForTest(predicate.keyword); + int grade2 = student2.getGradeForTest(predicate.keyword); + return Integer.compare(grade1, grade2); }; if (isReverse) { diff --git a/src/main/java/seedu/address/model/grade/Grade.java b/src/main/java/seedu/address/model/grade/Grade.java index 1ed7093e1cb..0b2d17806fd 100644 --- a/src/main/java/seedu/address/model/grade/Grade.java +++ b/src/main/java/seedu/address/model/grade/Grade.java @@ -31,7 +31,7 @@ public class Grade { public final String testAndGrade; public final String testName; - public final String grade; + public final int grade; /** * Constructs an {@code Grade}. @@ -45,7 +45,7 @@ public Grade(String testAndGrade) { checkArgument(parts[0].trim().matches(TEST_NAME_VALIDATION_REGEX), MESSAGE_CONSTRAINTS); checkArgument(parts[1].trim().matches(GRADE_VALIDATION_REGEX), MESSAGE_CONSTRAINTS); this.testName = parts[0].trim(); - this.grade = parts[1].trim(); + this.grade = Integer.parseInt(parts[1].trim()); this.testAndGrade = testAndGrade; } @@ -74,7 +74,7 @@ public boolean equals(Object other) { } Grade otherGrade = (Grade) other; - return testName.equals(otherGrade.testName) && grade.equals(otherGrade.grade); + return testName.equals(otherGrade.testName) && grade == otherGrade.grade; } @Override diff --git a/src/main/java/seedu/address/model/student/Student.java b/src/main/java/seedu/address/model/student/Student.java index bd54fc4ffc9..c4bf68108fd 100644 --- a/src/main/java/seedu/address/model/student/Student.java +++ b/src/main/java/seedu/address/model/student/Student.java @@ -79,13 +79,13 @@ public Set getGrades() { * @param testName The name of the test to find the grade for. * @return The grade for the specified test as a String, or null if the student does not have a grade for that test. */ - public String getGradeForTest(String testName) { + public int getGradeForTest(String testName) { for (Grade grade : grades) { if (grade.testName.equals(testName)) { return grade.grade; } } - return null; + return 0; } diff --git a/src/main/java/seedu/address/model/student/TestNameEqualsKeywordPredicate.java b/src/main/java/seedu/address/model/student/TestNameEqualsKeywordPredicate.java index 7185cf69601..2eef4a175d9 100644 --- a/src/main/java/seedu/address/model/student/TestNameEqualsKeywordPredicate.java +++ b/src/main/java/seedu/address/model/student/TestNameEqualsKeywordPredicate.java @@ -17,7 +17,7 @@ public TestNameEqualsKeywordPredicate(String keyword) { @Override public boolean test(Student student) { return student.getGrades().stream() - .anyMatch(grades -> grades.testName.equalsIgnoreCase(keyword)); + .anyMatch(grades -> grades.testName.equals(keyword)); } @Override diff --git a/src/test/java/seedu/address/logic/commands/SortCommandTest.java b/src/test/java/seedu/address/logic/commands/SortCommandTest.java index f93ac6ba59a..f59b0564e29 100644 --- a/src/test/java/seedu/address/logic/commands/SortCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/SortCommandTest.java @@ -12,7 +12,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; -import java.util.Optional; import org.junit.jupiter.api.Test; @@ -61,9 +60,9 @@ public void execute_zeroKeywords_nostudentFound() { String expectedMessage = String.format(MESSAGE_STUDENTS_LISTED_OVERVIEW, 0); TestNameEqualsKeywordPredicate predicate = preparePredicate(" "); Comparator gradeComparator = (student1, student2) -> { - String grade1 = Optional.ofNullable(student1.getGradeForTest(predicate.keyword)).orElse("0"); - String grade2 = Optional.ofNullable(student2.getGradeForTest(predicate.keyword)).orElse("0"); - return grade1.compareTo(grade2); + int grade1 = student1.getGradeForTest(predicate.keyword); + int grade2 = student2.getGradeForTest(predicate.keyword); + return Integer.compare(grade1, grade2); }; SortCommand command = new SortCommand(predicate, false); expectedModel.sortFilteredStudentList(gradeComparator, predicate); @@ -74,11 +73,11 @@ public void execute_zeroKeywords_nostudentFound() { @Test public void execute_multipleKeywords_multiplestudentsFound() { String expectedMessage = String.format(MESSAGE_STUDENTS_LISTED_OVERVIEW, 2); - TestNameEqualsKeywordPredicate predicate = preparePredicate("Ca1"); + TestNameEqualsKeywordPredicate predicate = preparePredicate("ca1"); Comparator gradeComparator = (student1, student2) -> { - String grade1 = Optional.ofNullable(student1.getGradeForTest(predicate.keyword)).orElse("0"); - String grade2 = Optional.ofNullable(student2.getGradeForTest(predicate.keyword)).orElse("0"); - return grade1.compareTo(grade2); + int grade1 = student1.getGradeForTest(predicate.keyword); + int grade2 = student2.getGradeForTest(predicate.keyword); + return Integer.compare(grade1, grade2); }; SortCommand command = new SortCommand(predicate, false); expectedModel.sortFilteredStudentList(gradeComparator, predicate); @@ -90,9 +89,9 @@ public void execute_multipleKeywords_multiplestudentsFound() { public void toStringMethod() { TestNameEqualsKeywordPredicate predicate = new TestNameEqualsKeywordPredicate("keyword"); Comparator gradeComparator = (student1, student2) -> { - String grade1 = Optional.ofNullable(student1.getGradeForTest(predicate.keyword)).orElse("0"); - String grade2 = Optional.ofNullable(student2.getGradeForTest(predicate.keyword)).orElse("0"); - return grade1.compareTo(grade2); + int grade1 = student1.getGradeForTest(predicate.keyword); + int grade2 = student2.getGradeForTest(predicate.keyword); + return Integer.compare(grade1, grade2); }; SortCommand sortCommand = new SortCommand(predicate, false); String expected = SortCommand.class.getCanonicalName() + "{predicate=" + predicate + ", "