From 41979c17524b27877eda0ec722e45552d417d13f Mon Sep 17 00:00:00 2001 From: kasra Date: Sun, 5 Jul 2026 15:14:46 +0330 Subject: [PATCH 1/2] WS7 --- .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/dev/Main.java | 64 ++++++------------- src/main/java/dev/model/Student.java | 39 ++--------- src/main/java/dev/service/StudentManager.java | 42 ++++-------- src/main/java/dev/thread/StudentLoader.java | 42 +++--------- src/main/java/dev/utils/FileManager.java | 12 +--- .../lecture/multithreading/timeout/Main.java | 31 +++++++-- 12 files changed, 142 insertions(+), 156 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 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..30cf57e --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml 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..d458c91 --- /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/dev/Main.java b/src/main/java/dev/Main.java index 19ca657..e1a8972 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -8,92 +8,70 @@ import java.util.List; import java.util.Scanner; public class Main { - public static void main(String[] args) throws Exception { - Scanner scanner = new Scanner(System.in); - StudentManager manager = new StudentManager(); while (true) { - System.out.println(""" 1.Load students 2.Search student 3.Remove student 4.Print students - 5.Exit - """); + 5.Exit"""); int choice = scanner.nextInt(); switch (choice) { - case 1 -> { - List data = FileManager.loadStudents("students.txt"); - // TODO: + int size = data.size(); + int part1Size = size / 3; + int part2Size = 2 * size / 3; - // Split data into 3 parts + List part1 = data.subList(0, part1Size); + List part2 = data.subList(part1Size, part2Size); + List part3 = data.subList(part2Size, size); - List part1 = null; + StudentLoader t1 = new StudentLoader(part1); + StudentLoader t2 = new StudentLoader(part2); + StudentLoader t3 = new StudentLoader(part3); - List part2 = null; + t1.start(); + t2.start(); + t3.start(); - List part3 = null; + t1.join(); + t2.join(); + t3.join(); - // TODO: - - StudentLoader t1 = null; - - StudentLoader t2 = null; - - 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 -> { - System.out.print("ID: "); - int id = scanner.nextInt(); - System.out.println(manager.searchStudent(id)); - } case 3 -> { - System.out.print("ID: "); - int id = scanner.nextInt(); - boolean removed = manager.removeStudent(id); - System.out.println(removed); - } - case 4 -> - manager.printStudents(); + case 4 -> manager.printStudents(); case 5 -> { return; } - } - } - } - } \ No newline at end of file diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..caf200d 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -1,21 +1,12 @@ package dev.model; public class Student { - private final int id; - private final String name; - private final String major; - private final double gpa; - public Student( - int id, - String name, - String major, - double gpa) { - + public Student(int id, String name, String major, double gpa) { this.id = id; this.name = name; this.major = major; @@ -40,36 +31,19 @@ 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: - - // Step 1: - // Check null - - // Step 2: - // Convert obj to Student - - // Step 3: - // Compare IDs - - return false; + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Student student = (Student) obj; + return id == student.id; } @Override public String toString() { - return "Student{" + "id=" + id + ", name='" + name + '\'' + @@ -77,5 +51,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..ddcd297 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -1,55 +1,37 @@ package dev.service; import dev.model.Student; - import java.util.ArrayList; - 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: - - // Find student - - // Remove student - + for (int i = 0; i < students.size(); i++) { + if (students.get(i).getId() == id) { + students.remove(i); + return true; + } + } return false; } public void printStudents() { - for (Student student : students) { - System.out.println(student); - } - } - } \ No newline at end of file diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..b84da5d 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -1,59 +1,33 @@ package dev.thread; - - import dev.model.Student; - import java.util.ArrayList; import java.util.List; public class StudentLoader extends Thread { - - // Assigned file lines - private final List lines; - - // Local student storage - private final ArrayList students = new ArrayList<>(); public StudentLoader(List lines) { - this.lines = lines; } @Override public void run() { - - // TODO: - - /* - Example line: - - 1001,Aryan,Computer Science,3.7 - */ - for (String line : lines) { + String[] data = line.split(","); + if (data.length == 4) { + int id = Integer.parseInt(data[0].trim()); + String name = data[1].trim(); + String major = data[2].trim(); + double gpa = Double.parseDouble(data[3].trim()); - // TODO: - // split line - - // TODO: - // read values - - // TODO: - // create Student - - // TODO: - // add to students list - + students.add(new Student(id, name, major, gpa)); + } } - } public ArrayList getStudents() { - return students; } - } \ No newline at end of file diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..616635b 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -2,31 +2,21 @@ package dev.utils; import java.io.BufferedReader; import java.io.FileReader; - import java.util.ArrayList; import java.util.List; public class FileManager { public static List loadStudents(String path) throws Exception { - List lines = new ArrayList<>(); - BufferedReader reader = new BufferedReader(new FileReader(path)); - String line; while ((line = reader.readLine()) != null) { - - // TODO: - - // Add line to list - + lines.add(line); } reader.close(); - return lines; } - } \ No newline at end of file diff --git a/src/main/java/lecture/multithreading/timeout/Main.java b/src/main/java/lecture/multithreading/timeout/Main.java index 8258073..cf94cdf 100644 --- a/src/main/java/lecture/multithreading/timeout/Main.java +++ b/src/main/java/lecture/multithreading/timeout/Main.java @@ -1,10 +1,31 @@ package lecture.multithreading.timeout; - - public class Main { public static void main(String[] args) { - // TODO - } -} + Thread worker = new Thread(() -> { + try { + System.out.println("Worker thread started..."); + Thread.sleep(5000); + System.out.println("Worker thread finished its job."); + } catch (InterruptedException e) { + System.out.println("Worker thread was interrupted (Timeout reached)!"); + } + }); + worker.start(); + + try { + worker.join(2000); + + if (worker.isAlive()) { + System.out.println("Main thread: Task took too long. Interrupting..."); + worker.interrupt(); + } else { + System.out.println("Main thread: Task completed within the time limit."); + } + + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file -- 2.54.0 From 41d6de14eff16d4e50c2ac13494d3d4b610ded67 Mon Sep 17 00:00:00 2001 From: kasra Date: Sun, 5 Jul 2026 15:18:58 +0330 Subject: [PATCH 2/2] WS-7 --- src/main/java/dev/model/Student.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index caf200d..fe0b35f 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -41,7 +41,6 @@ public class Student { Student student = (Student) obj; return id == student.id; } - @Override public String toString() { return "Student{" + -- 2.54.0