From b9c76e81cde13e56924217b3da1341673a2e5f6f Mon Sep 17 00:00:00 2001 From: Hesam Ghazi Date: Sun, 28 Jun 2026 17:22:15 +0330 Subject: [PATCH] WS-07 is complete --- .idea/.gitignore | 10 +++++ .idea/compiler.xml | 13 +++++++ .idea/encodings.xml | 7 ++++ .idea/jarRepositories.xml | 20 ++++++++++ .idea/misc.xml | 12 ++++++ .idea/vcs.xml | 6 +++ src/main/java/.idea/.gitignore | 10 +++++ src/main/java/.idea/.name | 1 + src/main/java/.idea/java.iml | 9 +++++ src/main/java/.idea/modules.xml | 8 ++++ src/main/java/.idea/vcs.xml | 6 +++ src/main/java/dev/Main.java | 39 +++++++++++-------- src/main/java/dev/model/Student.java | 27 ++++--------- src/main/java/dev/service/StudentManager.java | 31 ++++++--------- src/main/java/dev/thread/StudentLoader.java | 25 ++++-------- src/main/java/dev/utils/FileManager.java | 8 ++-- 16 files changed, 153 insertions(+), 79 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/.idea/.gitignore create mode 100644 src/main/java/.idea/.name create mode 100644 src/main/java/.idea/java.iml create mode 100644 src/main/java/.idea/modules.xml create mode 100644 src/main/java/.idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..a590144 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eba6e1f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/.idea/.gitignore b/src/main/java/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/src/main/java/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/src/main/java/.idea/.name b/src/main/java/.idea/.name new file mode 100644 index 0000000..002da1d --- /dev/null +++ b/src/main/java/.idea/.name @@ -0,0 +1 @@ +Main.java \ No newline at end of file diff --git a/src/main/java/.idea/java.iml b/src/main/java/.idea/java.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/src/main/java/.idea/java.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/.idea/modules.xml b/src/main/java/.idea/modules.xml new file mode 100644 index 0000000..a127731 --- /dev/null +++ b/src/main/java/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/java/.idea/vcs.xml b/src/main/java/.idea/vcs.xml new file mode 100644 index 0000000..c2365ab --- /dev/null +++ b/src/main/java/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/dev/Main.java b/src/main/java/dev/Main.java index 19ca657..023bf58 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -1,4 +1,8 @@ package dev; +/** + * @Author Hesam Ghazi + * Student Number: 403222015 + */ import dev.service.StudentManager; import dev.thread.StudentLoader; @@ -33,32 +37,33 @@ public class Main { List data = FileManager.loadStudents("students.txt"); - // TODO: + int size = data.size(); - // Split data into 3 parts + int partSize = size / 3; - List part1 = null; + List part1 = data.subList(0, partSize); - List part2 = null; + List part2 = data.subList(partSize, partSize * 2); - List part3 = null; + List part3 = data.subList(partSize * 2, size); - // TODO: + StudentLoader t1 = new StudentLoader(part1); + StudentLoader t2 = new StudentLoader(part2); + StudentLoader t3 = new StudentLoader(part3); - StudentLoader t1 = null; + t1.start(); + t2.start(); + t3.start(); - StudentLoader t2 = null; + t1.join(); + t2.join(); + t3.join(); - StudentLoader t3 = null; - - // TODO: - - // start() - - // join() - - // merge results + manager.addStudents(t1.getStudents()); + manager.addStudents(t2.getStudents()); + manager.addStudents(t3.getStudents()); + System.out.println("Students loaded successfully."); } case 2 -> { diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..fb52df8 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -40,36 +40,24 @@ public class Student { @Override public int hashCode() { - - // TODO: - // Return custom hash - - // Example: - // return id % 97; - - return 0; + return id % 97; } - @Override public boolean equals(Object obj) { - // TODO: + if (obj == null) + return false; - // Step 1: - // Check null + if (!(obj instanceof Student)) + return false; - // Step 2: - // Convert obj to Student + Student other = (Student) obj; - // Step 3: - // Compare IDs - - return false; + return this.id == other.id; } @Override public String toString() { - return "Student{" + "id=" + id + ", name='" + name + '\'' + @@ -77,5 +65,4 @@ public class Student { ", gpa=" + gpa + '}'; } - } \ No newline at end of file diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java index 403a1c6..fb7a777 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -1,7 +1,6 @@ package dev.service; import dev.model.Student; - import java.util.ArrayList; @@ -10,34 +9,28 @@ public class StudentManager { private final ArrayList students = new ArrayList<>(); public void addStudents(ArrayList newStudents) { - - // TODO: - - // Merge students - - // Hint: - // addAll() - + students.addAll(newStudents); } - public Student searchStudent(int id) { - // TODO: - - // Loop through students - - // Compare IDs + for (Student student : students) { + if (student.getId() == id) { + return student; + } + } return null; } + public boolean removeStudent(int id) { - // TODO: + Student student = searchStudent(id); - // Find student - - // Remove student + if (student != null) { + students.remove(student); + return true; + } return false; } diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..24b774e 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -25,30 +25,19 @@ public class StudentLoader extends Thread { @Override public void run() { - // TODO: - - /* - Example line: - - 1001,Aryan,Computer Science,3.7 - */ - for (String line : lines) { - // TODO: - // split line + String[] parts = line.split(","); - // TODO: - // read values + int id = Integer.parseInt(parts[0]); + String name = parts[1]; + String major = parts[2]; + double gpa = Double.parseDouble(parts[3]); - // TODO: - // create Student - - // TODO: - // add to students list + Student student = new Student(id, name, major, gpa); + students.add(student); } - } public ArrayList getStudents() { diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..78364c8 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -16,14 +16,12 @@ public class FileManager { String line; + while ((line = reader.readLine()) != null) { - - // TODO: - - // Add line to list - + lines.add(line); } + reader.close(); return lines;