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..a9076af --- /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/dev/Main.java b/src/main/java/dev/Main.java index 19ca657..e9471ee 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -12,18 +12,17 @@ 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("\n--- Student Search Engine Menu ---"); + System.out.println("1. Load students"); + System.out.println("2. Search student"); + System.out.println("3. Remove student"); + System.out.println("4. Print all students"); + System.out.println("5. Exit"); + System.out.print("Enter your choice: "); - System.out.println(""" - 1.Load students - 2.Search student - 3.Remove student - 4.Print students - 5.Exit - """); int choice = scanner.nextInt(); @@ -33,32 +32,28 @@ public class Main { List data = FileManager.loadStudents("students.txt"); - // TODO: + int size = data.size(); + List part1 = data.subList(0, size/3); + List part2 = data.subList(size/3, (size/3)*2); + List part3 = data.subList((size/3)*2, size); - // Split data into 3 parts + StudentLoader t1 = new StudentLoader(part1); + StudentLoader t2 = new StudentLoader(part2); + StudentLoader t3 = new StudentLoader(part3); - List part1 = null; + t1.start(); + t2.start(); + t3.start(); - List part2 = null; + t1.join(); + t2.join(); + t3.join(); - List part3 = null; - - // 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("Student loaded successfully."); } case 2 -> { diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..f49d989 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -40,31 +40,22 @@ 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(getClass() != obj.getClass()){ + return false; + } + Student otherStudent = (Student)obj; - // Step 2: - // Convert obj to Student - - // Step 3: - // Compare IDs - - return false; + return this.id == otherStudent.id; } @Override diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java index 403a1c6..9c346f7 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -4,50 +4,49 @@ 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() - + if(newStudents != null){ + this.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) { + Student foundStudent = null; + for (Student s : students){ + if (s.getId() == id){ + foundStudent = s; + break; + } + } - // TODO: - - // Find student - - // Remove student - + if (foundStudent != null){ + students.remove(foundStudent); + return true; + } return false; } public void printStudents() { + if (students.isEmpty()) { + System.out.println("No students to display."); + return; + } for (Student student : students) { - System.out.println(student); - } } diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..87cb950 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -9,46 +9,38 @@ 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) { - + public StudentLoader(Listlines) { this.lines = lines; } @Override public void run() { - - // TODO: - - /* - Example line: - - 1001,Aryan,Computer Science,3.7 - */ - for (String line : lines) { + if(line == null || line.trim().isEmpty()){ + continue; + } + String[] parts = line.split(","); - // TODO: - // split line - - // TODO: - // read values - - // TODO: - // create Student - - // TODO: - // add to students list + if(parts.length == 4){ + try { + int id = Integer.parseInt(parts[0].trim()); + String name = parts[1].trim(); + String major = parts[2].trim(); + double gpa = Double.parseDouble(parts[3].trim()); + Student student = new Student(id, name, major, gpa); + students.add(student); + }catch (Exception e){ + System.out.println(e.getMessage()); + } + }else{ + System.out.println("skipping malformed line: " + line); + } } - } public ArrayList getStudents() { diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..69b8da4 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -13,20 +13,13 @@ public class FileManager { List lines = new ArrayList<>(); BufferedReader reader = new BufferedReader(new FileReader(path)); - String line; - while ((line = reader.readLine()) != null) { - - // TODO: - - // Add line to list - + if (!line.trim().isEmpty()) { + lines.add(line.trim()); + } } - 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..38b1bd6 100644 --- a/src/main/java/lecture/multithreading/timeout/Main.java +++ b/src/main/java/lecture/multithreading/timeout/Main.java @@ -1,10 +1,23 @@ package lecture.multithreading.timeout; +import java.util.Scanner; public class Main { public static void main(String[] args) { - // TODO + Scanner scanner = new Scanner(System.in); + + System.out.println("you have 10 seconds: "); + System.out.println("enter your name: "); + + MyRunnable myRunnable = new MyRunnable(); + Thread thread = new Thread(myRunnable); + thread.setDaemon(true); + thread.start(); + + String name = scanner.nextLine(); + System.out.println("Hello " + name); + scanner.close(); } } diff --git a/src/main/java/lecture/multithreading/timeout/MyRunnable.java b/src/main/java/lecture/multithreading/timeout/MyRunnable.java new file mode 100644 index 0000000..5d000e3 --- /dev/null +++ b/src/main/java/lecture/multithreading/timeout/MyRunnable.java @@ -0,0 +1,20 @@ +package lecture.multithreading.timeout; + +public class MyRunnable implements Runnable{ + + @Override + public void run() { + for (int i = 0; i <= 10; i++) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + System.out.println("thread was interrupted"); + } + + if(i==10){ + System.out.println("time is up"); + System.exit(0); + } + } + } +}