From 64a4535a15a45db226673222efad0f1636435d1a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 7 Apr 2024 02:42:52 +0800 Subject: [PATCH 001/183] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 2e08b51..cccbc2c 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,29 @@ At the end of the course, the studend must be able to: | 13 | July 6 | Course Synthesis & Final Examination | | +#### SUGGESTED READINGS AND REFERENCES + +* Java Programming Eight Edition, Farrell, Joyce, 2016 +* Object-Oriented Data Structures Using Java Fourth Edition, Dale, Nell,2018 +* Java : The Complete Reference Tenth Edition, Schildt, Herbert, 2018 +* Introduction To Programming in Java: An Interdisciplinary Approach Second Edition, Sedgewick, Robert, 2017 +* Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 +* Java Precisely Third Edition, Peter Sestoft, 2016 + +#### COURSE REQUIREMENTS + +Assignments, Laboratory Exercises, Long Exam, Final Exam + +#### GRADING SYSTEM + +Other Learning Activities (20%) + +(Assignment, Laboratory Exercise, Seatwork, Recitations, others) + +Long Exams (40%) + +Final Exam/Project (40%) + # ✍️Exercise ## How to Use From c12faec0bf4fd056cf5b054b64c74acf91d4ffc9 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:52:58 +0800 Subject: [PATCH 002/183] =?UTF-8?q?=E2=9C=A8=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 737c50a..632d44f 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ This project is provided "as is" without warranty of any kind, express or implie # 🔭Acknowledgements    -### ✨ Professor Jay A. Abaleta  +### ✨ Professor Jay A. Abaleta   Professor Jay Abaleta is a Senior Software Engineer and esteemed faculty member at National University. With a strong background in teaching the core principles and advanced concepts of Java, he is highly regarded in the field. In addition to his role at National University, Prof. Abaleta also serves as a Professor at Adamson University and as a lecturer of IT/CS at Arba Minch University, sharing his expertise with students worldwide. Having studied at St. Paul University Philippines, Prof. Abaleta brings a wealth of knowledge and experience to his teaching. Known for his friendly and approachable nature, Prof. Abaleta fosters a positive learning environment where students thrive. His dedication and passion for teaching have made him a beloved professor among his students. # 💬FAQ     @@ -160,14 +160,14 @@ To be follow # 📫 Changelogs      ## [4.1.1] - 2024-04-6      ### Added -- Uploaded the Course Syllabus -- Added breakdown and documentation +- ✨ Uploaded the Course Syllabus +- ✨ Added breakdown and documentation ### Changed - ✨ revised icon ### Fixed -- Revised my documentaion +- ✨ Revised my documentaion #### [Back to Table of Content](#introduction)     From c98d0986841da21ba882e7c216a2e8be1ffc0e2b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 10:37:08 +0000 Subject: [PATCH 003/183] =?UTF-8?q?=F0=9F=93=93=20Add=20accessing=5Farray?= =?UTF-8?q?=5Felements=20java=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_1/accessing_array_elements/App.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 week_1/accessing_array_elements/App.java diff --git a/week_1/accessing_array_elements/App.java b/week_1/accessing_array_elements/App.java new file mode 100644 index 0000000..815b961 --- /dev/null +++ b/week_1/accessing_array_elements/App.java @@ -0,0 +1,23 @@ +public class App { + public static void main(String[] args) { + + // Array of Strings + String[] myfavefastfood = { "KuyaJay", "AlingTising", "BurgerKing", "BonChon", + "KennyRogers" }; + + // Access first array element + System.out.println(myfavefastfood[0]); + + // Access second array element + System.out.println(myfavefastfood[1]); + + // Access third array element + System.out.println(myfavefastfood[2]); + + // Access fourth array element + System.out.println(myfavefastfood[3]); + + // Access last array element + System.out.println(myfavefastfood[4]); + } +} \ No newline at end of file From 88af7bd76031c78006588797a4734faea6745c11 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 11:07:13 +0000 Subject: [PATCH 004/183] =?UTF-8?q?=F0=9F=93=93=20Add=20array?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_1/array/App.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 week_1/array/App.java diff --git a/week_1/array/App.java b/week_1/array/App.java new file mode 100644 index 0000000..dc0623f --- /dev/null +++ b/week_1/array/App.java @@ -0,0 +1,14 @@ +public class App { + public static void main(String[] args) { + + // Array of Strings + String[] myfavefastfood = "KuyaJay", "AlingTising", "BurgerKing", "BonChon", + "KennyRogers" }; + + // Array of Integers + int[] primeNumbers = { 2, 3, 5, 7 }; + + // Array of Characters + char[] myName = { 'J', 'A', 'Y', 'A', 'R', 'R', 'E' }; + } +} \ No newline at end of file From 7d109a49d6ac66e6a85ce6ced966d1c741829782 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 11:08:50 +0000 Subject: [PATCH 005/183] =?UTF-8?q?=F0=9F=93=93=20Rename=20week=5F1=20to?= =?UTF-8?q?=20week=5F2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {week_1 => week_2}/accessing_array_elements/App.java | 0 {week_1 => week_2}/array/App.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {week_1 => week_2}/accessing_array_elements/App.java (100%) rename {week_1 => week_2}/array/App.java (100%) diff --git a/week_1/accessing_array_elements/App.java b/week_2/accessing_array_elements/App.java similarity index 100% rename from week_1/accessing_array_elements/App.java rename to week_2/accessing_array_elements/App.java diff --git a/week_1/array/App.java b/week_2/array/App.java similarity index 100% rename from week_1/array/App.java rename to week_2/array/App.java From 78c5e12f3a749b089d805d7a4fe7f354e07aa738 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 11:46:36 +0000 Subject: [PATCH 006/183] =?UTF-8?q?=F0=9F=93=93=20looping=5Fthrough=5Fa=5F?= =?UTF-8?q?multidimensional=5Farray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 week_2/looping_through_a_multidimensional_array /App.java diff --git a/week_2/looping_through_a_multidimensional_array /App.java b/week_2/looping_through_a_multidimensional_array /App.java new file mode 100644 index 0000000..407d104 --- /dev/null +++ b/week_2/looping_through_a_multidimensional_array /App.java @@ -0,0 +1,21 @@ +public class App { + public static void main(String[] args) throws Exception { + + // 3x3 + String[][] seatingArrangement = { { "JayArre", "Gabriel", "CielleMae" }, + { "Vince", "Joshua", "Anilov" }, + { "Kristine", "Jezlyn", "Jamaine" } }; + + // outer loop + for (int row = 0; row < seatingArrangement.length; row++) { + + System.out.println(" "); + System.out.print("row " + row + ": "); + // inner loop + for (int column = 0; column < seatingArrangement.length; column++) { + + System.out.print(seatingArrangement[row][column] + " "); + } + } + } +} \ No newline at end of file From 385442ce9ec7b5ff4b6052eb4f7e2cc601e2f1c2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 11:52:34 +0000 Subject: [PATCH 007/183] =?UTF-8?q?=F0=9F=93=93=20Add=20looping=5Fthrough?= =?UTF-8?q?=5Fan=5Farray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_2/looping_through_an_array/App.java | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 week_2/looping_through_an_array/App.java diff --git a/week_2/looping_through_an_array/App.java b/week_2/looping_through_an_array/App.java new file mode 100644 index 0000000..1a65c50 --- /dev/null +++ b/week_2/looping_through_an_array/App.java @@ -0,0 +1,36 @@ +public class App { + public static void main(String[] args) throws Exception { + + String[] myfavefastfood = { "KennyRogers", "PizzaHut", "BurgerKing", "AlingTising", "Bulaluan" }; + + // Loop through an array of strings + for (int i = 0; i < myfavefastfood.length; i++) { + System.out.println(myfavefastfood[i]); + } + + int[] primeNumbers = { 2, 3, 5, 7 }; + + // Loop through an array of integers + for (int i = 0; i < primeNumbers.length; i++) { + System.out.println(primeNumbers[i]); + } + + char[] myName = { 'J', 'A', 'Y', 'A', 'R', 'R', 'E' }; + + // Loop through an array of characters + for (int i = 0; i < myName.length; i++) { + System.out.println(myName[i]); + } + + System.out.println(""); + // Print name in reverse + for (int i = myName.length - 1; i >= 0; i--) { + System.out.print(myName[i]); + } + + // Using foreach + for (char i : myName) { + System.out.print(i); + } + } +} \ No newline at end of file From c7a6729fdd358d75592276e2bac026207e6d173a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 11:54:58 +0000 Subject: [PATCH 008/183] =?UTF-8?q?=F0=9F=93=93=20Add=20looping=5Fthrough?= =?UTF-8?q?=5Fan=5Farray=5Fwith=5Fconditions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 week_2/looping_through_an_array_with_conditions/App.java diff --git a/week_2/looping_through_an_array_with_conditions/App.java b/week_2/looping_through_an_array_with_conditions/App.java new file mode 100644 index 0000000..86cf837 --- /dev/null +++ b/week_2/looping_through_an_array_with_conditions/App.java @@ -0,0 +1,34 @@ +public class App { + public static void main(String[] args) { + + // Array of Characters + char[] myName = { 'J', 'A', 'Y', 'A', 'R', 'R', 'E' }; + + // Loop through all characters + for (int i = 0; i < myName.length; i++) { + System.out.println(myName[i]); + } + + // Loop through all characters in reverse order + for (int i = myName.length - 1 ; i >= 0; i--) { + System.out.println(myName[i]); + } + + + // // Only display vowels + for (int i = 0; i < myName.length; i++) { + + if (myName[i] == 'A' || myName[i] == 'E' || myName[i] == 'I' || myName[i] == 'O' || myName[i] == 'U') { + System.out.println(myName[i]); + } + } + + // Only display consonants + for (int i = 0; i < myName.length; i++) { + + if (!(myName[i] == 'A' || myName[i] == 'E' || myName[i] == 'I' || myName[i] == 'O' || myName[i] == 'U')) { + System.out.println(myName[i]); + } + } + } +} \ No newline at end of file From b057c9d53e90783bed5fd933b2b55da93bc2637a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:05:56 +0000 Subject: [PATCH 009/183] =?UTF-8?q?=F0=9F=93=93=20Add=20multidimensional?= =?UTF-8?q?=5Farray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_2/array/App.java | 3 +-- week_2/multidimensional_array/App.java | 32 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 week_2/multidimensional_array/App.java diff --git a/week_2/array/App.java b/week_2/array/App.java index dc0623f..1df40a6 100644 --- a/week_2/array/App.java +++ b/week_2/array/App.java @@ -2,8 +2,7 @@ public class App { public static void main(String[] args) { // Array of Strings - String[] myfavefastfood = "KuyaJay", "AlingTising", "BurgerKing", "BonChon", - "KennyRogers" }; + String[] myfavefastfood = { "KuyaJay", "AlingTising", "BurgerKing", "BonChon", "Chowking" }; // Array of Integers int[] primeNumbers = { 2, 3, 5, 7 }; diff --git a/week_2/multidimensional_array/App.java b/week_2/multidimensional_array/App.java new file mode 100644 index 0000000..59f99de --- /dev/null +++ b/week_2/multidimensional_array/App.java @@ -0,0 +1,32 @@ +public class App { + public static void main(String[] args) throws Exception { + + String[][] seatReservation = { + { "Available", "Available", "Available", "Available", "Available", "Available", "Available" }, + { "Booked", "Booked", "Booked", "Booked", "Booked", "Booked", "Booked" }, + { "Booked", "Booked", "Booked", "Booked", "Booked", "Booked", "Booked" }, + { "Booked", "Booked", "Booked", "Booked", "Booked", "Booked", "Booked" }, + { "Booked", "Booked", "Booked", "Booked", "Booked", "Booked", "Booked" }, + { "Booked", "Booked", "Booked", "Booked", "Booked", "Booked", "Booked" }, + { "Available", "Available", "Available", "Available", "Available", "Selected", "Selected" } + }; + + // Access element that is selected + System.out.println(seatReservation[6][5]); + + // Access element that is selected + System.out.println(seatReservation[6][6]); + + // 2x1 Array + String[][] array2x1 = { { "X" }, { "O" } }; + + // 2x2 Array + String[][] array2x2 = { { "X", "O" }, { "O", "X" } }; + + // 2x3 Array + String[][] array2x3 = { { "X", "O", "X" }, { "O", "X", "O" } }; + + // 3x3 Array + String[][] array3x3 = { { "X", "O", "X" }, { "O", "X", "O" }, { "X", "O", "X" } }; + } +} From 5764a68b9e4c3ab2225e93efcd49b4fcd3e05f1b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:08:48 +0000 Subject: [PATCH 010/183] =?UTF-8?q?=F0=9F=93=93=20Add=20multidimensional?= =?UTF-8?q?=5Farray=5Fpatterns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../multidimensional_array_patterns/App.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 week_2/multidimensional_array_patterns/App.java diff --git a/week_2/multidimensional_array_patterns/App.java b/week_2/multidimensional_array_patterns/App.java new file mode 100644 index 0000000..690e5a8 --- /dev/null +++ b/week_2/multidimensional_array_patterns/App.java @@ -0,0 +1,51 @@ +public class App { + public static void main(String[] args) throws Exception { + + char [][] array_3x3 = {{'A','B','C'},{'D','E','F'},{'G','H','I'}}; + + // // A TO L + for (int rows = 0; rows < array_3x3.length; rows++) { + + System.out.println(""); + for (int columns = 0; columns < array_3x3.length; columns++) { + System.out.print(array_3x3[rows][columns]); + } + } + + // L TO A + for (int rows = array_3x3.length - 1; rows >= 0; rows--) { + + System.out.println(""); + + for (int columns = 0 ; columns < array_3x3.length; columns++) { + + System.out.print(array_3x3[rows][columns]); + } + } + + // Pattern + // Print column 0 and column 2 if the row is even. + // Print column 1 if the row is odd. + + for (int rows = 0; rows < array_3x3.length; rows++) { + + System.out.println(""); + + for (int columns = 0; columns < array_3x3.length; columns++) { + + // EVEN ROWS + if (rows % 2 == 0 && (columns == 0 || columns == 2)) { + System.out.print(array_3x3[rows][columns]); + } + // ODD ROWS + else if (rows % 2 != 0 && columns == 1) { + System.out.print(array_3x3[rows][columns]); + } + else + { + System.out.print(" "); + } + } + } + } +} \ No newline at end of file From 0da49649c118bc99fecd2ae0ce443b447296f97f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:14:18 +0000 Subject: [PATCH 011/183] =?UTF-8?q?=F0=9F=93=93=20Add=20excemption=5Fhandl?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arithmetic_exception/App.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 week_3/excemption_handling/arithmetic_exception/App.java diff --git a/week_3/excemption_handling/arithmetic_exception/App.java b/week_3/excemption_handling/arithmetic_exception/App.java new file mode 100644 index 0000000..868c1e2 --- /dev/null +++ b/week_3/excemption_handling/arithmetic_exception/App.java @@ -0,0 +1,12 @@ +public class App { + public static void main(String[] args) { + + try { + int a = 5; + int b = 0; + System.out.println(a / b); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file From 88606b209f618ebac03714082bfe77d7da545c56 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:17:26 +0000 Subject: [PATCH 012/183] =?UTF-8?q?=F0=9F=93=93=20Add=20file=5Fhandling=20?= =?UTF-8?q?java=20file=5Fclass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_3/file_handling/file_class/App.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 week_3/file_handling/file_class/App.java diff --git a/week_3/file_handling/file_class/App.java b/week_3/file_handling/file_class/App.java new file mode 100644 index 0000000..9507a7c --- /dev/null +++ b/week_3/file_handling/file_class/App.java @@ -0,0 +1,22 @@ +import java.io.File; + +public class App { + public static void main(String[] args) throws Exception { + + try { + // Create object from File class + File myFile = new File("C:\\Users\\flexycode\\Documents\\sample.txt"); + + // .exists() method checks if a file exists in the pathname + if (myFile.exists()) { + System.out.println(myFile.getName() + "exists!"); + } else { + System.out.println(myFile.getName() + " does not exist!"); + } + } catch (Exception e) { + System.out.println("There is an error"); + e.printStackTrace(); + } + + } +} \ No newline at end of file From 72bba2a424cbd8d7739c53a22cefa800a42714df Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:24:08 +0000 Subject: [PATCH 013/183] =?UTF-8?q?=F0=9F=93=93=20Add=20arrayindexoutofbou?= =?UTF-8?q?nds=5Fexception?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arrayindexoutofbounds_exception/App.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 week_3/excemption_handling/arrayindexoutofbounds_exception/App.java diff --git a/week_3/excemption_handling/arrayindexoutofbounds_exception/App.java b/week_3/excemption_handling/arrayindexoutofbounds_exception/App.java new file mode 100644 index 0000000..f0bd1d7 --- /dev/null +++ b/week_3/excemption_handling/arrayindexoutofbounds_exception/App.java @@ -0,0 +1,12 @@ +public class App { + public static void main(String[] args) { + + try { + char[] myName = { 'J', 'A', 'Y', 'A', 'R', 'R', 'E' }; + + System.out.println(myName[7]); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file From 41a926c23a685445a88017361631a7f9ff62e668 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:26:19 +0000 Subject: [PATCH 014/183] =?UTF-8?q?=F0=9F=93=93=20Add=20illegalargument=5F?= =?UTF-8?q?exception?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../illegalargument_exception/App.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 week_3/excemption_handling/illegalargument_exception/App.java diff --git a/week_3/excemption_handling/illegalargument_exception/App.java b/week_3/excemption_handling/illegalargument_exception/App.java new file mode 100644 index 0000000..68dbe85 --- /dev/null +++ b/week_3/excemption_handling/illegalargument_exception/App.java @@ -0,0 +1,19 @@ +public class App { + public static void main(String[] args) { + + try { + iDontWantZeros(0); + } catch (Exception e) { + e.printStackTrace(); + } + } + + static void iDontWantZeros(int num) { + + if (num == 0) { + throw new IllegalArgumentException("I said no zeros!"); + } + + System.out.println(num); + } +} \ No newline at end of file From 671c5d4a4a5b2cf76ebe6b1596bb09bfeb5751a0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:29:59 +0000 Subject: [PATCH 015/183] =?UTF-8?q?=F0=9F=93=93=20Add=20nullpointer=5Fexce?= =?UTF-8?q?ption?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nullpointer_exception/App.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 week_3/excemption_handling/nullpointer_exception/App.java diff --git a/week_3/excemption_handling/nullpointer_exception/App.java b/week_3/excemption_handling/nullpointer_exception/App.java new file mode 100644 index 0000000..834d4fa --- /dev/null +++ b/week_3/excemption_handling/nullpointer_exception/App.java @@ -0,0 +1,12 @@ +public class App { + public static void main(String[] args) { + + try { + String myName = null; + + System.out.println(myName.length()); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file From f52dbe12224ca6b7def8a4ac3622a5972f3bca22 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:32:24 +0000 Subject: [PATCH 016/183] =?UTF-8?q?=F0=9F=93=93=20Add=20userdefined=5Fexce?= =?UTF-8?q?ption?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userdefined_exception/App.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 week_3/excemption_handling/userdefined_exception/App.java diff --git a/week_3/excemption_handling/userdefined_exception/App.java b/week_3/excemption_handling/userdefined_exception/App.java new file mode 100644 index 0000000..b36876f --- /dev/null +++ b/week_3/excemption_handling/userdefined_exception/App.java @@ -0,0 +1,25 @@ +import java.util.Scanner; + +public class App { + public static void main(String[] args) throws Exception { + + Scanner scan = new Scanner(System.in); + + try { + System.out.println("Divide two numbers!"); + + System.out.print("Enter dividend: "); + int firstNumber = scan.nextInt(); + + System.out.print("Enter divisor: "); + int secondNumber = scan.nextInt(); + + int quotient = firstNumber / secondNumber; + + System.out.print("The quotient is: " + quotient); + } catch (Exception e) { + System.out.print("You cannot divide by zero"); + e.printStackTrace(); + } + } +} From 614df40c64a32a0b19560359f2f14ace09c37c9b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:52:12 +0000 Subject: [PATCH 017/183] =?UTF-8?q?=F0=9F=93=93=20Add=20create=5Ffile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_3/file_handling/create_file/App.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 week_3/file_handling/create_file/App.java diff --git a/week_3/file_handling/create_file/App.java b/week_3/file_handling/create_file/App.java new file mode 100644 index 0000000..d6edfd5 --- /dev/null +++ b/week_3/file_handling/create_file/App.java @@ -0,0 +1,22 @@ +import java.io.File; + +public class App { + public static void main(String[] args) throws Exception { + + try { + // Create object from File class + File myFile = new File("C:\\Users\\flexycode\\Documents\\sample.txt"); + + // .createNewFile() method creates a new file if the file in the pathname does + // not exist + if (myFile.createNewFile()) { + System.out.println(myFile.getName() + " created!"); + } else { + System.out.println(myFile.getName() + " already exists!"); + } + } catch (Exception e) { + System.out.println("There is an error"); + e.printStackTrace(); + } + } +} \ No newline at end of file From aea211f99d36c0236f1a88d959841cff9dbdc83f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:54:15 +0000 Subject: [PATCH 018/183] =?UTF-8?q?=F0=9F=93=93=20Add=20delete=5Ffile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_3/file_handling/delete_file/App.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 week_3/file_handling/delete_file/App.java diff --git a/week_3/file_handling/delete_file/App.java b/week_3/file_handling/delete_file/App.java new file mode 100644 index 0000000..3ac1033 --- /dev/null +++ b/week_3/file_handling/delete_file/App.java @@ -0,0 +1,22 @@ +import java.io.File; + +public class App { + public static void main(String[] args) throws Exception { + + try { + // Create object from File class + File myFile = new File("C:\\Users\\SLY\\Documents\\sample.txt"); + + // .delete() method removes a file if the file exists in the pathname + if (myFile.delete()) { + System.out.println(myFile.getName() + " deleted successfully!"); + } else { + System.out.println("Failed to delete " + myFile.getName()); + } + } catch (Exception e) { + System.out.println("There is an error"); + e.printStackTrace(); + } + + } +} \ No newline at end of file From 9efe55f7608d5153c1475568ce906136bb61aa3e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:55:46 +0000 Subject: [PATCH 019/183] =?UTF-8?q?=F0=9F=93=93=20Add=20read=5Ffile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_3/file_handling/read_file/App.java | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 week_3/file_handling/read_file/App.java diff --git a/week_3/file_handling/read_file/App.java b/week_3/file_handling/read_file/App.java new file mode 100644 index 0000000..3e14518 --- /dev/null +++ b/week_3/file_handling/read_file/App.java @@ -0,0 +1,28 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class App { + public static void main(String[] args) throws Exception { + + try { + // Create an object from the File class + File myFile = new File("C:\\Users\\flexycode\\Documents\\sample.txt"); + + // Create an object from the Scanner class + Scanner scan = new Scanner(myFile); + + // Read the content of the file + while (scan.hasNextLine()) { + String data = scan.nextLine(); + System.out.println(data); + } + + // Close scanner + scan.close(); + } catch (FileNotFoundException e) { + System.out.println("An error occurred"); + e.printStackTrace(); + } + } +} \ No newline at end of file From 7d9704dacb018f2a94b52a647cdecc8d63bde44f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:57:12 +0000 Subject: [PATCH 020/183] =?UTF-8?q?=F0=9F=93=93=20Add=20write=5Ffile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_3/file_handling/write_file/App.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 week_3/file_handling/write_file/App.java diff --git a/week_3/file_handling/write_file/App.java b/week_3/file_handling/write_file/App.java new file mode 100644 index 0000000..cbb948c --- /dev/null +++ b/week_3/file_handling/write_file/App.java @@ -0,0 +1,23 @@ +import java.io.FileWriter; +import java.io.IOException; + +public class App { + public static void main(String[] args) throws Exception { + + try { + // Create object from FileWriter class + FileWriter myWriter = new FileWriter("C:\\Users\\flexycode\\Documents\\sample.txt"); + + // .write() methods adds content to the file + myWriter.write("Hello i am now taking intermediate programming in Java!"); + + // Close FileWriter + myWriter.close(); + + System.out.println("File Write successful!"); + } catch (IOException e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } +} \ No newline at end of file From b530db999f462bca2c698813d5ba7d2d0a49ed99 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:59:39 +0000 Subject: [PATCH 021/183] =?UTF-8?q?=E2=9C=A8=20Update=20documentation=20in?= =?UTF-8?q?=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 632d44f..44b3ee7 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,17 @@ To be follow ### Fixed - ✨ Revised my documentaion +## [4.1.1] - 2024-04-12      +### Added +- ✨ +- ✨ + +### Changed +- ✨ + +### Fixed +- ✨ + #### [Back to Table of Content](#introduction)     From 086abccd85a3393a13bfe0b320ed98d44a51b310 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 12 Apr 2024 20:20:13 +0000 Subject: [PATCH 022/183] =?UTF-8?q?=F0=9F=93=93=20Add=20GUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XSampleCode/GUI/App.java | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 XSampleCode/GUI/App.java diff --git a/XSampleCode/GUI/App.java b/XSampleCode/GUI/App.java new file mode 100644 index 0000000..184edb4 --- /dev/null +++ b/XSampleCode/GUI/App.java @@ -0,0 +1,50 @@ +package GUIExample; + +import javax.swing.*; + +public class GUIExample { + public static void main(String[] args) { + JFrame frame = new JFrame("AI Chat"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + String name = JOptionPane.showInputDialog(frame, "Hi! What's your name?"); // Prompt for user's name + + String[] options = {"About love", "About life"}; + int choice = JOptionPane.showOptionDialog(frame, "Hello " + name + "! How can I help you?", "AI Chat", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); // Prompt for user's choice + + if (choice == 0) { // If user chooses "About love" + String[] loveOptions = {"Yes", "No"}; + int loveChoice = JOptionPane.showOptionDialog(frame, "Do you want a date this coming weekend?", "AI Chat", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, loveOptions, loveOptions[0]); // Prompt for love-related choice + + if (loveChoice == 0) { // If user chooses to have a date + String[] dateOptions = {"Flower", "Ice Cream"}; + int dateChoice = JOptionPane.showOptionDialog(frame, "Would you give her a Flower or Ice Cream?", "AI Chat", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, dateOptions, dateOptions[0]); // Prompt for date-related choice + + if (dateChoice >= 0) { // If user makes a choice for the date + JOptionPane.showMessageDialog(frame, "You are really a nice guy charot"); // Display message + } + } + // If user chooses "About life" + } else if (choice == 1) { + String[] tiredOptions = {"Yes", "No"}; + int tiredChoice = JOptionPane.showOptionDialog(frame, "Are you ok? Tired?", "AI Chat", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, tiredOptions, tiredOptions[0]); // Prompt for tired-related choice + + if (tiredChoice == 0) { // If user is tired + JOptionPane.showMessageDialog(frame, "I'm sorry about that"); // Display message + + // Prompt for user response + String response; + // Use the 'response' variable as needed + response = JOptionPane.showInputDialog(frame, "Please type your response:"); + } + // Display message prompt for Advice about life + JOptionPane.showMessageDialog(frame, "I know you're tired"); + JOptionPane.showMessageDialog(frame, "Learn to rest and not to quit"); + JOptionPane.showMessageDialog(frame, "Life is cruel"); + JOptionPane.showMessageDialog(frame, "Trust me, everything will be alright"); + JOptionPane.showMessageDialog(frame, "Always pray to God"); + JOptionPane.showMessageDialog(frame, "He will help you everyday"); + JOptionPane.showMessageDialog(frame, "CHEER UP ^_^"); + } + } +} \ No newline at end of file From 21379a99862d2d6623a8a2f4ae13945ffc4c665b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 13 Apr 2024 04:21:55 +0800 Subject: [PATCH 023/183] =?UTF-8?q?=F0=9F=93=93=20Add=20GUI=20Example=20co?= =?UTF-8?q?de?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add GUIExample.java --- .../GUI/bin/GUIExample/GUIExample.class | Bin 0 -> 2535 bytes .../GUI/src/GUIExample/GUIExample.class | Bin 0 -> 2062 bytes .../GUI/src/GUIExample/GUIExample.java | 50 ++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 XSampleCode/GUI/bin/GUIExample/GUIExample.class create mode 100644 XSampleCode/GUI/src/GUIExample/GUIExample.class create mode 100644 XSampleCode/GUI/src/GUIExample/GUIExample.java diff --git a/XSampleCode/GUI/bin/GUIExample/GUIExample.class b/XSampleCode/GUI/bin/GUIExample/GUIExample.class new file mode 100644 index 0000000000000000000000000000000000000000..87efbb0666528049ef06151dc2f216b39e1e7898 GIT binary patch literal 2535 zcma)8&2Jk;6#q?PdpC|t5~oRr~0i5~4% zF9kWY7mT(z7(*WpF&y-yKP5Lr#r9LS^5kM!y27^JUd)kEbIGA!jUl?!z)CNS5VcoQ?B?^matWxVXWbosQSs2DwUNZ z9e=#Z*E;Xx!%bTa77U!&k)iswiIWV`$#qrnxve&dk)dtf+K_R|{HYic7$I*(Zwc7<9_~{suc$GZSvDG8q3eJDQ;C2J2)4|?Wa?@Gmj5ilT zgO#R>TRf#roTcJilb(s!7+MyTiSrDDQ%Wa{S1CR&cux3|>k{NyRig6YRVjIIi6+0I|<*iN03(_UHx;^k9j5%5}+wpfr4{VH2|qhn8$9JR+l34sN>Ssz+t$$uSdG7`oHE=%}g& z9VBdDW15&_I65bV>u_J`3&g3DsJHnGHTV%e>bbxDqJ zxhdTmI~!?F-T_2eAe~IZ-n~ z11Xl8ou0nRuPyOgw{KDF3O7&n+}&I}js9T>Z|Ipp?CdDE`XtdKNH@2hU%Lhn%@`H* zHbFmQNn;6@1ahZy25A){aZ1wSOh!k~D z#`5KOM+8L^F2j*oY1@jkV|G%FmQriQFn#RQc?+Hs_tvW4eK&p?G?U|0Bi1!SPg z(EtCYl=ph{G}vj}&`lpTt)`pkR zK|6H048-Ft z5jHy7diD`U&xd+K4{)<#ct#tZ%Z!B+@z(>ZzHnc-ZWrl^Jivp7-5c8Ot<0E_h>zFp zj6S1oXZDz%!cD|4KElKouzEtF&yn2?pV|w)D-oZjYl-+}a$bX{1MS^F&IfWaknaUD z6Ub{MHEpfXv^h9T(xA0TBt_9nZ_3+KoC(rX4&*be;yS$@#a~#% z`;?$w{Ei#AN%?wCm*meZtJro=F}p zAs5&^p?}3>V7Ech($ literal 0 HcmV?d00001 diff --git a/XSampleCode/GUI/src/GUIExample/GUIExample.class b/XSampleCode/GUI/src/GUIExample/GUIExample.class new file mode 100644 index 0000000000000000000000000000000000000000..d1deed0a8d1ee34145ec711c4e9154dc30b1131c GIT binary patch literal 2062 zcma)7-**#56#k}7vfCIe1Ok+wQz^6|K*S#?4NyzklEsuFDXkR&C&|z(-R#8ONkjes zUwraW;Xz+KKKR6o<>0{=pY%olBK7WWO2cW7hn$m}xsz|cx%ZoUXa4->`ELL&qn^Y7 z1`Whgh$F$U`=MADc}KXb`Gx93SuBqYTOEs%mTQsC820 z_?B-!kZIC;G=;Ztf&y)dHCa?{P3UD?H)!N*;cB1Z)J}43445_K{eH+irBJ+? z^7uA-cR8IKA_M89p|O*i&eQPWcD?M z465`Z!#-=g$$jN{v{hILnkv>rfdM8iGwikanyWfN{NogrwmnJuOfeiSOX0a(D~i-7 zh1@!Kl@9zb+cq&wGwdo;5pmMB=C!3`qR23|=(P#mlxMhHmtL1-545x$hgT&Rj%Tkn zXz?s{?6lJnU7xo+(G6IyDcbiM!$?U+_=a>^p{yZMU35)Y45?yicJ>y(eUsn2f6u_j z)Q8t@TeFWuv*pPA){r{2sOmwVm2FqvXg90UTNG7?W@1fYQz!4A=&z!e_W-3;(W16C zFIpkqz%5c~2Pm~th1$L*=j?!Wcx&%-LDN$gTvbZ@+7qpLsT->94=1pk#HUy>@LAAy zcSx_To5*(8)tbylfkd4+Cu&-GU50P_d$0$LNK14uj`YXMO0Bh9{kKIgqrSd)W#MAC zC3k@LC%VIZ)1xR-?N)3p3nuO|94Sf1QJjtP5>--7xZI*Ph)$0xDP_5?^oow~ed!zc zg5l)0tanPrK$YRx|3j%Yqs%di>-25}p8>Go%fudIITisYDwFYC`g8~wiI2o1NFtMXjPpINGXdAR%A}D?za8O> z5hKEx8S@E-a%tjy?= 0) { // If user makes a choice for the date + JOptionPane.showMessageDialog(frame, "You are really a nice guy charot"); // Display message + } + } + // If user chooses "About life" + } else if (choice == 1) { + String[] tiredOptions = {"Yes", "No"}; + int tiredChoice = JOptionPane.showOptionDialog(frame, "Are you ok? Tired?", "AI Chat", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, tiredOptions, tiredOptions[0]); // Prompt for tired-related choice + + if (tiredChoice == 0) { // If user is tired + JOptionPane.showMessageDialog(frame, "I'm sorry about that"); // Display message + + // Prompt for user response + String response; + // Use the 'response' variable as needed + response = JOptionPane.showInputDialog(frame, "Please type your response:"); + } + // Display message prompt for Advice about life + JOptionPane.showMessageDialog(frame, "I know you're tired"); + JOptionPane.showMessageDialog(frame, "Learn to rest and not to quit"); + JOptionPane.showMessageDialog(frame, "Life is cruel"); + JOptionPane.showMessageDialog(frame, "Trust me, everything will be alright"); + JOptionPane.showMessageDialog(frame, "Always pray to God"); + JOptionPane.showMessageDialog(frame, "He will help you everyday"); + JOptionPane.showMessageDialog(frame, "CHEER UP ^_^"); + } + } +} \ No newline at end of file From 6c950cc84e77c26e6f6305ce42edbf6013f4e8fb Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 13 Apr 2024 19:16:18 +0000 Subject: [PATCH 024/183] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Add=20Exception-Ha?= =?UTF-8?q?ndling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XActivityCode/Exception-Handling/App.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 XActivityCode/Exception-Handling/App.java diff --git a/XActivityCode/Exception-Handling/App.java b/XActivityCode/Exception-Handling/App.java new file mode 100644 index 0000000..e69de29 From a642e584ee3d357e414f25c2a0e660424e56a8a7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 13 Apr 2024 19:16:53 +0000 Subject: [PATCH 025/183] =?UTF-8?q?=E2=99=BB=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XActivityCode/Exception-Handling/App.java | 0 .../week_3/Exception-Handling/App.java | 35 +++++++++++++++++++ 2 files changed, 35 insertions(+) delete mode 100644 XActivityCode/Exception-Handling/App.java create mode 100644 XActivityCode/week_3/Exception-Handling/App.java diff --git a/XActivityCode/Exception-Handling/App.java b/XActivityCode/Exception-Handling/App.java deleted file mode 100644 index e69de29..0000000 diff --git a/XActivityCode/week_3/Exception-Handling/App.java b/XActivityCode/week_3/Exception-Handling/App.java new file mode 100644 index 0000000..7afc76d --- /dev/null +++ b/XActivityCode/week_3/Exception-Handling/App.java @@ -0,0 +1,35 @@ +package ArrayExceptionHandling; + +import java.util.Scanner; + +public class ArrayExceptionHandling { + public static void main(String[] args) { + String[] array = {"One", "Two", "Three"}; + Scanner scanner = new Scanner(System.in); + + System.out.println("Array values: " + String.join(", ", array)); + + while (true) { + try { + System.out.print("Enter Array Index: "); + int index = scanner.nextInt(); + + if (index >= 0 && index < array.length) { + System.out.println("Array Element = " + array[index]); + System.out.println("Exception: Caught"); + } else { + throw new ArrayIndexOutOfBoundsException("Index " + index + " out of bounds for length " + array.length); + } + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println(e.getMessage()); + System.out.println("Quitting..."); + break; + } catch (Exception e) { + System.out.println("Exception: Caught"); + scanner.nextLine(); // Clear the input buffer + } + } + + scanner.close(); + } +} \ No newline at end of file From 8a7c8ef650e76854412551295fae86d4dc86c65b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 13 Apr 2024 19:22:22 +0000 Subject: [PATCH 026/183] =?UTF-8?q?=F0=9F=93=93=20Add=20File-Handling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XActivityCode/week_3/File-Handling/App.java | 66 +++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 XActivityCode/week_3/File-Handling/App.java diff --git a/XActivityCode/week_3/File-Handling/App.java b/XActivityCode/week_3/File-Handling/App.java new file mode 100644 index 0000000..01470c4 --- /dev/null +++ b/XActivityCode/week_3/File-Handling/App.java @@ -0,0 +1,66 @@ +package FileHandling; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Scanner; + +public class FileHandling { + public static void main(String[] args) { + // Create a file containing the usernames and passwords + String[] fileContents = {"Juan Limbo34", "Alan 12Laure", "Kenzo Virus26", "Gabriel Macato36", "Joshua 78Manalansan"}; + createFile(fileContents); + + // Read the file and validate the username and password + Scanner scanner = new Scanner(System.in); + System.out.print("Enter username: "); + String username = scanner.nextLine(); + System.out.print("Enter password: "); + String password = scanner.nextLine(); + + boolean validCredentials = validateCredentials(username, password); + if (validCredentials) { + System.out.println("Successfully entered the program!"); + } else { + System.out.println("Invalid username or password."); + } + + scanner.close(); + } + + private static void createFile(String[] fileContents) { + try { + // Set the file path to your Documents folder + String filePath = "C:\\Users\\flexycode\\eclipse-workspace\\File-Handling"; + for (int i = 0; i < fileContents.length; i++) { + FileWriter textOut = new FileWriter(filePath + "namepass_" + i + ".txt"); + textOut.write(fileContents[i]); + textOut.close(); + } + } catch (IOException e) { + System.out.println("An error occurred while creating the file."); + e.printStackTrace(); + } + } + + private static boolean validateCredentials(String username, String password) { + for (int i = 0; i < 5; i++) { + try { + File file = new File("namepass_" + i + ".txt"); + Scanner fileScanner = new Scanner(file); + String line = fileScanner.nextLine(); + String[] credentials = line.split(" "); + if (credentials.length == 2 && credentials[0].equals(username) && credentials[1].equals(password)) { + fileScanner.close(); + return true; + } + fileScanner.close(); + } catch (FileNotFoundException e) { + System.out.println("An error occurred while reading the file."); + e.printStackTrace(); + } + } + return false; + } +} \ No newline at end of file From 4077a59781851f2039f3d0b5b4ba753413262da1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 13 Apr 2024 19:28:09 +0000 Subject: [PATCH 027/183] =?UTF-8?q?=F0=9F=A7=8A=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 44b3ee7..a324d7d 100644 --- a/README.md +++ b/README.md @@ -169,16 +169,17 @@ To be follow ### Fixed - ✨ Revised my documentaion -## [4.1.1] - 2024-04-12      +## [4.1.1] - 2024-04-14      ### Added -- ✨ -- ✨ +- ✨ Added Exception-Handling Lab-1 Activity +- ✨ Added File-Handling Lab-2 Activity ### Changed -- ✨ +- ✨ Change documentary +- ✨ Change some variable and refix function in both Lab Activity ### Fixed -- ✨ +- ✨ Fixed commit error changes #### [Back to Table of Content](#introduction)     From dcffb00e64aef0b6a84dbfd09177a72aca4048a4 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 14 Apr 2024 03:33:32 +0800 Subject: [PATCH 028/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Exception=20Handli?= =?UTF-8?q?ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ArrayExceptionHandling.class | Bin 0 -> 2170 bytes .../ArrayExceptionHandling.java | 35 ++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 XActivityCode/week_3/Exception-Handling/bin/ArrayExceptionHandling/ArrayExceptionHandling.class create mode 100644 XActivityCode/week_3/Exception-Handling/src/ArrayExceptionHandling/ArrayExceptionHandling.java diff --git a/XActivityCode/week_3/Exception-Handling/bin/ArrayExceptionHandling/ArrayExceptionHandling.class b/XActivityCode/week_3/Exception-Handling/bin/ArrayExceptionHandling/ArrayExceptionHandling.class new file mode 100644 index 0000000000000000000000000000000000000000..09ca8da69f2c82872253eedddcf5eeb5ec80f307 GIT binary patch literal 2170 zcmaJ?-%}G;6#gzDY>Z360D=m-Qq&-jP;IRxLaQli+5l=WG_}7j;gT$DcEj#ngz5C5 z(;4ksUpmvy)Th4qtPj}1seSKj|DCq<+)aQmqz=Qqch5aPzw@1&KmXl+1z-}J8d?~} zuDdSZoZcvksx%$@Hn*27(=H{Oi#4<|bguAqp0qe=%`L8oqGV{hX4QA#IjD2TY2u9>bov%m1WaoNM@Ty|DU8%6tKcg zo8fr;L3Tg6oOG#@)No$Iu>)DxE+XineCKQtK@T0~A372AGKA;Lt`HhdFdPef`O>tK zxgxi1;U2*$3~1;-=x)=KqN3w8&M>s7JbG$bm`*ZdSA9wG1h1r`=)+kB$RI;sys64? zUPTzvaSrDxC&wpj_nqCLdUl;f5T{_HMiia6sAB}9gu;rWqEFX-2OUb6xtkMfzOaiT z)rii4i{Znt#fT&c9Z8Hc^j7$)NIQ0s%LP-G>EuanOKR2m##p<6A9fbSCA_WSGDBB@ zDIwEPjE;A3g+Z&T`YeTCGq3pwu9E$wXB9&W zZYqFoDdJ@^O)!iijg0E}6?OVpM;0>-(UOoe!t;2E=Ab*?#4dt4hNE|VQ%YiRB9Tz_ z+|_YUnMYJTYMzvEUdMekVBwWq+OXUU7Aj1>(g!_a;wO?%y070Ft`H6q{SMd`Sk zs)4HvKQ}V2u3d8r07)^S$-YO0~)I(!Y11BUaPRnbJfu>rN`Gu6m|x{EZoteh!D zs-q312xulc0vL>SZu!ESFjxdt;&4qkZHbDor7@|*F2i6zT7wz%fEdoQu^2GdSaw{) z5_UXTf!pR&`B69HmvSpLMj;*Acvd4w8^D`<66XN%o}ecXSp)u~@Fq8tcv# z!m;DI>`U|&p5x>T7&FiDX6(YqZy4Uj7_f!6l;GVhyf?aqYf}TiU~pjM)vxF$@yNiX zZG5n&be)u+?)>!<=>n;2V;XpY+kecG=GYcKs=Jz1TIg2Nn6e;5(ee zBl>xGjDGxp0sKe^{X_s$83A5XgdSmnPf(z}8{gwoIx&jz4Ibb#%4ZUn$@3SK#~S(m zk|Ko2TRWXNofgUJ0>b}bTtiVq-`_~G9m*>dd@2c;hV*?6`A$+_BJ~ysEC<0tuqad| TSe;;9gGV<}l1i*&11J6i+Ho@J literal 0 HcmV?d00001 diff --git a/XActivityCode/week_3/Exception-Handling/src/ArrayExceptionHandling/ArrayExceptionHandling.java b/XActivityCode/week_3/Exception-Handling/src/ArrayExceptionHandling/ArrayExceptionHandling.java new file mode 100644 index 0000000..a29db9d --- /dev/null +++ b/XActivityCode/week_3/Exception-Handling/src/ArrayExceptionHandling/ArrayExceptionHandling.java @@ -0,0 +1,35 @@ +package ArrayExceptionHandling; + +import java.util.Scanner; + +public class ArrayExceptionHandling { + public static void main(String[] args) { + String[] array = {"One", "Two", "Three"}; + Scanner scanner = new Scanner(System.in); + + System.out.println("Array values: " + String.join(", ", array)); + + while (true) { + try { + System.out.print("Enter Array Index: "); + int index = scanner.nextInt(); + + if (index >= 0 && index < array.length) { + System.out.println("Array Element = " + array[index]); + System.out.println("Exception: Caught"); + } else { + throw new ArrayIndexOutOfBoundsException("Index " + index + " out of bounds for length " + array.length); + } + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println(e.getMessage()); + System.out.println("Quitting..."); + break; + } catch (Exception e) { + System.out.println("Exception: Caught"); + scanner.nextLine(); // Clear the input buffer + } + } + + scanner.close(); + } +} \ No newline at end of file From d9248c9ae51b57943445eb6985308d41e7223d33 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 14 Apr 2024 03:34:54 +0800 Subject: [PATCH 029/183] =?UTF-8?q?=F0=9F=94=A8=20Delete=20XActivityCode/w?= =?UTF-8?q?eek=5F3/Exception-Handling/App.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week_3/Exception-Handling/App.java | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 XActivityCode/week_3/Exception-Handling/App.java diff --git a/XActivityCode/week_3/Exception-Handling/App.java b/XActivityCode/week_3/Exception-Handling/App.java deleted file mode 100644 index 7afc76d..0000000 --- a/XActivityCode/week_3/Exception-Handling/App.java +++ /dev/null @@ -1,35 +0,0 @@ -package ArrayExceptionHandling; - -import java.util.Scanner; - -public class ArrayExceptionHandling { - public static void main(String[] args) { - String[] array = {"One", "Two", "Three"}; - Scanner scanner = new Scanner(System.in); - - System.out.println("Array values: " + String.join(", ", array)); - - while (true) { - try { - System.out.print("Enter Array Index: "); - int index = scanner.nextInt(); - - if (index >= 0 && index < array.length) { - System.out.println("Array Element = " + array[index]); - System.out.println("Exception: Caught"); - } else { - throw new ArrayIndexOutOfBoundsException("Index " + index + " out of bounds for length " + array.length); - } - } catch (ArrayIndexOutOfBoundsException e) { - System.out.println(e.getMessage()); - System.out.println("Quitting..."); - break; - } catch (Exception e) { - System.out.println("Exception: Caught"); - scanner.nextLine(); // Clear the input buffer - } - } - - scanner.close(); - } -} \ No newline at end of file From 869d85dfbef18a07a4021f2e2cad0d238b32f9b2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 14 Apr 2024 03:39:23 +0800 Subject: [PATCH 030/183] =?UTF-8?q?=F0=9F=93=93=20Upload=20File-Handling?= =?UTF-8?q?=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add FileHanding.class - Add FileHandling.java - Add File-Handlingnamepass_0.txt - Add File-Handlingnamepass_0.txt - Add File-Handlingnamepass_0.txt --- .../File-Handling/File-Handlingnamepass_0.txt | 1 + .../File-Handling/File-Handlingnamepass_1.txt | 1 + .../File-Handling/File-Handlingnamepass_2.txt | 1 + .../File-Handling/File-Handlingnamepass_3.txt | 1 + .../File-Handling/File-Handlingnamepass_4.txt | 1 + .../bin/FileHandling/FileHandling.class | Bin 0 -> 3180 bytes .../src/FileHandling/FileHandling.java | 66 ++++++++++++++++++ 7 files changed, 71 insertions(+) create mode 100644 XActivityCode/week_3/File-Handling/File-Handlingnamepass_0.txt create mode 100644 XActivityCode/week_3/File-Handling/File-Handlingnamepass_1.txt create mode 100644 XActivityCode/week_3/File-Handling/File-Handlingnamepass_2.txt create mode 100644 XActivityCode/week_3/File-Handling/File-Handlingnamepass_3.txt create mode 100644 XActivityCode/week_3/File-Handling/File-Handlingnamepass_4.txt create mode 100644 XActivityCode/week_3/File-Handling/bin/FileHandling/FileHandling.class create mode 100644 XActivityCode/week_3/File-Handling/src/FileHandling/FileHandling.java diff --git a/XActivityCode/week_3/File-Handling/File-Handlingnamepass_0.txt b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_0.txt new file mode 100644 index 0000000..39d6886 --- /dev/null +++ b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_0.txt @@ -0,0 +1 @@ +Juan Limbo34 \ No newline at end of file diff --git a/XActivityCode/week_3/File-Handling/File-Handlingnamepass_1.txt b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_1.txt new file mode 100644 index 0000000..fad2901 --- /dev/null +++ b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_1.txt @@ -0,0 +1 @@ +Alan 12Laure \ No newline at end of file diff --git a/XActivityCode/week_3/File-Handling/File-Handlingnamepass_2.txt b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_2.txt new file mode 100644 index 0000000..61984fc --- /dev/null +++ b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_2.txt @@ -0,0 +1 @@ +Kenzo Virus26 \ No newline at end of file diff --git a/XActivityCode/week_3/File-Handling/File-Handlingnamepass_3.txt b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_3.txt new file mode 100644 index 0000000..b226898 --- /dev/null +++ b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_3.txt @@ -0,0 +1 @@ +Gabriel Macato36 \ No newline at end of file diff --git a/XActivityCode/week_3/File-Handling/File-Handlingnamepass_4.txt b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_4.txt new file mode 100644 index 0000000..f051df6 --- /dev/null +++ b/XActivityCode/week_3/File-Handling/File-Handlingnamepass_4.txt @@ -0,0 +1 @@ +Joshua 78Manalansan \ No newline at end of file diff --git a/XActivityCode/week_3/File-Handling/bin/FileHandling/FileHandling.class b/XActivityCode/week_3/File-Handling/bin/FileHandling/FileHandling.class new file mode 100644 index 0000000000000000000000000000000000000000..a2d7bb00f912aa93fc17936139eed6124060835c GIT binary patch literal 3180 zcmaJ@YkSk?8NT26AYs%H93Yq`U|I@s(j?U3R2vwO0SP#P)eveLMip5}L}ba8WJtP0 z*RI>xx!tjJr?P$EOTV-qLa%a-AFyArkNY9pvip@1VlUpV%a&ff$NRpY`+20l{rk(O z08ZgA3OWQb7cAQx*PW_uIrAgU4+`P}U3c`m`iQM_?8@vN(+C8TCoRVcP7B2PbJGIx zF}G@_5W^M?2_yx!l`O}cYSd;;@0vbqn*!;QYv}g0?pgAAtur1hSiZpXrRFnR02H}- zO}89@UHxyAHh`1^k64SjX$9L`5Jm$kx&^dL4c*C>tlF$QdPK!e_M9b)>?`?_-tbHn zJp#{NHl4TK?6l=I{QNN$8E$q_pY<%$&Q9uv9=N0IeO{pZlIt%t^z88yle(jG8(()) z5a`pe7uy6C~|AkI61 z>17+f={b7MEM!x71)~b`;%f(k*bTS5-q@GJ_MW(9de!whZ-^wji4$&Lwg!wMGI@&i32 z+AdrZZS0W3>$oiqepI$}4YQ%$?#ZKM&$tRoJaE>@nx4lsTsgmFnDxMN9SwKFIu%AdRO*^X<`h;gzN!aYCoKLa7^{Fzz9Q3U zM-&QX#)b?Gmf*ULOlvx&sDQE7nzc*Q;0>wTU71AfmGE#|`fFLr@it4zM!w5qS@cwV zlczFSy6|lc@8CN$p?3D4weEHzo+P}eRS!Bd`XSjoM!q8{v`0y zCKcN8Qt(h<@Bg1li$x+}KkXl5;Q-=n@mqmcg-;{A3*Hk0kD-3XMh8;7%3)v&w(_b) z6L^0v?CZof_HeQ2<7P?r)zrVDs}f76%awR~N4b(n?D}dulHOA;4Ss>%C)ii{ z9Qz;R(B$VBNDr^z@XISWHYFblYY&C^P$vEbP996_OguoR96GatbC0l9HqW!kB^M>g zSO~I!&Jf;S0(*gJHH7UriZlx7#yRZ3ICkMGdT<@PaSIu|i9J|AA8dX(NMffW@VJD_ zeAsy*mf<;F<`*TdgF1zr46 zJ%t$gg%U}HzjJ<^^G~LyOR-arkbQ#JD}%jX;wJDIU!NKp=*_R-&7l<-?{|pafu|2w z|M3W2CCR)>=7TGk`z#E^Ack3CBLxOR9bV+q0jNaSgM&Qtko@4mAaacE0FJX&Bqz!E z2vHD2$WyA=k45s4emF=~YGmBQc@A8TjWFPKyv0$;b2sAuf-0HyuJR~Bvhp&o5dl9M zB9`J7IZ9X6CB^wC@G4{&NQU>OqyvT?W2q3NWQB9lmeV+G$TBs0mUiBFKtBxCu3 z6}UuqDUl}_sS55hO4H%J*&~NJ znx`v98M`CY<|y?z#<(BnniE`6;F=;saguMpQ<%eHYH%i0>@|`lpU?$tuq9o+kRf_Q}t Date: Sun, 14 Apr 2024 03:41:58 +0800 Subject: [PATCH 031/183] =?UTF-8?q?=F0=9F=93=93=20Add=20FileHandling=20Jav?= =?UTF-8?q?a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add FileHanding.class - Add FileHandling.java - Add File-Handlingnamepass_0.txt - Add File-Handlingnamepass_1.txt - Add File-Handlingnamepass_2.txt - Add File-Handlingnamepass_3.txt - Add File-Handlingnamepass_4.txt From f24ddb40315591ffbc3b9d01d46a826c13ad3703 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 14 Apr 2024 03:43:39 +0800 Subject: [PATCH 032/183] =?UTF-8?q?=F0=9F=94=A8=20Delete=20XActivityCode/w?= =?UTF-8?q?eek=5F3/File-Handling/App.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XActivityCode/week_3/File-Handling/App.java | 66 --------------------- 1 file changed, 66 deletions(-) delete mode 100644 XActivityCode/week_3/File-Handling/App.java diff --git a/XActivityCode/week_3/File-Handling/App.java b/XActivityCode/week_3/File-Handling/App.java deleted file mode 100644 index 01470c4..0000000 --- a/XActivityCode/week_3/File-Handling/App.java +++ /dev/null @@ -1,66 +0,0 @@ -package FileHandling; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Scanner; - -public class FileHandling { - public static void main(String[] args) { - // Create a file containing the usernames and passwords - String[] fileContents = {"Juan Limbo34", "Alan 12Laure", "Kenzo Virus26", "Gabriel Macato36", "Joshua 78Manalansan"}; - createFile(fileContents); - - // Read the file and validate the username and password - Scanner scanner = new Scanner(System.in); - System.out.print("Enter username: "); - String username = scanner.nextLine(); - System.out.print("Enter password: "); - String password = scanner.nextLine(); - - boolean validCredentials = validateCredentials(username, password); - if (validCredentials) { - System.out.println("Successfully entered the program!"); - } else { - System.out.println("Invalid username or password."); - } - - scanner.close(); - } - - private static void createFile(String[] fileContents) { - try { - // Set the file path to your Documents folder - String filePath = "C:\\Users\\flexycode\\eclipse-workspace\\File-Handling"; - for (int i = 0; i < fileContents.length; i++) { - FileWriter textOut = new FileWriter(filePath + "namepass_" + i + ".txt"); - textOut.write(fileContents[i]); - textOut.close(); - } - } catch (IOException e) { - System.out.println("An error occurred while creating the file."); - e.printStackTrace(); - } - } - - private static boolean validateCredentials(String username, String password) { - for (int i = 0; i < 5; i++) { - try { - File file = new File("namepass_" + i + ".txt"); - Scanner fileScanner = new Scanner(file); - String line = fileScanner.nextLine(); - String[] credentials = line.split(" "); - if (credentials.length == 2 && credentials[0].equals(username) && credentials[1].equals(password)) { - fileScanner.close(); - return true; - } - fileScanner.close(); - } catch (FileNotFoundException e) { - System.out.println("An error occurred while reading the file."); - e.printStackTrace(); - } - } - return false; - } -} \ No newline at end of file From 4d08ff680b1e10558920e781013a295946e81ab9 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:42:57 +0800 Subject: [PATCH 033/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a324d7d..1d55172 100644 --- a/README.md +++ b/README.md @@ -30,13 +30,13 @@ At the end of the course, the studend must be able to: ###### ⚡ Course Outline: ACO -CI-F- 030(01) Course Outline - CCPRGG2L - COM -# 💻 Lesson +# 💻 Lesson  ### CCPRGG1L Table lecture #### Course Outline and Timeframe | Week No. | Date Coverage | Topic | Reference | -|----------|--------------------------------------------------------------|-------------------------------------------------------------------|-----------------------------------------------------------------------| +|----------|--------------------------------------------------------------|-------------------------------------------------------------------|-----------------------------------------------------------------------|  | 1 | April 6 | Class Orientation | Course Syllabus | | | | Ø University Mission & Vision | | | | | Ø College Mission & Vision | | | | | Ø Course Syllabi | | @@ -44,9 +44,9 @@ At the end of the course, the studend must be able to: | 2 | April 6 | Arrays | Chapter 8&9 Java Programming Eight Edition, Farrell, Joyce | | 3 | April 13-17 | File and String manipulation | Chapter 7&13 Java Programming Eight Edition, Farrell, Joyce | | 4 | April 20 | Recursion | Chapter 2 Introduction to Programming in Java: | -| | April 27 | | An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick | +| | April 27 | | An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick |   | | | | Chapter 13 Java Programming: From Problem Analysis to | -| | | | Program Design, Fifth Edition., Malik, DS | +| | | | Program Design, Fifth Edition., Malik, DS |  | 5 | May 4 | Regular Expression | Chapter 30 Java : The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | | 6 | May 11 | Introduction to Classes | Chapter 3 Java Programming Eight Edition, Farrell, Joyce | | 7 | May 18 | Composition, objects, and classes | Chapter 3 Introduction to Programming in Java: An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick | @@ -101,13 +101,12 @@ coming soon 🤖 Compile the Java code using javac and run the compiled program with java. - ```bash -javac ProgScanner.java -java ProgScanner +javac [java file name]  +java [java file name]  ``` -# 🏆 Contributing  +# 🏆 Contributing   ### 🧠 Submitting Changes From 1a96e776c0f77cb2583f93e28b812032c8111ad8 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:49:15 +0800 Subject: [PATCH 034/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 1d55172..013f596 100644 --- a/README.md +++ b/README.md @@ -35,27 +35,26 @@ At the end of the course, the studend must be able to: ### CCPRGG1L Table lecture #### Course Outline and Timeframe -| Week No. | Date Coverage | Topic | Reference | -|----------|--------------------------------------------------------------|-------------------------------------------------------------------|-----------------------------------------------------------------------|  -| 1 | April 6 | Class Orientation | Course Syllabus | -| | | Ø University Mission & Vision | | | | | Ø College Mission & Vision | | -| | | Ø Course Syllabi | | -| | | Ø Lab Guidelines and Safety Review | | -| 2 | April 6 | Arrays | Chapter 8&9 Java Programming Eight Edition, Farrell, Joyce | -| 3 | April 13-17 | File and String manipulation | Chapter 7&13 Java Programming Eight Edition, Farrell, Joyce | -| 4 | April 20 | Recursion | Chapter 2 Introduction to Programming in Java: | -| | April 27 | | An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick |   -| | | | Chapter 13 Java Programming: From Problem Analysis to | -| | | | Program Design, Fifth Edition., Malik, DS |  -| 5 | May 4 | Regular Expression | Chapter 30 Java : The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | -| 6 | May 11 | Introduction to Classes | Chapter 3 Java Programming Eight Edition, Farrell, Joyce | -| 7 | May 18 | Composition, objects, and classes | Chapter 3 Introduction to Programming in Java: An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick | -| 8 | May 25 | Instance method Inheritance Polymorphism | Chapter 10 Java Programming: From Problem Analysis to Program Design, Fifth Edition., Malik, DS | -| 9 | June 1 | Introduction to Swing package | Chapter 14 Java Programming Eight Edition, Farrell, Joyce | -| 10 | June 8 | Interfaces and event-driven programming | Chapter 10 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | -| 11 | June 15 | Threads | Chapter 11 Java : The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | -| 12 | July 29 | Runnable interface Synchronization | Chapter 11 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | -| 13 | July 6 | Course Synthesis & Final Examination | | +| Week No. | Date Coverage | Topic | Reference | +|----------|---------------|------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| 1 | April 6 | Class Orientation | Course Syllabus | +| | | - Ø University Mission & Vision | | +| | | - Ø College Mission & Vision | |  +| | | - Ø Course Syllabi | |  +| | | - Ø Lab Guidelines and Safety Review | | +| 2 | April 6 | Arrays | Chapter 8&9 Java Programming Eight Edition, Farrell, Joyce | +| 3 | April 13-17 | File and String manipulation | Chapter 7&13 Java Programming Eight Edition, Farrell, Joyce | +| 4 | April 20 | Recursion | Chapter 2 Introduction to Programming in Java: An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick | +| | April 27 | | Chapter 13 Java Programming: From Problem Analysis to Program Design, Fifth Edition, Malik, DS | +| 5 | May 4 | Regular Expression | Chapter 30 Java: The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | +| 6 | May 11 | Introduction to Classes | Chapter 3 Java Programming Eight Edition, Farrell, Joyce | +| 7 | May 18 | Composition, objects, and classes | Chapter 3 Introduction to Programming in Java: An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick | +| 8 | May 25 | Instance method Inheritance Polymorphism | Chapter 10 Java Programming: From Problem Analysis to Program Design, Fifth Edition, Malik, DS | +| 9 | June 1 | Introduction to Swing package | Chapter 14 Java Programming Eight Edition, Farrell, Joyce | +| 10 | June 8 | Interfaces and event-driven programming | Chapter 10 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | +| 11 | June 15 | Threads | Chapter 11 Java: The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | +| 12 | July 29 | Runnable interface Synchronization | Chapter 11 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | +| 13 | July 6 | Course Synthesis & Final Examination | | #### SUGGESTED READINGS AND REFERENCES From 62bf25377401cd32db4b9a80e6b12c1aa84c59d4 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:50:36 +0800 Subject: [PATCH 035/183] Create LICENCE.md --- LICENCE.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 LICENCE.md diff --git a/LICENCE.md b/LICENCE.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/LICENCE.md @@ -0,0 +1 @@ + From 05697c63ceddab9aa7ef097f49d1424cae3bb843 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:52:27 +0800 Subject: [PATCH 036/183] =?UTF-8?q?=F0=9F=94=92=20Create=20LICENSE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0980fe5 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jay Arre P. Talosig + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 63e296362d20742a8a19c4f311040bfc264c043f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:53:10 +0800 Subject: [PATCH 037/183] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Delete=20LICENCE.m?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENCE.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 LICENCE.md diff --git a/LICENCE.md b/LICENCE.md deleted file mode 100644 index 8b13789..0000000 --- a/LICENCE.md +++ /dev/null @@ -1 +0,0 @@ - From 3c11f131c4ab1e27773eff8af02473084c8e91d6 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 19 Apr 2024 15:02:40 +0800 Subject: [PATCH 038/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 013f596..8dda3d4 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ java [java file name]  # 🔑 License  -This course project repository is licensed under the MIT License and National University. +This course project repository is licensed under the [MIT License and National University](https://github.com/flexycode/CCPRGG2L_INTERMEDIATE_PROGRAMMING/blob/main/LICENSE) ## National University of Manila License    From 26f1b838ee93f6013e984cd248992a80d888c6e6 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 03:07:02 +0000 Subject: [PATCH 039/183] Add StringBuilder --- XActivityCode/week_4/StringBuilder/App.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 XActivityCode/week_4/StringBuilder/App.java diff --git a/XActivityCode/week_4/StringBuilder/App.java b/XActivityCode/week_4/StringBuilder/App.java new file mode 100644 index 0000000..e69de29 From eb353ba19f2b5abf6498c339c35e44aee9ab1b7c Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 03:28:40 +0000 Subject: [PATCH 040/183] Add partial code for this activity --- XActivityCode/week_4/StringBuilder/App.java | 0 XActivityCode/week_4/StringBuilder/SB.java | 41 +++++++++++++++++++++ 2 files changed, 41 insertions(+) delete mode 100644 XActivityCode/week_4/StringBuilder/App.java create mode 100644 XActivityCode/week_4/StringBuilder/SB.java diff --git a/XActivityCode/week_4/StringBuilder/App.java b/XActivityCode/week_4/StringBuilder/App.java deleted file mode 100644 index e69de29..0000000 diff --git a/XActivityCode/week_4/StringBuilder/SB.java b/XActivityCode/week_4/StringBuilder/SB.java new file mode 100644 index 0000000..e69c9e6 --- /dev/null +++ b/XActivityCode/week_4/StringBuilder/SB.java @@ -0,0 +1,41 @@ +import java.util.*; +import java.util.concurrent.LinkedBlockingQueue; + +public class SB { + public static void main(String[] argv) throws Exception + { + // Create a StringBuilder object + // using StringBuilder() constructor + StringBuilder str = new StringBuilder(); + + str.append("SB"); + + // print string + System.out.println("String = " + str.toString()); + + // create a StringBuilder object + // using StringBuilder(CharSequence) constructor + StringBuilder str1 + = new StringBuilder("AAAABBBCCCC"); + + // print string + System.out.println("String1 = " + str1.toString()); + + // create a StringBuilder object + // using StringBuilder(capacity) constructor + StringBuilder str2 = new StringBuilder(10); + + // print string + System.out.println("String2 capacity = " + + str2.capacity()); + + // create a StringBuilder object + // using StringBuilder(String) constructor + StringBuilder str3 + = new StringBuilder(str1.toString()); + + // print string + System.out.println("String3 = " + str3.toString()); + } +} + From b730f7eb36f9180c84f6a57d4992e1cd6ccc4c6e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 03:54:19 +0000 Subject: [PATCH 041/183] commit --- .../week_4/StringBuilder/{SB.java => StringBuilder.java} | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) rename XActivityCode/week_4/StringBuilder/{SB.java => StringBuilder.java} (92%) diff --git a/XActivityCode/week_4/StringBuilder/SB.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java similarity index 92% rename from XActivityCode/week_4/StringBuilder/SB.java rename to XActivityCode/week_4/StringBuilder/StringBuilder.java index e69c9e6..5c4e9bf 100644 --- a/XActivityCode/week_4/StringBuilder/SB.java +++ b/XActivityCode/week_4/StringBuilder/StringBuilder.java @@ -1,7 +1,6 @@ -import java.util.*; -import java.util.concurrent.LinkedBlockingQueue; - -public class SB { +import java.util.Scanner*; + +public class StringBuilder { public static void main(String[] argv) throws Exception { // Create a StringBuilder object From 37d07c6bb06d985eac1764a95c65ddb6a03f2f19 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 11:58:31 +0800 Subject: [PATCH 042/183] Add StringBuilder.java Fix the issue of the code --- .../week_4/StringBuilder/StringBuilder.java | 123 ++++++++++++------ 1 file changed, 85 insertions(+), 38 deletions(-) diff --git a/XActivityCode/week_4/StringBuilder/StringBuilder.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java index 5c4e9bf..33313af 100644 --- a/XActivityCode/week_4/StringBuilder/StringBuilder.java +++ b/XActivityCode/week_4/StringBuilder/StringBuilder.java @@ -1,40 +1,87 @@ -import java.util.Scanner*; - -public class StringBuilder { - public static void main(String[] argv) throws Exception - { - // Create a StringBuilder object - // using StringBuilder() constructor - StringBuilder str = new StringBuilder(); - - str.append("SB"); - - // print string - System.out.println("String = " + str.toString()); - - // create a StringBuilder object - // using StringBuilder(CharSequence) constructor - StringBuilder str1 - = new StringBuilder("AAAABBBCCCC"); - - // print string - System.out.println("String1 = " + str1.toString()); - - // create a StringBuilder object - // using StringBuilder(capacity) constructor - StringBuilder str2 = new StringBuilder(10); - - // print string - System.out.println("String2 capacity = " - + str2.capacity()); - - // create a StringBuilder object - // using StringBuilder(String) constructor - StringBuilder str3 - = new StringBuilder(str1.toString()); - - // print string - System.out.println("String3 = " + str3.toString()); +import java.util.Scanner; + +public class StringBuilderOperations { + public static void main(String[] args) { + // Create a Scanner object to read user input + Scanner scanner = new Scanner(System.in); + + // Prompt the user to enter a string + System.out.print("Enter a string: "); + String input = scanner.nextLine(); + + // Create a StringBuilder object from the input string + StringBuilder sb = new StringBuilder(input); + + // Flag to control the loop + boolean continueOperations = true; + + while (continueOperations) { + // Display the menu of operations + System.out.println("\nChoose an operation:"); + System.out.println("1. Append"); + System.out.println("2. Insert"); + System.out.println("3. Delete"); + System.out.println("4. Replace"); + System.out.println("5. Reverse"); + System.out.println("6. Exit"); + + // Read the user's choice + int choice = scanner.nextInt(); + scanner.nextLine(); // Consume the newline character + + switch (choice) { + case 1: + // Append operation + System.out.print("Enter a string to append: "); + String appendStr = scanner.nextLine(); + sb.append(appendStr); + System.out.println("Result: " + sb); + break; + case 2: + // Insert operation + System.out.print("Enter a string to insert: "); + String insertStr = scanner.nextLine(); + System.out.print("Enter the index to insert at: "); + int index = scanner.nextInt(); + sb.insert(index, insertStr); + System.out.println("Result: " + sb); + break; + case 3: + // Delete operation + System.out.print("Enter the starting index to delete: "); + int startIndex = scanner.nextInt(); + System.out.print("Enter the length to delete: "); + int length = scanner.nextInt(); + sb.delete(startIndex, startIndex + length); + System.out.println("Result: " + sb); + break; + case 4: + // Replace operation + System.out.print("Enter the starting index to replace: "); + int replaceStartIndex = scanner.nextInt(); + System.out.print("Enter the length to replace: "); + int replaceLength = scanner.nextInt(); + scanner.nextLine(); // Consume the newline character + System.out.print("Enter the replacement string: "); + String replaceStr = scanner.nextLine(); + sb.replace(replaceStartIndex, replaceStartIndex + replaceLength, replaceStr); + System.out.println("Result: " + sb); + break; + case 5: + // Reverse operation + sb.reverse(); + System.out.println("Result: " + sb); + break; + case 6: + // Exit the program + continueOperations = false; + break; + default: + System.out.println("Invalid choice. Please try again."); + } + } + + // Close the Scanner object + scanner.close(); } } - From 13232a207ccd0cb65144584a394cb47b40022ad9 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 12:00:03 +0800 Subject: [PATCH 043/183] =?UTF-8?q?=F0=9F=93=93=20Update=20StringBuilder.j?= =?UTF-8?q?ava?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix StringBuilder.java --- XActivityCode/week_4/StringBuilder/StringBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XActivityCode/week_4/StringBuilder/StringBuilder.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java index 33313af..220ace4 100644 --- a/XActivityCode/week_4/StringBuilder/StringBuilder.java +++ b/XActivityCode/week_4/StringBuilder/StringBuilder.java @@ -9,7 +9,7 @@ public static void main(String[] args) { System.out.print("Enter a string: "); String input = scanner.nextLine(); - // Create a StringBuilder object from the input string + // Create a StringBuilder object from the input string StringBuilder sb = new StringBuilder(input); // Flag to control the loop From d9b46e64c628b18de1ecb6f0b75089fc65021f01 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 12:21:02 +0800 Subject: [PATCH 044/183] Update StringBuilder.java --- .../week_4/StringBuilder/StringBuilder.java | 126 ++++++++++-------- 1 file changed, 72 insertions(+), 54 deletions(-) diff --git a/XActivityCode/week_4/StringBuilder/StringBuilder.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java index 220ace4..e05d6e8 100644 --- a/XActivityCode/week_4/StringBuilder/StringBuilder.java +++ b/XActivityCode/week_4/StringBuilder/StringBuilder.java @@ -1,87 +1,105 @@ import java.util.Scanner; -public class StringBuilderOperations { - public static void main(String[] args) { - // Create a Scanner object to read user input - Scanner scanner = new Scanner(System.in); +class StringOperations { + private StringBuilder sb; + private Scanner scanner; - // Prompt the user to enter a string + public StringOperations() { + scanner = new Scanner(System.in); System.out.print("Enter a string: "); String input = scanner.nextLine(); + sb = new StringBuilder(input); + } - // Create a StringBuilder object from the input string - StringBuilder sb = new StringBuilder(input); - - // Flag to control the loop + public void performOperations() { boolean continueOperations = true; while (continueOperations) { - // Display the menu of operations - System.out.println("\nChoose an operation:"); - System.out.println("1. Append"); - System.out.println("2. Insert"); - System.out.println("3. Delete"); - System.out.println("4. Replace"); - System.out.println("5. Reverse"); - System.out.println("6. Exit"); - - // Read the user's choice + displayMenu(); int choice = scanner.nextInt(); scanner.nextLine(); // Consume the newline character switch (choice) { case 1: - // Append operation - System.out.print("Enter a string to append: "); - String appendStr = scanner.nextLine(); - sb.append(appendStr); - System.out.println("Result: " + sb); + appendString(); break; case 2: - // Insert operation - System.out.print("Enter a string to insert: "); - String insertStr = scanner.nextLine(); - System.out.print("Enter the index to insert at: "); - int index = scanner.nextInt(); - sb.insert(index, insertStr); - System.out.println("Result: " + sb); + insertString(); break; case 3: - // Delete operation - System.out.print("Enter the starting index to delete: "); - int startIndex = scanner.nextInt(); - System.out.print("Enter the length to delete: "); - int length = scanner.nextInt(); - sb.delete(startIndex, startIndex + length); - System.out.println("Result: " + sb); + deleteString(); break; case 4: - // Replace operation - System.out.print("Enter the starting index to replace: "); - int replaceStartIndex = scanner.nextInt(); - System.out.print("Enter the length to replace: "); - int replaceLength = scanner.nextInt(); - scanner.nextLine(); // Consume the newline character - System.out.print("Enter the replacement string: "); - String replaceStr = scanner.nextLine(); - sb.replace(replaceStartIndex, replaceStartIndex + replaceLength, replaceStr); - System.out.println("Result: " + sb); + replaceString(); break; case 5: - // Reverse operation - sb.reverse(); - System.out.println("Result: " + sb); + reverseString(); break; case 6: - // Exit the program continueOperations = false; break; default: System.out.println("Invalid choice. Please try again."); } } + } - // Close the Scanner object - scanner.close(); + private void displayMenu() { + System.out.println("\nChoose an operation:"); + System.out.println("1. Append"); + System.out.println("2. Insert"); + System.out.println("3. Delete"); + System.out.println("4. Replace"); + System.out.println("5. Reverse"); + System.out.println("6. Exit"); + } + + private void appendString() { + System.out.print("Enter a string to append: "); + String appendStr = scanner.nextLine(); + sb.append(appendStr); + System.out.println("Result: " + sb); + } + + private void insertString() { + System.out.print("Enter a string to insert: "); + String insertStr = scanner.nextLine(); + System.out.print("Enter the index to insert at: "); + int index = scanner.nextInt(); + sb.insert(index, insertStr); + System.out.println("Result: " + sb); + } + + private void deleteString() { + System.out.print("Enter the starting index to delete: "); + int startIndex = scanner.nextInt(); + System.out.print("Enter the length to delete: "); + int length = scanner.nextInt(); + sb.delete(startIndex, startIndex + length); + System.out.println("Result: " + sb); + } + + private void replaceString() { + System.out.print("Enter the starting index to replace: "); + int replaceStartIndex = scanner.nextInt(); + System.out.print("Enter the length to replace: "); + int replaceLength = scanner.nextInt(); + scanner.nextLine(); // Consume the newline character + System.out.print("Enter the replacement string: "); + String replaceStr = scanner.nextLine(); + sb.replace(replaceStartIndex, replaceStartIndex + replaceLength, replaceStr); + System.out.println("Result: " + sb); + } + + private void reverseString() { + sb.reverse(); + System.out.println("Result: " + sb); + } +} + +public class Main { + public static void main(String[] args) { + StringOperations stringOperations = new StringOperations(); + stringOperations.performOperations(); } } From 7492a72665f98877865e7baa1d8786306e831833 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 13:11:09 +0800 Subject: [PATCH 045/183] Update StringBuilder.java --- .../week_4/StringBuilder/StringBuilder.java | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/XActivityCode/week_4/StringBuilder/StringBuilder.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java index e05d6e8..80d92c9 100644 --- a/XActivityCode/week_4/StringBuilder/StringBuilder.java +++ b/XActivityCode/week_4/StringBuilder/StringBuilder.java @@ -1,17 +1,14 @@ import java.util.Scanner; -class StringOperations { - private StringBuilder sb; - private Scanner scanner; +public class StringManipulator { + private static StringBuilder sb; + private static Scanner scanner = new Scanner(System.in); - public StringOperations() { - scanner = new Scanner(System.in); + public static void main(String[] args) { System.out.print("Enter a string: "); String input = scanner.nextLine(); sb = new StringBuilder(input); - } - public void performOperations() { boolean continueOperations = true; while (continueOperations) { @@ -44,7 +41,7 @@ public void performOperations() { } } - private void displayMenu() { + private static void displayMenu() { System.out.println("\nChoose an operation:"); System.out.println("1. Append"); System.out.println("2. Insert"); @@ -54,14 +51,14 @@ private void displayMenu() { System.out.println("6. Exit"); } - private void appendString() { + private static void appendString() { System.out.print("Enter a string to append: "); String appendStr = scanner.nextLine(); sb.append(appendStr); System.out.println("Result: " + sb); } - private void insertString() { + private static void insertString() { System.out.print("Enter a string to insert: "); String insertStr = scanner.nextLine(); System.out.print("Enter the index to insert at: "); @@ -70,7 +67,7 @@ private void insertString() { System.out.println("Result: " + sb); } - private void deleteString() { + private static void deleteString() { System.out.print("Enter the starting index to delete: "); int startIndex = scanner.nextInt(); System.out.print("Enter the length to delete: "); @@ -79,7 +76,7 @@ private void deleteString() { System.out.println("Result: " + sb); } - private void replaceString() { + private static void replaceString() { System.out.print("Enter the starting index to replace: "); int replaceStartIndex = scanner.nextInt(); System.out.print("Enter the length to replace: "); @@ -91,15 +88,8 @@ private void replaceString() { System.out.println("Result: " + sb); } - private void reverseString() { + private static void reverseString() { sb.reverse(); System.out.println("Result: " + sb); } } - -public class Main { - public static void main(String[] args) { - StringOperations stringOperations = new StringOperations(); - stringOperations.performOperations(); - } -} From ca5f5dd8e12ea74eba811013850882fed109e9f7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 20 Apr 2024 13:49:51 +0800 Subject: [PATCH 046/183] =?UTF-8?q?=F0=9F=93=93=20Update=20StringBuilder.j?= =?UTF-8?q?ava?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week_4/StringBuilder/StringBuilder.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/XActivityCode/week_4/StringBuilder/StringBuilder.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java index 80d92c9..8640c26 100644 --- a/XActivityCode/week_4/StringBuilder/StringBuilder.java +++ b/XActivityCode/week_4/StringBuilder/StringBuilder.java @@ -1,3 +1,5 @@ +package StringBuilder; + import java.util.Scanner; public class StringManipulator { @@ -40,8 +42,9 @@ public static void main(String[] args) { } } } - - private static void displayMenu() { + + private static void displayMenu() { + // This method display the menu of the operations to the user ^_^ System.out.println("\nChoose an operation:"); System.out.println("1. Append"); System.out.println("2. Insert"); @@ -52,6 +55,7 @@ private static void displayMenu() { } private static void appendString() { + // This method appends a string to the end to the end of the existing string ^_^ System.out.print("Enter a string to append: "); String appendStr = scanner.nextLine(); sb.append(appendStr); @@ -59,6 +63,7 @@ private static void appendString() { } private static void insertString() { + // This method insert a portion of the existing string ^_^ System.out.print("Enter a string to insert: "); String insertStr = scanner.nextLine(); System.out.print("Enter the index to insert at: "); @@ -68,6 +73,7 @@ private static void insertString() { } private static void deleteString() { + // This method delete a portion of the existing string ^_^ System.out.print("Enter the starting index to delete: "); int startIndex = scanner.nextInt(); System.out.print("Enter the length to delete: "); @@ -77,11 +83,12 @@ private static void deleteString() { } private static void replaceString() { + // This method replace a portion of the existing string ^_^ System.out.print("Enter the starting index to replace: "); int replaceStartIndex = scanner.nextInt(); System.out.print("Enter the length to replace: "); int replaceLength = scanner.nextInt(); - scanner.nextLine(); // Consume the newline character + scanner.nextLine(); System.out.print("Enter the replacement string: "); String replaceStr = scanner.nextLine(); sb.replace(replaceStartIndex, replaceStartIndex + replaceLength, replaceStr); @@ -89,6 +96,7 @@ private static void replaceString() { } private static void reverseString() { + // This method reverse a portion of the existing string ^_^ sb.reverse(); System.out.println("Result: " + sb); } From e63251c979e8328f0e9bfabb9b1a73abcc9f4fef Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 21 Apr 2024 12:32:54 +0000 Subject: [PATCH 047/183] Add Append --- week_4/StringBuilder/Append/App.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 week_4/StringBuilder/Append/App.java diff --git a/week_4/StringBuilder/Append/App.java b/week_4/StringBuilder/Append/App.java new file mode 100644 index 0000000..acb85db --- /dev/null +++ b/week_4/StringBuilder/Append/App.java @@ -0,0 +1,20 @@ +package Intermediate; + +public class StringBuilderAppend { + + public static void main(String[] args) { + // Create a StringBuilder with some text + StringBuilder myStr = new StringBuilder("My Email Address is "); + + // Append different data types using append() + myStr.append("MagicMan "); + myStr.append(2024); + myStr.append("@"); + myStr.append("Google.com"); + + // Print the StringBuilder + System.out.println(myStr.toString()); + + } + +} From f9354499f4d455878dac98ede712e3bc88a01dbd Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 21 Apr 2024 12:39:09 +0000 Subject: [PATCH 048/183] Add Insert StringBuilder --- week_4/StringBuilder/Insert/App.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 week_4/StringBuilder/Insert/App.java diff --git a/week_4/StringBuilder/Insert/App.java b/week_4/StringBuilder/Insert/App.java new file mode 100644 index 0000000..b6fe4e3 --- /dev/null +++ b/week_4/StringBuilder/Insert/App.java @@ -0,0 +1,14 @@ +package Intermediate; + +public class SBInsert { + + public static void main(String[] args) { + StringBuilder sb = new StringBuilder("Kamusta kabayan!"); + + sb.insert(8, "Mga Pogi at Gwapa kong "); + system.out.println(sb.toString()); + + + } + +} \ No newline at end of file From 5451f6e2c020ff853ca84698feda985d9f565ab4 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:36:39 +0800 Subject: [PATCH 049/183] Update README.md --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8dda3d4..e177355 100644 --- a/README.md +++ b/README.md @@ -167,8 +167,8 @@ To be follow ### Fixed - ✨ Revised my documentaion -## [4.1.1] - 2024-04-14      -### Added +## [4.1.1] - 2024-04-14       +### Added  - ✨ Added Exception-Handling Lab-1 Activity - ✨ Added File-Handling Lab-2 Activity @@ -179,6 +179,17 @@ To be follow ### Fixed - ✨ Fixed commit error changes +## [4.1.1] - 2024-04-20        +### Added +- ✨ Added StringBuilder.java for StringManipulation activity + +### Changed +- ✨ Change documentary +- ✨ Change some variable and refix function in both Lab Activity + +### Fixed +- ✨ Fixed commit error changes + #### [Back to Table of Content](#introduction)     From fa6af82b6553d2efd87740cbd27ca34791e8403a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:41:24 +0800 Subject: [PATCH 050/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e177355..7b44248 100644 --- a/README.md +++ b/README.md @@ -156,36 +156,36 @@ To be follow ``` # 📫 Changelogs      -## [4.1.1] - 2024-04-6      -### Added +## [4.1.4] - 2024-04-6       +### Added  - ✨ Uploaded the Course Syllabus - ✨ Added breakdown and documentation ### Changed - ✨ revised icon -### Fixed +### Fixed  - ✨ Revised my documentaion -## [4.1.1] - 2024-04-14       -### Added  +## [4.1.5] - 2024-04-14        +### Added   - ✨ Added Exception-Handling Lab-1 Activity - ✨ Added File-Handling Lab-2 Activity ### Changed -- ✨ Change documentary +- ✨ Change documentation - ✨ Change some variable and refix function in both Lab Activity ### Fixed - ✨ Fixed commit error changes -## [4.1.1] - 2024-04-20        +## [4.1.4] - 2024-04-20         ### Added - ✨ Added StringBuilder.java for StringManipulation activity ### Changed -- ✨ Change documentary -- ✨ Change some variable and refix function in both Lab Activity +- ✨ Changed documentatation +- ✨ Changed some variable and refix function in both Lab Activity ### Fixed - ✨ Fixed commit error changes From 451e562a1d7be373f8e0fd71ca82357e711e93b6 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 23:59:48 +0800 Subject: [PATCH 051/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7b44248..22568bb 100644 --- a/README.md +++ b/README.md @@ -185,7 +185,6 @@ To be follow ### Changed - ✨ Changed documentatation -- ✨ Changed some variable and refix function in both Lab Activity ### Fixed - ✨ Fixed commit error changes From 77471a93e1df4a54d5447d5dc7778c233370f357 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:10:42 +0000 Subject: [PATCH 052/183] =?UTF-8?q?=F0=9F=93=93=20Added=20RegularExpressio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/RegularExpression/Find/App.java | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 week_4/RegularExpression/Find/App.java diff --git a/week_4/RegularExpression/Find/App.java b/week_4/RegularExpression/Find/App.java new file mode 100644 index 0000000..d317174 --- /dev/null +++ b/week_4/RegularExpression/Find/App.java @@ -0,0 +1,28 @@ +import java.util.regex.Pattern; +import java.util.Scanner; +import java.util.regex.Matcher; + +public class App { + public static void main(String[] args) { + + Scanner scan = new Scanner(System.in); + + while (true) { + System.out.println("Enter text:"); + + Pattern pattern = Pattern.compile("java"); + Matcher matcher = pattern.matcher(scan.nextLine()); + + boolean found = false; + + while (matcher.find()) { + System.out.println("I found the text " + matcher.group() + " starting at index " + + matcher.start() + " and ending at index " + matcher.end()); + found = true; + } + if (!found) { + System.out.println("No match found."); + } + } + } +} \ No newline at end of file From b85539a9a3e0e9364b19dcfe4352430cb8e892d5 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:13:58 +0000 Subject: [PATCH 053/183] =?UTF-8?q?=F0=9F=93=93=20Added=20RegularExpressio?= =?UTF-8?q?n=20for=20Match?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/RegularExpression/Match/App.java | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 week_4/RegularExpression/Match/App.java diff --git a/week_4/RegularExpression/Match/App.java b/week_4/RegularExpression/Match/App.java new file mode 100644 index 0000000..f5ae2a1 --- /dev/null +++ b/week_4/RegularExpression/Match/App.java @@ -0,0 +1,43 @@ +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.Scanner; + +public class App { + public static void main(String[] args) { + + // Java program to check if a student number is valid + Scanner scan = new Scanner(System.in); + System.out.print("Enter student number: "); + String studentNum = scan.nextLine(); + + // Long method + Pattern pattern = Pattern.compile("\\d{4}-\\d{6}"); + Matcher matcher = pattern.matcher(studentNum); + + boolean match = matcher.matches(); + + if (match) { + System.out.println("valid student number"); + } else { + System.out.println("invalid student number"); + } + + // Short method + match = Pattern.compile("\\d{4}-\\d{6}").matcher(studentNum).matches(); + + if (match) { + System.out.println("valid student number"); + } else { + System.out.println("invalid student number"); + } + + // Even shorter method + match = Pattern.matches("\\d{4}-\\d{6}", studentNum); + + if (match) { + System.out.println("valid student number"); + } else { + System.out.println("invalid student number"); + } + } +} From bc054fe83ec4430222cbcceaf56d5c7c49e51742 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:15:41 +0000 Subject: [PATCH 054/183] =?UTF-8?q?=F0=9F=93=93=20Update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/RegularExpression/Find/App.java | 2 ++ week_4/RegularExpression/Match/App.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/week_4/RegularExpression/Find/App.java b/week_4/RegularExpression/Find/App.java index d317174..976714c 100644 --- a/week_4/RegularExpression/Find/App.java +++ b/week_4/RegularExpression/Find/App.java @@ -1,3 +1,5 @@ +package Intermediate + import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; diff --git a/week_4/RegularExpression/Match/App.java b/week_4/RegularExpression/Match/App.java index f5ae2a1..39733ea 100644 --- a/week_4/RegularExpression/Match/App.java +++ b/week_4/RegularExpression/Match/App.java @@ -1,3 +1,5 @@ +package Intermediate + import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.Scanner; From 16aa76c73d8542b065f202ab7714ea994205bf83 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:01:59 +0000 Subject: [PATCH 055/183] =?UTF-8?q?=F0=9F=93=93=20RegexPattern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/RegexPattern/Password/App.java | 28 ++++++++++++++++++++++++++ week_4/RegularExpression/Find/App.java | 2 -- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 week_4/RegexPattern/Password/App.java diff --git a/week_4/RegexPattern/Password/App.java b/week_4/RegexPattern/Password/App.java new file mode 100644 index 0000000..b808431 --- /dev/null +++ b/week_4/RegexPattern/Password/App.java @@ -0,0 +1,28 @@ +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.Scanner; + +public class App { + public static void main(String[] args) { + + // At least one letter + // At least one number + // At least 8 chars + + // Java program to check if a password is valid + Scanner scan = new Scanner(System.in); + System.out.print("Enter password: "); + String password = scan.nextLine(); + + Pattern pattern = Pattern.compile("^(?=.*[A-Za-z])(?=.*\\d).{8,}$"); + Matcher matcher = pattern.matcher(password); + + boolean match = matcher.matches(); + + if (match) { + System.out.println("valid password "); + } else { + System.out.println("invalid password "); + } + } +} diff --git a/week_4/RegularExpression/Find/App.java b/week_4/RegularExpression/Find/App.java index 976714c..d317174 100644 --- a/week_4/RegularExpression/Find/App.java +++ b/week_4/RegularExpression/Find/App.java @@ -1,5 +1,3 @@ -package Intermediate - import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; From eae95b98472bd650d771e92b60c91a244415e9b1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:08:56 +0000 Subject: [PATCH 056/183] =?UTF-8?q?=F0=9F=93=93=20Added=20SBReplace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/StringBuilder/Replace/SBReplace.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 week_4/StringBuilder/Replace/SBReplace.java diff --git a/week_4/StringBuilder/Replace/SBReplace.java b/week_4/StringBuilder/Replace/SBReplace.java new file mode 100644 index 0000000..8e959c7 --- /dev/null +++ b/week_4/StringBuilder/Replace/SBReplace.java @@ -0,0 +1,14 @@ +package Intermediate; + +public class SBReplace { + + public static void main(String[] args) { + StringBuilder sb = new StringBuilder("This is my favorite"); + + // Replace "is" with "at" (starting at index 2, length 2) + sb.replace(2, 4, "at"); + + System.out.prntln(sb.toString()); + } + +} From 20860d1468787d08237e3da47e426844e7edb2c7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:13:49 +0000 Subject: [PATCH 057/183] =?UTF-8?q?=F0=9F=93=93=20Added=20Delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/StringBuilder/Delete/SBDelete.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 week_4/StringBuilder/Delete/SBDelete.java diff --git a/week_4/StringBuilder/Delete/SBDelete.java b/week_4/StringBuilder/Delete/SBDelete.java new file mode 100644 index 0000000..32d824b --- /dev/null +++ b/week_4/StringBuilder/Delete/SBDelete.java @@ -0,0 +1,14 @@ +package Intermediate; + +public class SBDelete { + + public static void main(String[] args) { + StringBuilder sb = new StringBuilder("This is a deleted text"); + + // Remove "deleted" (starting at index 9, length 8) + sb.delete(9, 17); + + System.out.println(sb.toString()); // Output: This is a test + } + +} From ab6b1270f5d9131a37fd987cc57d0e86ea7c9757 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:18:40 +0000 Subject: [PATCH 058/183] =?UTF-8?q?=F0=9F=93=93=20Added=20Reverse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_4/StringBuilder/Reverse/SBReverse.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 week_4/StringBuilder/Reverse/SBReverse.java diff --git a/week_4/StringBuilder/Reverse/SBReverse.java b/week_4/StringBuilder/Reverse/SBReverse.java new file mode 100644 index 0000000..e7275b0 --- /dev/null +++ b/week_4/StringBuilder/Reverse/SBReverse.java @@ -0,0 +1,15 @@ +package Intermediate; + +public class SBReverse { + + public static void main(String[] args) { + StringBuilder sb = new StringBuilder("Programmer Ako"); + + // Reverse the characters in the StringBuilder + sb.reverse(); + + System.out.println(sb.toString()); + + } + +} From 5121879b17b53af369e3efea4063d9d32d00346a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:20:52 +0800 Subject: [PATCH 059/183] Delete XActivityCode/week_4/StringBuilder directory --- .../week_4/StringBuilder/StringBuilder.java | 103 ------------------ 1 file changed, 103 deletions(-) delete mode 100644 XActivityCode/week_4/StringBuilder/StringBuilder.java diff --git a/XActivityCode/week_4/StringBuilder/StringBuilder.java b/XActivityCode/week_4/StringBuilder/StringBuilder.java deleted file mode 100644 index 8640c26..0000000 --- a/XActivityCode/week_4/StringBuilder/StringBuilder.java +++ /dev/null @@ -1,103 +0,0 @@ -package StringBuilder; - -import java.util.Scanner; - -public class StringManipulator { - private static StringBuilder sb; - private static Scanner scanner = new Scanner(System.in); - - public static void main(String[] args) { - System.out.print("Enter a string: "); - String input = scanner.nextLine(); - sb = new StringBuilder(input); - - boolean continueOperations = true; - - while (continueOperations) { - displayMenu(); - int choice = scanner.nextInt(); - scanner.nextLine(); // Consume the newline character - - switch (choice) { - case 1: - appendString(); - break; - case 2: - insertString(); - break; - case 3: - deleteString(); - break; - case 4: - replaceString(); - break; - case 5: - reverseString(); - break; - case 6: - continueOperations = false; - break; - default: - System.out.println("Invalid choice. Please try again."); - } - } - } - - private static void displayMenu() { - // This method display the menu of the operations to the user ^_^ - System.out.println("\nChoose an operation:"); - System.out.println("1. Append"); - System.out.println("2. Insert"); - System.out.println("3. Delete"); - System.out.println("4. Replace"); - System.out.println("5. Reverse"); - System.out.println("6. Exit"); - } - - private static void appendString() { - // This method appends a string to the end to the end of the existing string ^_^ - System.out.print("Enter a string to append: "); - String appendStr = scanner.nextLine(); - sb.append(appendStr); - System.out.println("Result: " + sb); - } - - private static void insertString() { - // This method insert a portion of the existing string ^_^ - System.out.print("Enter a string to insert: "); - String insertStr = scanner.nextLine(); - System.out.print("Enter the index to insert at: "); - int index = scanner.nextInt(); - sb.insert(index, insertStr); - System.out.println("Result: " + sb); - } - - private static void deleteString() { - // This method delete a portion of the existing string ^_^ - System.out.print("Enter the starting index to delete: "); - int startIndex = scanner.nextInt(); - System.out.print("Enter the length to delete: "); - int length = scanner.nextInt(); - sb.delete(startIndex, startIndex + length); - System.out.println("Result: " + sb); - } - - private static void replaceString() { - // This method replace a portion of the existing string ^_^ - System.out.print("Enter the starting index to replace: "); - int replaceStartIndex = scanner.nextInt(); - System.out.print("Enter the length to replace: "); - int replaceLength = scanner.nextInt(); - scanner.nextLine(); - System.out.print("Enter the replacement string: "); - String replaceStr = scanner.nextLine(); - sb.replace(replaceStartIndex, replaceStartIndex + replaceLength, replaceStr); - System.out.println("Result: " + sb); - } - - private static void reverseString() { - // This method reverse a portion of the existing string ^_^ - sb.reverse(); - System.out.println("Result: " + sb); - } -} From 1ded1f09981f5d470b6745c0029a120f6d59edb5 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:23:06 +0800 Subject: [PATCH 060/183] =?UTF-8?q?=F0=9F=93=93=20Added=20StringBuilder=20?= =?UTF-8?q?Java=20File?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bin/StringBuilder/StringManipulator.class | Bin 0 -> 3742 bytes .../src/StringBuilder/StringManipulator.java | 103 ++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 XActivityCode/week_4/bin/StringBuilder/StringManipulator.class create mode 100644 XActivityCode/week_4/src/StringBuilder/StringManipulator.java diff --git a/XActivityCode/week_4/bin/StringBuilder/StringManipulator.class b/XActivityCode/week_4/bin/StringBuilder/StringManipulator.class new file mode 100644 index 0000000000000000000000000000000000000000..b66a198c6786529b603eeb314b3c5564fbb0c804 GIT binary patch literal 3742 zcmb7G3wIO88NKTVT8Rw;6U@st8;6JNU^y5=02v4v6V%v1ED9wLlC?C*i`TpA?#jVU z+q6wn()YVflfGYW(`QU-e3Ene1NxJC`nof_mSjuGIn_D4qnY{U`|fwYJG1kT|GfWq z0H^V{1llz0D}=u7md{shrzHI0s5fP~cBSfAq30*ip<(MCYrz_JEVn#-W#*13h8o&} z84bH9>l5qzcHJ?ktzzzf5*r{RDSR8X# zrlsw`^(2^=fdq67=}Fram#gzL!oOzCI6_0$q*t_@>y~fJz8XxS9lg?hiaCU{cA(*r z$#rZrv&#HC<}C@iJM&xmcSsnS5%UahD8PrV@N}1Mf#!Rmo-1Yr53&>6VE{`aEUo_^gJ$h?sCzn6_IIcO^5CfoX*i zIiEA|d3=H7MB^H=nS68P=FHaE>Ea%EnZTmu#IE$lSUT=$*k1?0Tzv|yTt^b^7zy>u z8hYxMj&RH2ti-xzA*=XR17E|}2{ani(3{EUKMGfy#FbKE^D=oZjXdl4j)nvEc+JS- zEi0jYkAdo@b!ZJHKUha}JTWiau;H*A!J7ttgtsW6*g(TD6ZrqAZkH)-iyagsp>bww zhs>m+j%n9ye97I<4g3PXRI$|-(y+J1AzLqLhoY|FRsEv4Xv>dMccjXOuXa`*COiht zdtMlXzEznL;jC8*QurO-N#OS^e*L(y-34z>#2=|>3tY5{{Pr)(z3~SPZ#HhH*gA4} z$#P4M2=-5U-dwekYbLB=WZlARixttryzz)^v2SA+`>&=o3Nzg&s6xd2&xWu zjmFPIUS2!K9V-Y#kiff?Q&X<3&?j)8TKQ;G$}~z9k8o?X^ZaN-N`BG!FD35`Y?FK^ z+2f~;y{xhVwtN8N<}$WCz{B^k>s_^S58s<;2d>;Xpa<9NsEC6rfjLe1pP zLLwt_%ImzcNpNUnRT|#CR=axb^61KL} z_huRT@(Ql@y!GF=CH{8ElxMJu?-Xg;%v+AZu`TGqR%Wmb{k+W$U_0*}JManY#B;R0 zMGK4Bme7kbGrhws=b2{(k0Rg|X#oeR(?fWLD_^6Zd%WLBItQctQNT6!(pbdDah*B! zz`+fAZ=?OQxXGuTaX{je|Hi%qp4a|`6I!SIb^Md1Ny&=}*U55Lxk~;{%G7Q#HQBxt zw=;2Dird?9I~%um*w)L~uhjB5-$w{~goz$yVx!357}GzF6L_Mgij=(h#1M*vD+@Cq zLp!y?KD~_NgDY@vaF~Br;lEF2ur6dbr3&O2a*TYOCckGG?rcp-X)^sOawMz68&w?e zbq17KtDIkH4A|fGnYC_ij6wGjz^jb_UfTemk8}d#1aN@>CJ5jn3;Gm`cZvDt6_9QQ zOS5=iR6zPT_Bu<%V^iMcVo3K`S_vs9IrvfygX+Ff>qjrLA^&%@<^DLpuSy0p+J4N)+H#p4<(?k z@2`z!r(&pwSMb9|tZ#3?I>>0CdUfhIP3`U^iax6M0PjIVc!Bb{g(vYM(Z8f{n?#f* z;XjUXkK!i^_b6BWlmyG;i}&3)gL4W$u$yRB@UuoBzuEv~i!v>-o`TA~t%AvlwBy%& ex8XPVEnAa<`y-wI=|kUtp_L5(S1jW_?EW9YF@UE4 literal 0 HcmV?d00001 diff --git a/XActivityCode/week_4/src/StringBuilder/StringManipulator.java b/XActivityCode/week_4/src/StringBuilder/StringManipulator.java new file mode 100644 index 0000000..51fd749 --- /dev/null +++ b/XActivityCode/week_4/src/StringBuilder/StringManipulator.java @@ -0,0 +1,103 @@ +package StringBuilder; + +import java.util.Scanner; + +public class StringManipulator { + private static StringBuilder sb; + private static Scanner scanner = new Scanner(System.in); + + public static void main(String[] args) { + System.out.print("Enter a string: "); + String input = scanner.nextLine(); + sb = new StringBuilder(input); + + boolean continueOperations = true; + + while (continueOperations) { + displayMenu(); + int choice = scanner.nextInt(); + scanner.nextLine(); // Consume the newline character + + switch (choice) { + case 1: + appendString(); + break; + case 2: + insertString(); + break; + case 3: + deleteString(); + break; + case 4: + replaceString(); + break; + case 5: + reverseString(); + break; + case 6: + continueOperations = false; + break; + default: + System.out.println("Invalid choice. Please try again."); + } + } + } + + private static void displayMenu() { + // This method display the menu of the operations to the user ^_^ + System.out.println("\nChoose an operation:"); + System.out.println("1. Append"); + System.out.println("2. Insert"); + System.out.println("3. Delete"); + System.out.println("4. Replace"); + System.out.println("5. Reverse"); + System.out.println("6. Exit"); + } + + private static void appendString() { + // This method appends a string to the end to the end of the existing string ^_^ + System.out.print("Enter a string to append: "); + String appendStr = scanner.nextLine(); + sb.append(appendStr); + System.out.println("Result: " + sb); + } + + private static void insertString() { + // This method insert a portion of the existing string ^_^ + System.out.print("Enter a string to insert: "); + String insertStr = scanner.nextLine(); + System.out.print("Enter the index to insert at: "); + int index = scanner.nextInt(); + sb.insert(index, insertStr); + System.out.println("Result: " + sb); + } + + private static void deleteString() { + // This method delete a portion of the existing string ^_^ + System.out.print("Enter the starting index to delete: "); + int startIndex = scanner.nextInt(); + System.out.print("Enter the length to delete: "); + int length = scanner.nextInt(); + sb.delete(startIndex, startIndex + length); + System.out.println("Result: " + sb); + } + + private static void replaceString() { + // This method replace a portion of the existing string ^_^ + System.out.print("Enter the starting index to replace: "); + int replaceStartIndex = scanner.nextInt(); + System.out.print("Enter the length to replace: "); + int replaceLength = scanner.nextInt(); + scanner.nextLine(); + System.out.print("Enter the replacement string: "); + String replaceStr = scanner.nextLine(); + sb.replace(replaceStartIndex, replaceStartIndex + replaceLength, replaceStr); + System.out.println("Result: " + sb); + } + + private static void reverseString() { + // This method reverse a portion of the existing string ^_^ + sb.reverse(); + System.out.println("Result: " + sb); + } +} \ No newline at end of file From 53b8b589eedc8fa4b37f2839f68ca4a528f64344 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:28:37 +0800 Subject: [PATCH 061/183] =?UTF-8?q?=F0=9F=92=AC=20Create=20Instruction.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XActivityCode/week_3/Instruction.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 XActivityCode/week_3/Instruction.txt diff --git a/XActivityCode/week_3/Instruction.txt b/XActivityCode/week_3/Instruction.txt new file mode 100644 index 0000000..6d9b8b2 --- /dev/null +++ b/XActivityCode/week_3/Instruction.txt @@ -0,0 +1,19 @@ +# Lab Activity 1 - Exception Handling + +## Instructions +Create a java Program use the exception handling to Compile and run the Test Exceptions +program. The program will ask the user to input the array index to validate the exception handling in Array Exception, The output should look like this: + +array value of: One, Two, Three + +Enter Array Index: 1 +Output: +Array Element = Two +Exception: Caught + +Enter Array Index: 6 +Output: +Index 6 out of bounds for length 3 + +Quitting... + From 9c2b23085a60b0b62929b0897ac1f2016c0844b0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:33:22 +0800 Subject: [PATCH 062/183] =?UTF-8?q?=F0=9F=92=AC=20Create=20Instruction.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XActivityCode/week_4/Instruction.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 XActivityCode/week_4/Instruction.txt diff --git a/XActivityCode/week_4/Instruction.txt b/XActivityCode/week_4/Instruction.txt new file mode 100644 index 0000000..2ffe195 --- /dev/null +++ b/XActivityCode/week_4/Instruction.txt @@ -0,0 +1,24 @@ +# Lab Activity 3 - String Handling and Manipulation + +## Instructions +Create a program in JAVA using the StringBuilder class that the user has a choice to use the different methods in class in StringBuilder where the program can Append, Insert, Delete, Replace and Reverse the input string by the user. + +Program Requirements: +Append +The user will enter any string +The program will ask the user what string to append. +Insert + - The user will enter any string + - The program will ask the user which index part of the input string is to insert the new inputted string + +Delete + - The user will enter any string + - The program will ask the user which starting index you want to start the delete methods and how many length of string you want to delete + +Replace + - The user will enter any string + - The program will ask the user which starting index you want to start the replace methods and how many length of string you want to replace + +Reverse + - The user will enter any string + - The program will reverse the input string From 26fac3834a1d138d21da74b22aaacbcc9f29ab02 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 25 Apr 2024 22:26:59 +0800 Subject: [PATCH 063/183] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 22568bb..031926a 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,9 @@ To be follow ### Fixed - ✨ Fixed commit error changes +### +- ✨ Quiz + #### [Back to Table of Content](#introduction)     From b465a3898f021621d79da117511c071f68229a14 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:11:32 +0000 Subject: [PATCH 064/183] =?UTF-8?q?=F0=9F=93=93=20Add=20introduction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_1/introduction/intro.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 week_1/introduction/intro.txt diff --git a/week_1/introduction/intro.txt b/week_1/introduction/intro.txt new file mode 100644 index 0000000..ca746be --- /dev/null +++ b/week_1/introduction/intro.txt @@ -0,0 +1,12 @@ +## [Introduction](#introduction) +This repository contains source code for a Java project that focuses on Intermediate concepts, codes and exercises. + +#### Course Description: +This course is a continuation of CCPRGG1L - Fundamentals of Programming. The course covers advanced topics in Java to train students in developing robust programs. Topics to be covered include recursion, regular expression, basic object-oriented principles, graphics, and multithreaded programming. + +#### Course outcomes: +At the end of the course, the studend must be able to: +1. Create a program that uses recursions and regular expressions +2. Implement Object-Oriented in program design +3. Create and document application that uses a modern graphical user interface (GUI) + From 080ee4cf1290e556d5b721a882820dc440f3f772 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:22:29 +0000 Subject: [PATCH 065/183] =?UTF-8?q?=F0=9F=93=93=20Added=20sample=20program?= =?UTF-8?q?=20for=20recursion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_5/add_one_to_ten/App.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 week_5/add_one_to_ten/App.java diff --git a/week_5/add_one_to_ten/App.java b/week_5/add_one_to_ten/App.java new file mode 100644 index 0000000..846bc72 --- /dev/null +++ b/week_5/add_one_to_ten/App.java @@ -0,0 +1,20 @@ +public class App { + public static void main(String[] args) { + int result = sum(10); + System.out.println(result); + } + + public static int sum(int k) { + if (k > 0) { + + System.out.print(k + " + sum(" + (k - 1) + ")"); + System.out.println(""); + + // Recursion + return k + sum(k - 1); + + } else { + return 0; + } + } +} \ No newline at end of file From e8ceaa0e0497833db657a428ec22e0953a512c78 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 27 Apr 2024 01:03:11 +0000 Subject: [PATCH 066/183] =?UTF-8?q?=F0=9F=93=93=20Added=20Sample=20of=20Re?= =?UTF-8?q?cursion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_5/reverse_string/App.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 week_5/reverse_string/App.java diff --git a/week_5/reverse_string/App.java b/week_5/reverse_string/App.java new file mode 100644 index 0000000..11127d8 --- /dev/null +++ b/week_5/reverse_string/App.java @@ -0,0 +1,18 @@ +public class App { + public static void main(String[] args) throws Exception { + + String input = "JAYARRE"; + System.out.print(reverseString(input)); + } + + static String reverseString(String inpuString) { + + // Define the base case/stopping condition + if (inpuString.equals("")) { + return ""; + } + + // Everytime the function calls itself, do something to reach the goal + return reverseString(inpuString.substring(1)) + inpuString.charAt(0); + } +} \ No newline at end of file From 9b0912e8879d0960929acddfe14f5a869d4ff581 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 28 Apr 2024 15:46:28 +0000 Subject: [PATCH 067/183] =?UTF-8?q?=F0=9F=93=93=20Added=20recursive=5Ffact?= =?UTF-8?q?orial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_5/recursive_factorial/App.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 week_5/recursive_factorial/App.java diff --git a/week_5/recursive_factorial/App.java b/week_5/recursive_factorial/App.java new file mode 100644 index 0000000..44fd54f --- /dev/null +++ b/week_5/recursive_factorial/App.java @@ -0,0 +1,15 @@ +public class RecursiveFactorial { + public static int factorial(int n) { + if (n == 0) { + return 1; + } else { + return n * factorial(n - 1); + } + } + + public static void main(String[] args) { + int number = 5; + int result = factorial(number); + System.out.println("The factorial of " + number + " is: " + result); + } +} \ No newline at end of file From 1b05778033d3245cbdf47c495dc44d75bb033875 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 28 Apr 2024 15:49:54 +0000 Subject: [PATCH 068/183] =?UTF-8?q?=F0=9F=93=93=20Added=20recursive=5Ffibo?= =?UTF-8?q?nacci?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_5/recursive_fibonacci/App.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 week_5/recursive_fibonacci/App.java diff --git a/week_5/recursive_fibonacci/App.java b/week_5/recursive_fibonacci/App.java new file mode 100644 index 0000000..5c30e87 --- /dev/null +++ b/week_5/recursive_fibonacci/App.java @@ -0,0 +1,15 @@ +public class RecursiveFibonacci { + public static int fibonacci(int n) { + if (n <= 1) { + return n; + } else { + return fibonacci(n - 1) + fibonacci(n - 2); + } + } + + public static void main(String[] args) { + int number = 6; + int result = fibonacci(number); + System.out.println("The Fibonacci number at position " + number + " is: " + result); + } +} From c40adcb63b136a0ea083a2a8576c35def0ada6e2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:07:37 +0800 Subject: [PATCH 069/183] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 031926a..61c613f 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,8 @@ To be follow ### Fixed - ✨ Fixed commit error changes +- Fixed Systax error +- Fixed build structure ### - ✨ Quiz From af502fe918a66ce0d8ff1047b72eb7719495af1b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 1 May 2024 20:02:24 +0800 Subject: [PATCH 070/183] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 61c613f..138c640 100644 --- a/README.md +++ b/README.md @@ -179,8 +179,8 @@ To be follow ### Fixed - ✨ Fixed commit error changes -## [4.1.4] - 2024-04-20         -### Added +## [4.1.4] - 2024-04-20          +### Added  - ✨ Added StringBuilder.java for StringManipulation activity ### Changed @@ -191,6 +191,10 @@ To be follow - Fixed Systax error - Fixed build structure +## [4.1.4] - 2024-05-04  +- ✨ Coming Soon +- ✨ +- ✨ ### - ✨ Quiz From f05ede4272fa43cb8aefbf4eb8d10801107746b2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 1 May 2024 20:03:09 +0800 Subject: [PATCH 071/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 138c640..9fcd489 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ At the end of the course, the studend must be able to: |----------|---------------|------------------------------------------------------|-----------------------------------------------------------------------------------------------------| | 1 | April 6 | Class Orientation | Course Syllabus | | | | - Ø University Mission & Vision | | -| | | - Ø College Mission & Vision | |  +| | | - Ø College Mission & Vision | |   | | | - Ø Course Syllabi | |  | | | - Ø Lab Guidelines and Safety Review | | | 2 | April 6 | Arrays | Chapter 8&9 Java Programming Eight Edition, Farrell, Joyce | @@ -192,9 +192,9 @@ To be follow - Fixed build structure ## [4.1.4] - 2024-05-04  +- ✨ Coming Soon  +- ✨ Coming Soon - ✨ Coming Soon -- ✨ -- ✨ ### - ✨ Quiz From 8edec4f60dc6b9693a7e1f75eb2bde3b2779bdb2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 4 May 2024 16:09:06 +0800 Subject: [PATCH 072/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9fcd489..8e56a04 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,7 @@ To be follow - ✨ Coming Soon ### - ✨ Quiz +- 💻 #### [Back to Table of Content](#introduction)     From 68bfeb84434ef6814ffc75befa83cf5c503a66eb Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 5 May 2024 23:07:09 +0800 Subject: [PATCH 073/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8e56a04..67351e4 100644 --- a/README.md +++ b/README.md @@ -192,12 +192,12 @@ To be follow - Fixed build structure ## [4.1.4] - 2024-05-04  +- ✨ Discussion regarding recursion - ✨ Coming Soon  - ✨ Coming Soon -- ✨ Coming Soon ### -- ✨ Quiz -- 💻 +- ✨ 45 Minutes  +- 💻 Long Quiz  #### [Back to Table of Content](#introduction)     From 87c1fbae4fd22899d131b3d127b91e65a84b0587 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 8 May 2024 23:54:20 +0800 Subject: [PATCH 074/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 67351e4..c37c3bf 100644 --- a/README.md +++ b/README.md @@ -188,16 +188,28 @@ To be follow ### Fixed - ✨ Fixed commit error changes -- Fixed Systax error -- Fixed build structure +- ✨ Fixed Systax error +- ✨ Fixed build structure ## [4.1.4] - 2024-05-04  - ✨ Discussion regarding recursion - ✨ Coming Soon  - ✨ Coming Soon ### -- ✨ 45 Minutes  -- 💻 Long Quiz  +- 💻 45 Minutes  +- 💻 Long Quiz + +## [4.1.5] - 2024-05-11          +### Added  +- ✨ Discussion material for Regular Expression (RegEx) + +### Changed +- ✨ Changed documentatation + +### Fixed +- ✨ Coming Soon +- ✨ Coming Soon +- ✨ Coming Soon #### [Back to Table of Content](#introduction)     From 0467c8aa6a66535c5a71295155d1c05993247d50 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 9 May 2024 09:17:06 +0000 Subject: [PATCH 075/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Polymorphism=5F1?= =?UTF-8?q?=20example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 5 +++++ week_8/example/Polymorphism_1/App.java | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 week_8/example/Polymorphism_1/App.java diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b242572 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "githubPullRequests.ignoredPullRequestBranches": [ + "main" + ] +} \ No newline at end of file diff --git a/week_8/example/Polymorphism_1/App.java b/week_8/example/Polymorphism_1/App.java new file mode 100644 index 0000000..5b5a88f --- /dev/null +++ b/week_8/example/Polymorphism_1/App.java @@ -0,0 +1,17 @@ +class Animal { + public void animalSound() { + System.out.println("The animal makes a sound"); + } +} + +class Pig extends Animal { + public void animalSound() { + System.out.println("The pig says: wee wee"); + } +} + +class Dog extends Animal { + public void animalSound() { + System.out.println("The dog says: bow wow"); + } +} \ No newline at end of file From e447da813136336933fc7e5d8ad12b928d92709b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 9 May 2024 09:18:35 +0000 Subject: [PATCH 076/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Polymorphism=5F2?= =?UTF-8?q?=20example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/example/Polymorphism_2/App.java | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 week_8/example/Polymorphism_2/App.java diff --git a/week_8/example/Polymorphism_2/App.java b/week_8/example/Polymorphism_2/App.java new file mode 100644 index 0000000..6001193 --- /dev/null +++ b/week_8/example/Polymorphism_2/App.java @@ -0,0 +1,28 @@ +class Animal { + public void animalSound() { + System.out.println("The animal makes a sound"); + } + } + + class Pig extends Animal { + public void animalSound() { + System.out.println("The pig says: wee wee"); + } + } + + class Dog extends Animal { + public void animalSound() { + System.out.println("The dog says: bow wow"); + } + } + + class Main { + public static void main(String[] args) { + Animal myAnimal = new Animal(); // Create a Animal object + Animal myPig = new Pig(); // Create a Pig object + Animal myDog = new Dog(); // Create a Dog object + myAnimal.animalSound(); + myPig.animalSound(); + myDog.animalSound(); + } + } \ No newline at end of file From e1fdcd95dea0912eea48d62efac925a85e2eab28 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 9 May 2024 09:20:44 +0000 Subject: [PATCH 077/183] =?UTF-8?q?=F0=9F=93=93=20Add=20explanation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Explanation.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 week_8/Explanation.txt diff --git a/week_8/Explanation.txt b/week_8/Explanation.txt new file mode 100644 index 0000000..4fd834d --- /dev/null +++ b/week_8/Explanation.txt @@ -0,0 +1,19 @@ +Java Polymorphism - Explained with Examples +Unlock the versatility of Java polymorphism with practical examples. Master dynamic code behavior, enhancing your object-oriented programming skills seamlessly. + +Java Polymorphism +Polymorphism means "many forms", and it occurs when we have many classes that are related to each other by inheritance. + +Polymorphism uses those methods to perform different tasks. This allows us to perform a single action in different ways. + +For example, think of a superclass called Animal that has a method called animalSound(). Subclasses of Animals could be Pigs, Cats, Dogs, Birds - And they also have their own implementation of an animal sound (the pig oinks, and the cat meows, etc.): + +## See the code in Polymorphism_1 + +Now we can create Pig and Dog objects and call the animalSound() method on both of them: + +## See the code in Polymorphism_2 + +Why And When To Use "Inheritance" and "Polymorphism"? + +- It is useful for code reusability: reuse attributes and methods of an existing class when you create a new class. \ No newline at end of file From 2822f7291a7be2fcac9c425e306925e27a4cbe4f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 16:13:31 +0800 Subject: [PATCH 078/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c37c3bf..8f494f5 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,6 @@ To be follow ### Fixed - ✨ Coming Soon - ✨ Coming Soon -- ✨ Coming Soon #### [Back to Table of Content](#introduction)     From e2b05e24d43f4770dae6f4736dfea05849d03df1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 15:48:28 +0000 Subject: [PATCH 079/183] =?UTF-8?q?=F0=9F=93=93=20Added=20class=5Fwith=5Fc?= =?UTF-8?q?onstructor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/class_with_constructor/App.java | 19 +++++++++++++ week_6/class_with_constructor/Character.java | 20 ++++++++++++++ week_6/standard_class/App.java | 28 ++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 week_6/class_with_constructor/App.java create mode 100644 week_6/class_with_constructor/Character.java create mode 100644 week_6/standard_class/App.java diff --git a/week_6/class_with_constructor/App.java b/week_6/class_with_constructor/App.java new file mode 100644 index 0000000..4e3b9d4 --- /dev/null +++ b/week_6/class_with_constructor/App.java @@ -0,0 +1,19 @@ +public class App { + public static void main(String[] args) { + + // Creates a new object named "Knight" from Character class + Character knight = new Character(10, 5, 0, "Chen"); + // Calls the sayMyName method + knight.sayMyName(); + + // Creates a new object named "mage" from Character class + Character mage = new Character(0, 5, 10, "Akasha"); + // Calls the sayMyName method + mage.sayMyName(); + + // Creates a new object named "mage" from Character class + Character thief = new Character(5, 10, 0, "Gondar"); + // Calls the sayMyName method + thief.sayMyName(); + } +} \ No newline at end of file diff --git a/week_6/class_with_constructor/Character.java b/week_6/class_with_constructor/Character.java new file mode 100644 index 0000000..138d011 --- /dev/null +++ b/week_6/class_with_constructor/Character.java @@ -0,0 +1,20 @@ +public class Character { + // Attributes + int strength; + int agility; + int intelligence; + String name; + + // Method + public void sayMyName() { + System.out.println("Hello I am " + name); + } + + // Constructor + public Character(int str, int agi, int intel, String characterName) { + strength = str; + agility = agi; + intelligence = intel; + name = characterName; + } +} \ No newline at end of file diff --git a/week_6/standard_class/App.java b/week_6/standard_class/App.java new file mode 100644 index 0000000..12eccde --- /dev/null +++ b/week_6/standard_class/App.java @@ -0,0 +1,28 @@ +public class App { + public static void main(String[] args) { + + Character knight = new Character(); + + knight.strength = 10; + knight.agility = 5; + knight.intelligence = 0; + knight.name = "Chen"; + knight.sayMyName(); + + Character mage = new Character(); + + mage.strength = 0; + mage.agility = 5; + mage.intelligence = 10; + mage.name = "Akasha"; + mage.sayMyName(); + + Character thief = new Character(); + + thief.strength = 5; + thief.agility = 10; + thief.intelligence = 0; + mage.name = "Gondar"; + thief.sayMyName(); + } +} \ No newline at end of file From 460da60d9ea54b137b9e15fab7f249752b8cb937 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 15:51:32 +0000 Subject: [PATCH 080/183] =?UTF-8?q?=F0=9F=93=93=20Added=20standard=5Fclass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/standard_class/Character.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 week_6/standard_class/Character.java diff --git a/week_6/standard_class/Character.java b/week_6/standard_class/Character.java new file mode 100644 index 0000000..9f14317 --- /dev/null +++ b/week_6/standard_class/Character.java @@ -0,0 +1,14 @@ +public class Character { + int strength; + int agility; + int intelligence; + String name; + + public void sayMyName() { + System.out.println("Hello I am " + name); + } + + public void sayMyStrength() { + System.out.println("My strength is " + strength); + } +} \ No newline at end of file From cb6d24edb1c78d0434c489a729c3f2b181811a5a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 15:54:38 +0000 Subject: [PATCH 081/183] =?UTF-8?q?=F0=9F=93=93=20Move=20class=5Fwith=5Fco?= =?UTF-8?q?nstructor=20into=20claases=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/{ => classes_and_objects}/class_with_constructor/App.java | 0 .../class_with_constructor/Character.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename week_6/{ => classes_and_objects}/class_with_constructor/App.java (100%) rename week_6/{ => classes_and_objects}/class_with_constructor/Character.java (100%) diff --git a/week_6/class_with_constructor/App.java b/week_6/classes_and_objects/class_with_constructor/App.java similarity index 100% rename from week_6/class_with_constructor/App.java rename to week_6/classes_and_objects/class_with_constructor/App.java diff --git a/week_6/class_with_constructor/Character.java b/week_6/classes_and_objects/class_with_constructor/Character.java similarity index 100% rename from week_6/class_with_constructor/Character.java rename to week_6/classes_and_objects/class_with_constructor/Character.java From fb34fde667a87fecd47f7592a435c9e6ba6838d5 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 15:56:35 +0000 Subject: [PATCH 082/183] =?UTF-8?q?=F0=9F=93=93=20Move=20standard=5Fclass?= =?UTF-8?q?=20to=20classes=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/{ => classes_and_objects}/standard_class/App.java | 0 week_6/{ => classes_and_objects}/standard_class/Character.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename week_6/{ => classes_and_objects}/standard_class/App.java (100%) rename week_6/{ => classes_and_objects}/standard_class/Character.java (100%) diff --git a/week_6/standard_class/App.java b/week_6/classes_and_objects/standard_class/App.java similarity index 100% rename from week_6/standard_class/App.java rename to week_6/classes_and_objects/standard_class/App.java diff --git a/week_6/standard_class/Character.java b/week_6/classes_and_objects/standard_class/Character.java similarity index 100% rename from week_6/standard_class/Character.java rename to week_6/classes_and_objects/standard_class/Character.java From 9cf209cd2b3f8b8ffc1b3bb7bfc47c31063775a7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 16:17:36 +0000 Subject: [PATCH 083/183] =?UTF-8?q?=F0=9F=93=93=20Added=20intermediate=5Fj?= =?UTF-8?q?ava?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../introduction/intermediate_java/App,java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 week_1/introduction/intermediate_java/App,java diff --git a/week_1/introduction/intermediate_java/App,java b/week_1/introduction/intermediate_java/App,java new file mode 100644 index 0000000..bf7e2de --- /dev/null +++ b/week_1/introduction/intermediate_java/App,java @@ -0,0 +1,49 @@ +package IntermediateJava; + +public class IntermediateJava { + public static void main(String[] args) { + // Variables and Data Types + int age = 25; + double height = 1.75; + String name = "John"; + + // Conditional Statements + if (age >= 18) { + System.out.println(name + " is an adult."); + } else { + System.out.println(name + " is a minor."); + } + + // Loops + for (int i = 0; i < 5; i++) { + System.out.println("Loop iteration: " + i); + } + + // Arrays + String[] fruits = {"Apple", "Banana", "Orange"}; + System.out.println("First fruit: " + fruits[0]); + + // Classes and Objects + Person person = new Person("Alice", 30); + System.out.println("Person name: " + person.getName()); + System.out.println("Person age: " + person.getAge()); + } +} + +class Person { + private String name; + private int age; + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } +} \ No newline at end of file From 7c267daefce684613f1d1bebbed139ded916ecb7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 16:27:07 +0000 Subject: [PATCH 084/183] =?UTF-8?q?=F0=9F=93=93=20Added=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/methods/App.java | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 week_6/methods/App.java diff --git a/week_6/methods/App.java b/week_6/methods/App.java new file mode 100644 index 0000000..086673c --- /dev/null +++ b/week_6/methods/App.java @@ -0,0 +1,68 @@ +public class App { + public static void main(String[] args) throws Exception { + + App myApp = new App(); + + // Non-static method call + myApp.showHelloJava(); + + // Static method call + showHelloWorld(); + + // Non-static method call with parameter + myApp.showName("Jay"); + + // Static method call with parameter + showAge(20); + + // Static method call with two parameters + showNameAndAge("Jay", 20); + + // Non-static method call with two parameters that returns an int + int sum = myApp.add(1, 1); + System.out.println(sum); + + // Static method call with two parameters that returns an int + int difference = subtract(1, 1); + System.out.println(difference); + + } + + // Non-static method + void showHelloJava() { + System.out.println("Hello Java! This is a non-static method."); + } + + // Static method + static void showHelloWorld() { + System.out.println("Hello World! This is a static method."); + } + + // Non-static method with a parameter + void showName(String name) { + System.out.println("My name is " + name); + } + + // Static method with a parameter + static void showAge(int age) { + System.out.println("My age is " + age); + } + + // Static method with two parameters + static void showNameAndAge(String name, int age) { + System.out.println("Hello: " + name); + System.out.println("You are : " + age + " years old!"); + } + + // Non-static method with two parameters with a return type + int add(int x, int y) { + int z = x + y; + return z; + } + + // Static method with two parameters with a return type + static int subtract(int x, int y) { + int z = x - y; + return z; + } +} \ No newline at end of file From 3c53de34b6068b71218bb47d02cda1bbf169c1a3 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 16:56:41 +0000 Subject: [PATCH 085/183] =?UTF-8?q?=F0=9F=93=93=20Add=20aggregation=20exam?= =?UTF-8?q?ple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/aggregation/University/App.java | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 week_6/aggregation/University/App.java diff --git a/week_6/aggregation/University/App.java b/week_6/aggregation/University/App.java new file mode 100644 index 0000000..966a8dc --- /dev/null +++ b/week_6/aggregation/University/App.java @@ -0,0 +1,54 @@ +import java.util.ArrayList; +import java.util.List; + +class University { + private String name; + private List students; + + public University(String name) { + this.name = name; + this.students = new ArrayList<>(); + } + + public void addStudent(Student student) { + students.add(student); + } + + public List getStudentNames() { + List names = new ArrayList<>(); + for (Student student : students) { + names.add(student.getName()); + } + return names; + } + + public String getName() { + return name; + } +} + +class Student { + private String name; + + public Student(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} + +public class Main { + public static void main(String[] args) { + University university = new University("National University"); + + Student student1 = new Student("Jay"); + Student student2 = new Student("Jasmainelyn"); + + university.addStudent(student1); + university.addStudent(student2); + + System.out.println("Students in " + university.getName() + ": " + university.getStudentNames()); + } +} From cce9cca1104b34988a1a9bfcfab5cb40901edd45 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 16:58:23 +0000 Subject: [PATCH 086/183] =?UTF-8?q?=F0=9F=93=93=20Add=20aggregation=20exam?= =?UTF-8?q?ple=20Fauna?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/aggregation/Fauna/App.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 week_6/aggregation/Fauna/App.java diff --git a/week_6/aggregation/Fauna/App.java b/week_6/aggregation/Fauna/App.java new file mode 100644 index 0000000..0c43f54 --- /dev/null +++ b/week_6/aggregation/Fauna/App.java @@ -0,0 +1,27 @@ +import java.util.*; +//Country class + +class Main { + public static void main(String[] args) { + // Create two Fauna objects + + Fauna PhilippineEagle = new Fauna("Philippine Eagle"); + Fauna Tarsier = new Fauna("Tarsier"); + + // Create a country + Country Philippines = new Country("Philippines"); + + // Create a arraylist and add the fauna + List listOfFauna = new ArrayList(); + + listOfFauna.add(PhilippineEagle); + listOfFauna.add(Tarsier); + + // now add this list to Country Class + Philippines.setlistofFauna(listOfFauna); + + System.out + .println("The fauna found from the " + Philippines.getName() + " are " + Philippines.getSportPersons()); + + } +} \ No newline at end of file From 0abb7db23236d69e36e5e618404232a08757c099 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 16:59:29 +0000 Subject: [PATCH 087/183] =?UTF-8?q?=F0=9F=93=93=20Add=20aggregation=20exam?= =?UTF-8?q?ple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/aggregation/Fauna/Country.java | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 week_6/aggregation/Fauna/Country.java diff --git a/week_6/aggregation/Fauna/Country.java b/week_6/aggregation/Fauna/Country.java new file mode 100644 index 0000000..c4f1561 --- /dev/null +++ b/week_6/aggregation/Fauna/Country.java @@ -0,0 +1,29 @@ +import java.util.List; +import java.util.ArrayList; + +class Country { + private String name; + List fauna; + + public Country(String name) // to assign Country name + { + this.name = name; + } + + public void setlistofFauna(List fauna) { + this.fauna = fauna; + } + + public List getSportPersons() { + List listOfFauna = this.fauna; + List names = new ArrayList(); + for (Fauna fauna : fauna) { + names.add(fauna.getName()); + } + return names; + } + + public String getName() { + return this.name; + } +} \ No newline at end of file From 61cbf2cd00926f28b7f3243571051e1143fcf177 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 17:01:00 +0000 Subject: [PATCH 088/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Fauna.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/aggregation/Fauna/Fauna.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 week_6/aggregation/Fauna/Fauna.java diff --git a/week_6/aggregation/Fauna/Fauna.java b/week_6/aggregation/Fauna/Fauna.java new file mode 100644 index 0000000..5c19993 --- /dev/null +++ b/week_6/aggregation/Fauna/Fauna.java @@ -0,0 +1,13 @@ +//Fauna class +class Fauna { + private String name; + + public Fauna(String name) // to assign Sportsperson name + { + this.name = name; + } + + public String getName() { + return this.name; + } +} \ No newline at end of file From 2f06e60c4917049de397926c1f620fbdbeaebb69 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 17:04:22 +0000 Subject: [PATCH 089/183] =?UTF-8?q?=F0=9F=93=93=20Add=20association?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/association/App.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 week_6/association/App.java diff --git a/week_6/association/App.java b/week_6/association/App.java new file mode 100644 index 0000000..674d757 --- /dev/null +++ b/week_6/association/App.java @@ -0,0 +1,27 @@ +import java.util.List; +import java.util.ArrayList; + +public class App { + public static void main(String[] args) { + + // Create two professor objects + Professor EP = new Professor("Elizer Ponio Jr"); + Professor JA = new Professor("Jay Abaleta"); + + // Create a department object + Department CCIT = new Department("CCIT"); + + // Add the professors to a list and add this list to department + List CCIT_STAFF = new ArrayList(); + CCIT_STAFF.add(EP); + CCIT_STAFF.add(JA); + + // Add staff to cse department + CCIT.setStaff(CCIT_STAFF); + + // Output + + System.out.println("The staff of department " + CCIT.getName() + " is: " + CCIT.getStaff()); + + } +} \ No newline at end of file From 8e3c11701bf6de74e7e18662d7df2e21b172c141 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 17:06:19 +0000 Subject: [PATCH 090/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Department=20in=20?= =?UTF-8?q?association=20java=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/association/Department.java | 34 ++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 week_6/association/Department.java diff --git a/week_6/association/Department.java b/week_6/association/Department.java new file mode 100644 index 0000000..80dca26 --- /dev/null +++ b/week_6/association/Department.java @@ -0,0 +1,34 @@ +import java.util.List; +import java.util.ArrayList; + +//Department Class +class Department { + private String name; + List staff; + + // Constructor + // Assign department name + Department(String name) { + this.name = name; + } + + // Method to retrieve department name + public String getName() { + return this.name; + } + + // Method to assign list of department staff + public void setStaff(List staff) { + this.staff = staff; + } + + // Method to return the list of staff names + public List getStaff() { + + List professor_names = new ArrayList(); + for (Professor prof : this.staff) { + professor_names.add(prof.getName()); // add name of each professor to names list + } + return professor_names; // return names list + } +} \ No newline at end of file From 7c344dee279cd508d598b959c407a27329b31c0f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 10 May 2024 17:07:46 +0000 Subject: [PATCH 091/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Professor.java=20i?= =?UTF-8?q?n=20association?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_6/association/Professor.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 week_6/association/Professor.java diff --git a/week_6/association/Professor.java b/week_6/association/Professor.java new file mode 100644 index 0000000..e85dfa4 --- /dev/null +++ b/week_6/association/Professor.java @@ -0,0 +1,16 @@ +//Professor Class +class Professor { + private String name; + + // Constructor + // Assign professor name + Professor(String name) { + this.name = name; + } + + // Method to retrieve name of professor + public String getName() { + return this.name; + } + +} \ No newline at end of file From 6ec25b777ff8292a6681688c0ca525344f9a4211 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 11 May 2024 09:11:25 +0800 Subject: [PATCH 092/183] =?UTF-8?q?=F0=9F=A7=8A=20Add=20Long=20Quiz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - String Count and Reverse Quiz Activity - Instruction in instruction.txt --- .../StringCountAndReverse.class | Bin 0 -> 2222 bytes .../StringCountAndReverse.java | 39 ++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 XActivityCode/week_5_LQ/LongQuiz/bin/StringCountAndReverse/StringCountAndReverse.class create mode 100644 XActivityCode/week_5_LQ/LongQuiz/src/StringCountAndReverse/StringCountAndReverse.java diff --git a/XActivityCode/week_5_LQ/LongQuiz/bin/StringCountAndReverse/StringCountAndReverse.class b/XActivityCode/week_5_LQ/LongQuiz/bin/StringCountAndReverse/StringCountAndReverse.class new file mode 100644 index 0000000000000000000000000000000000000000..8609dbabbf788eb6dc2521bc98e2d045b329acb4 GIT binary patch literal 2222 zcmaJ@-BTM?6#re4-G#8_BalK6YT8no6xvi9L`8-&u7CW*?wKXZ!>F1N=99cO3ED-2eeHKIHD+d+zz2bAIPz^T)q?zXQ09 zFEunU4CXz@u$HrS#q!3i;(f6$99N|4o@xj)w5{-Uo;JC)oSs=)5e1Jyy=7R2H_8x7 zrsf&KS-U7A2%$-b0+pdPXISE1Wo=0~b9~7Z4AGoj;O0Dc47sl!hP{&EGF;8oHD2GP z44GTwhQ)9;`6zefS^$wr&1-09X!ivb&oI;Z0=F#TG@%1A4V}m0$#1%zSkrM9T?`Ep zG!{S_c6!PxS3E)$d@U0}8{#sy9)|8@-7BeiX`xp~AI=dkc79~Xe2Bj>K2)gQppO(YerJqS1DO_P_w8Vxd z^T5!VOr2&bf+1YfaP>GLer@PT<2q%zP~y%Q84D+;QrQSz#Z3)24&3uCXXyqnP$W8D z!!UzpxD&>*;p=2m52elRE+kFL%*{uOCIqvIBClOM;QVdz+vN=z( zO~Pi&?_YmTFt91A6Spi11~+BW4~`8I73h~`XmNs3QVb$sh@XNzNC(52yvGZx)4c4D z0u2usB6+*w6vU(<=S5Eda$-tdlYWvT8gW=LC;_6YM;d8S6|5vFe1Kx0+x+FxM2dZ_dHmI~}v`f>I z(Nnpyi^ku4afDVWrb9H-s#o82oS|J4TF^=-q|AOLND1=G3$!ghLv$D2xo3DO`tlCW z5ANXdbZ9g*91aaD+qgUwQ+6;otj5&mc;$OEZH3r2TIBBaAE0i9*_Og$%Fqr*p6>to z0;7w&czeX(hl|7NHllH5D5es`4#pO?)cu(H)Bay%tZxr@fE`THdn~+%+`%TUJje7N z-uL&UH7BDBK}I)^7_AybCqEPsbW@By6kQ+9?2Bl}AfmWIl3{dWjP6d*`7GjCL@$bT zt4z-gqI8Qs6W@}?Q~DtMi~*mm$An3YU;z*4*^D1a>ml*gjc@P>kBR;se2owB5&6=G zukbOwg^|E@d_r#u*^Yx_i88Q=X%xtwLi;XXszMOvO{n{1RMqfALz{*nMpcA=5MzHM v(y&jyX*D7Z^xuGT7Q!;=HlPH9o}IL}$*Z!zI{xZmog@)D{S2G<0`dO= 0; i--) { + reversedString.append(input.charAt(i)); // Append each character in reverse order to the StringBuilder :) + } + + // Print the counts and the reversed string + System.out.println("Numbers in String: " + numberCount); + System.out.println("Special Character in String: " + specialCharCount); + System.out.println("The Reverse string is: " + reversedString); + + scanner.close(); + } +} \ No newline at end of file From 356ee86a31d88f7ef90456d7f2246dc4a0ca4928 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 11 May 2024 09:16:56 +0800 Subject: [PATCH 093/183] =?UTF-8?q?=F0=9F=A7=8A=20Create=20Instruction=20f?= =?UTF-8?q?or=20this=20Quiz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quiz Instruction and Output --- .../week_5_LQ/LongQuiz/Instruction.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 XActivityCode/week_5_LQ/LongQuiz/Instruction.txt diff --git a/XActivityCode/week_5_LQ/LongQuiz/Instruction.txt b/XActivityCode/week_5_LQ/LongQuiz/Instruction.txt new file mode 100644 index 0000000..44f11a9 --- /dev/null +++ b/XActivityCode/week_5_LQ/LongQuiz/Instruction.txt @@ -0,0 +1,17 @@ +// Instruction for this Quiz + +Create a java program that count the following inputs and reverse the string based on the given output below. + +// The Output should be like this precisely like this + +Output: + +Enter Any String: NatioNal Un@verSity 23 + +Numbers in String: : 2 + +Special Character in String: 1 + +The Reverse string is : 32 ytiSrev@nU laNoitaN + +Press any key to continue... From b9f220683841d37836a05b563fdf9942354feb87 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 12 May 2024 23:45:57 +0800 Subject: [PATCH 094/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f494f5..e2ec645 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ To be follow ## [4.1.5] - 2024-05-11          ### Added  - ✨ Discussion material for Regular Expression (RegEx) - +- ✨ Added Lab activity 4 for Regular Expression ### Changed - ✨ Changed documentatation From bb9ce07079a6db0f328eb107d20094af85614935 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 12 May 2024 23:48:31 +0800 Subject: [PATCH 095/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e2ec645..d319dd7 100644 --- a/README.md +++ b/README.md @@ -193,9 +193,9 @@ To be follow ## [4.1.4] - 2024-05-04  - ✨ Discussion regarding recursion -- ✨ Coming Soon  -- ✨ Coming Soon -### +- ✨ Added Source code for recursion + +### Activity - 💻 45 Minutes  - 💻 Long Quiz @@ -203,12 +203,13 @@ To be follow ### Added  - ✨ Discussion material for Regular Expression (RegEx) - ✨ Added Lab activity 4 for Regular Expression +- ### Changed - ✨ Changed documentatation -### Fixed -- ✨ Coming Soon -- ✨ Coming Soon +### Activity +- 💻 Lab Class +- 💻 Lab Activity 4 #### [Back to Table of Content](#introduction)     From 82525ed08b2b8ade25f384e465e056b5fb9a75af Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 12 May 2024 23:49:56 +0800 Subject: [PATCH 096/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d319dd7..de93033 100644 --- a/README.md +++ b/README.md @@ -203,7 +203,8 @@ To be follow ### Added  - ✨ Discussion material for Regular Expression (RegEx) - ✨ Added Lab activity 4 for Regular Expression -- +- ✨ Added source code example for Regular Expression (RegEx) + ### Changed - ✨ Changed documentatation From 767801049450740b7a638e923a380ce3af08a76d Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 12 May 2024 23:54:14 +0800 Subject: [PATCH 097/183] =?UTF-8?q?=F0=9F=A7=8A=20Added=20Lab=20Activity?= =?UTF-8?q?=204=20-=20Regular=20Expression?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bin/Intermediate/RegexValidator.class | Bin 0 -> 2033 bytes .../src/Intermediate/RegexValidator.java | 40 ++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 XActivityCode/week_6/RegularExpression/bin/Intermediate/RegexValidator.class create mode 100644 XActivityCode/week_6/RegularExpression/src/Intermediate/RegexValidator.java diff --git a/XActivityCode/week_6/RegularExpression/bin/Intermediate/RegexValidator.class b/XActivityCode/week_6/RegularExpression/bin/Intermediate/RegexValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..598721ebce57df32eb668d07a75fd350ea0c5946 GIT binary patch literal 2033 zcmaJ>T~ixX7=8{-*iBeI3T+`pY}(S65JFn0)`otCFHM^O5*jU~)FnBE#bkra2CE&M z@v=8wdE=E=POsY;Q%7g)ozD1+)ETYM*#r`%j6>LS&U@bTJn#1(|Ni_dfa}=Q&?3;E zvR&zvWWh3B8DEs^@^Q{AS_RWBI~sffU7O~P884dldVGFuQ|4WP)@zn+xi4QpFqApJikOc1_g zTDHK6q5J8EDOuOC?DdIAPQy`wquxcuwTkg<-n4D$1ki)y8jc;XKl{bDD@z7WpjV(p zfgZ0xTIG1k-m17nm1b!oh%SVbFDC{1h7MJUb7{v*pGm+cE~^k z!veZ3AG<300>_3TZ^lclhWttll?cUnXPA7h_i+M$Zq& z9z=(3CRRq@kVb}Y@uDH7;>u_wS{FQcGB$E$cTmSgCU|uvx>9&@X=Hpi#pzMwLUxz?^DCf4*4WW@|2BQNxFOHRhGi(uPz1Ts5PCES5;g zlFU}Nwp3ZlLZj{vDzo9(kfyUv*Ln`=NBXf{Ye3#NWu)Gf>}J2$0BRz<(aZuyts-lq zgGW!dUIhefzTKAwJtc2&351$B4_3h*T0K#RsqUqj^Q4)n4t;=qAEiC(n)y#N=9V|p zG;kiRADlVfpb`jX%M~XtXT1XM@i6!2?5GL_PJ`vb$qck`$3e=k##5ZD;OZZK3H`Zu z9pqPCg9>f@8Z`y3?K}n0flf;JSo}#ygR-hfi_9u0VAK_zi51@#9WcQI}75BOGlWQ3({BI>= z4iC7~$UD#bhtSDBi%(!OE0P>*lm*G$k33~F+P@})uUQ?q&3Au8PjU$a{$ln8Hi+E<>py7L>wo|N literal 0 HcmV?d00001 diff --git a/XActivityCode/week_6/RegularExpression/src/Intermediate/RegexValidator.java b/XActivityCode/week_6/RegularExpression/src/Intermediate/RegexValidator.java new file mode 100644 index 0000000..44f4e45 --- /dev/null +++ b/XActivityCode/week_6/RegularExpression/src/Intermediate/RegexValidator.java @@ -0,0 +1,40 @@ +package Intermediate; + +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RegexValidator { + public static void main(String[] args) { + // Try statement + try + (Scanner scanner = new Scanner(System.in)) { + System.out.print("Enter an email address: "); + String email = scanner.nextLine(); + System.out.print("Enter a mobile number: "); + String mobileNumber = scanner.nextLine(); + + // Regular expression patterns + String emailPattern = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$"; + String mobileNumberPattern = "^\\+\\d{1,3}-\\d{3}-\\d{3}-\\d{4}$"; + + // Validate email address + Pattern emailRegex = Pattern.compile(emailPattern); + Matcher emailMatcher = emailRegex.matcher(email); + if (emailMatcher.matches()) { + System.out.println("VALID EMAIL ADDRESS"); + } else { + System.out.println("Invalid EMAIL"); + } + + // Validate mobile number + Pattern mobileNumberRegex = Pattern.compile(mobileNumberPattern); + Matcher mobileNumberMatcher = mobileNumberRegex.matcher(mobileNumber); + if (mobileNumberMatcher.matches()) { + System.out.println("VALID CONTACT NUMBER"); + } else { + System.out.println("Invalid MOBILE"); + } + } + } +} \ No newline at end of file From 317c3479f6aa67c75636234cacbfbfdacda36745 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 12 May 2024 23:59:32 +0800 Subject: [PATCH 098/183] =?UTF-8?q?=F0=9F=A7=8A=20Create=20Instruction=20f?= =?UTF-8?q?or=20Lab=20Activity=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week_6/RegularExpression/Instruction.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 XActivityCode/week_6/RegularExpression/Instruction.txt diff --git a/XActivityCode/week_6/RegularExpression/Instruction.txt b/XActivityCode/week_6/RegularExpression/Instruction.txt new file mode 100644 index 0000000..c0c3b7b --- /dev/null +++ b/XActivityCode/week_6/RegularExpression/Instruction.txt @@ -0,0 +1,15 @@ +# Lab Activity 4 - Regular Expression + +### Instructions + +* Create a program that validate the user input using regular expression for the format of Email address and Contact Mobile number. +* The program will use the matcher, pattern and Matches. +* Evaluate the input, if the format is correct for email address. +* Print the message "VALID EMAIL ADDRESS" and for Mobile number print the message "VALID CONTACT NUMBER" otherwise "Invalid EMAIL and MOBILE NUMBER". + +#### Output: + +// Sample format: + +Email: magicMan99@Lucky.com +Mobile Number: +63-918-267-2289 From 24e9d5df83baa2e5bcf95485369830856522f899 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 13 May 2024 00:03:22 +0800 Subject: [PATCH 099/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index de93033..08abc46 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ At the end of the course, the studend must be able to: | | | - Ø Course Syllabi | |  | | | - Ø Lab Guidelines and Safety Review | | | 2 | April 6 | Arrays | Chapter 8&9 Java Programming Eight Edition, Farrell, Joyce | -| 3 | April 13-17 | File and String manipulation | Chapter 7&13 Java Programming Eight Edition, Farrell, Joyce | +| 3 | April 13 | File and String manipulation | Chapter 7&13 Java Programming Eight Edition, Farrell, Joyce | | 4 | April 20 | Recursion | Chapter 2 Introduction to Programming in Java: An Interdisciplinary Approach, 2nd Edition, Robert Sedgewick | | | April 27 | | Chapter 13 Java Programming: From Problem Analysis to Program Design, Fifth Edition, Malik, DS | | 5 | May 4 | Regular Expression | Chapter 30 Java: The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | @@ -53,8 +53,8 @@ At the end of the course, the studend must be able to: | 9 | June 1 | Introduction to Swing package | Chapter 14 Java Programming Eight Edition, Farrell, Joyce | | 10 | June 8 | Interfaces and event-driven programming | Chapter 10 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | | 11 | June 15 | Threads | Chapter 11 Java: The Complete Reference Tenth Edition, Schildt, Herbert, 2018 | -| 12 | July 29 | Runnable interface Synchronization | Chapter 11 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | -| 13 | July 6 | Course Synthesis & Final Examination | | +| 12 | June 22 | Runnable interface Synchronization | Chapter 11 Core Java: Volume II Advanced Features Tenth Edition, Hortsmann, Cay S., 2017 | +| 13 | June 29 | Course Synthesis & Final Examination | | #### SUGGESTED READINGS AND REFERENCES From af740e96216231fda5158d13b740c893cf23a599 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 12 May 2024 21:37:04 +0000 Subject: [PATCH 100/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Regex=20character?= =?UTF-8?q?=5Fclass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../character_class/App.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 week_6/regex_prof_jay_example/character_class/App.java diff --git a/week_6/regex_prof_jay_example/character_class/App.java b/week_6/regex_prof_jay_example/character_class/App.java new file mode 100644 index 0000000..c7033d4 --- /dev/null +++ b/week_6/regex_prof_jay_example/character_class/App.java @@ -0,0 +1,20 @@ +package Intermediate; +import java.util.regex.*; + +public class RegExCharClass { + + public static void main(String[] args) + { + + System.out.println(Pattern.matches("[abc]", "a"));//false (not a or b or c) + System.out.println(Pattern.matches("[abc]", "abc"));//false (among a or b or c) + System.out.println(Pattern.matches("[abc]", "abbbbc"));//false (a and a comes more than once) + + + System.out.println(Pattern.matches("[abc]?", "b"));//false (a comes more than one time) + System.out.println(Pattern.matches("[abcx]+", "abcabacaaxaa"));//true (a or b or c once or more times) + System.out.println(Pattern.matches("[abc]+", "aaabbbbbb"));//true (a comes more than one time) + + } + +} \ No newline at end of file From c5eab7b1878d660a1e7bb529c27d07dac89f51f6 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 14 May 2024 23:49:21 +0800 Subject: [PATCH 101/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 08abc46..ba459d7 100644 --- a/README.md +++ b/README.md @@ -212,6 +212,19 @@ To be follow - 💻 Lab Class - 💻 Lab Activity 4 +## [4.1.5] - 2024-05-18          +### Added  +- ✨ Coming Soon +- ✨ Coming Soon +- ✨ Coming Soon + +### Changed +- ✨ Coming Soon + +### Activity +- 💻 Coming Soon +- 💻 Coming Soon + #### [Back to Table of Content](#introduction)     From c925d421f14a3fd3d0e5bd37979aaa62362d8137 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 15 May 2024 23:53:46 +0800 Subject: [PATCH 102/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ba459d7..e4901b3 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,8 @@ To be follow - ✨ Coming Soon ### Activity -- 💻 Coming Soon +- 💻 Class Lecture d +- 💻 Lab Class - 💻 Coming Soon #### [Back to Table of Content](#introduction)     From fa1ec6d2d21da306a1d9364827a3b1a7c6d6e865 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 15 May 2024 23:58:41 +0800 Subject: [PATCH 103/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e4901b3..2cfc74f 100644 --- a/README.md +++ b/README.md @@ -222,9 +222,9 @@ To be follow - ✨ Coming Soon ### Activity -- 💻 Class Lecture d +- 💻 Class Lecture - 💻 Lab Class -- 💻 Coming Soon +- 💻 Lab Activity 5 #### [Back to Table of Content](#introduction)     From 29bd3f7d16128017a075ac95335a0533368f4c2a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 16 May 2024 23:59:46 +0800 Subject: [PATCH 104/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2cfc74f..8af6373 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,7 @@ To be follow - 💻 Class Lecture - 💻 Lab Class - 💻 Lab Activity 5 +- 💻 #### [Back to Table of Content](#introduction)     From 7690395301791ed0f601e5351c843c4860bc768e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 17 May 2024 00:00:09 +0800 Subject: [PATCH 105/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 8af6373..2cfc74f 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,6 @@ To be follow - 💻 Class Lecture - 💻 Lab Class - 💻 Lab Activity 5 -- 💻 #### [Back to Table of Content](#introduction)     From 2a72c93ad7ee3e7d40fdb9bbb5aa0d84ea0a4de0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 17 May 2024 23:48:39 +0800 Subject: [PATCH 106/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 2cfc74f..f0a419c 100644 --- a/README.md +++ b/README.md @@ -216,7 +216,6 @@ To be follow ### Added  - ✨ Coming Soon - ✨ Coming Soon -- ✨ Coming Soon ### Changed - ✨ Coming Soon From ca39c28ca53cbab41ddb7289dec1969ec9c9a80a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 17 May 2024 19:55:15 +0000 Subject: [PATCH 107/183] =?UTF-8?q?=F0=9F=93=93=20Add=20regex=5Fpattern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../regex_pattern/App.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 week_6/regex_prof_jay_example/regex_pattern/App.java diff --git a/week_6/regex_prof_jay_example/regex_pattern/App.java b/week_6/regex_prof_jay_example/regex_pattern/App.java new file mode 100644 index 0000000..017fee2 --- /dev/null +++ b/week_6/regex_prof_jay_example/regex_pattern/App.java @@ -0,0 +1,21 @@ +package JRegEx; + +public class RegPattern { + + public static void main(String[] args) + { + String num1 = "^[0-9]+$"; + String num2 = "^2023+$"; + String word ="^a...e$"; + String word2 = "^J.r..n"; + + System.out.println("112434" .matches(num1)); + System.out.println("apples" .matches(word)); + System.out.println("2024" .matches(num2)); + System.out.println("Jarnan" .matches(word2)); + + + } + +} + \ No newline at end of file From e70a954e5fc82f1783a346c930c70c961ba11223 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 17 May 2024 19:58:40 +0000 Subject: [PATCH 108/183] =?UTF-8?q?=F0=9F=93=93=20Add=20string=5Fpattern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../string_pattern/App.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 week_6/regex_prof_jay_example/string_pattern/App.java diff --git a/week_6/regex_prof_jay_example/string_pattern/App.java b/week_6/regex_prof_jay_example/string_pattern/App.java new file mode 100644 index 0000000..bd8bf85 --- /dev/null +++ b/week_6/regex_prof_jay_example/string_pattern/App.java @@ -0,0 +1,19 @@ +package Intermediate; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +public class RegExMatcherText { + + public static void main(String[] args) + { + Pattern pat = Pattern.compile("NatioNAL UniverSity", Pattern.CASE_INSENSITIVE); + Matcher mat = pat.matcher("NationaL university"); + + boolean matchFound = mat.find(); + if(matchFound) { + System.out.println("Match found in the pattern"); + } else { + System.out.println("Match not found in the pattern"); + } + } + +} From 1618ee5c1b962059e08e798143b9e5b2e144e08d Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 17 May 2024 20:02:59 +0000 Subject: [PATCH 109/183] =?UTF-8?q?=F0=9F=93=93=20Add=20combination=5Frege?= =?UTF-8?q?x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../combination_regex/App.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 week_6/regex_prof_jay_example/combination_regex/App.java diff --git a/week_6/regex_prof_jay_example/combination_regex/App.java b/week_6/regex_prof_jay_example/combination_regex/App.java new file mode 100644 index 0000000..32ddd22 --- /dev/null +++ b/week_6/regex_prof_jay_example/combination_regex/App.java @@ -0,0 +1,30 @@ +package JRegEx; +import java.util.Scanner; +import java.util.regex.*; +public class RegStudID { + public static void main(String[] args) + { + try + { + Scanner sc = new Scanner(System.in); + System.out.println("Please Enter your Student ID Number:"); + String StudNum = sc.nextLine(); + Pattern pat = Pattern.compile("^22-[0-9]{4}"); + Matcher mat = pat.matcher(StudNum); + if(mat.matches()==true) + { + System.out.println("Student Number is Accepted"); + } + else + { + System.out.println("Invalid student number"); + } + } + catch(Exception e) + { + System.out.println(e.getMessage()); + } + + } + +} \ No newline at end of file From d722dd678f33312a28752241e29b72f6f530d98f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 18 May 2024 23:25:41 +0800 Subject: [PATCH 110/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0a419c..34af723 100644 --- a/README.md +++ b/README.md @@ -221,7 +221,7 @@ To be follow - ✨ Coming Soon ### Activity -- 💻 Class Lecture +- 💻 Class Lecture about Classes and Object - 💻 Lab Class - 💻 Lab Activity 5 From 86b3b796512cd9a359bfd35daae09fdbb568985f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 18 May 2024 23:28:21 +0800 Subject: [PATCH 111/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34af723..706a129 100644 --- a/README.md +++ b/README.md @@ -214,7 +214,7 @@ To be follow ## [4.1.5] - 2024-05-18          ### Added  -- ✨ Coming Soon +- ✨ Add Object and Classes java file - ✨ Coming Soon ### Changed From 76cd6ec98e514c3b28fb09b271c3935ba404edb7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 14:16:46 +0000 Subject: [PATCH 112/183] =?UTF-8?q?=F0=9F=93=93=20Move=20class=5Fwith=5Fco?= =?UTF-8?q?nstructor=20and=20classes=5Fand=5Fobjects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes_and_objects/class_with_constructor/App.java | 0 .../classes_and_objects/class_with_constructor/Character.java | 0 {week_6 => week_7}/classes_and_objects/standard_class/App.java | 0 .../classes_and_objects/standard_class/Character.java | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename {week_6 => week_7}/classes_and_objects/class_with_constructor/App.java (100%) rename {week_6 => week_7}/classes_and_objects/class_with_constructor/Character.java (100%) rename {week_6 => week_7}/classes_and_objects/standard_class/App.java (100%) rename {week_6 => week_7}/classes_and_objects/standard_class/Character.java (100%) diff --git a/week_6/classes_and_objects/class_with_constructor/App.java b/week_7/classes_and_objects/class_with_constructor/App.java similarity index 100% rename from week_6/classes_and_objects/class_with_constructor/App.java rename to week_7/classes_and_objects/class_with_constructor/App.java diff --git a/week_6/classes_and_objects/class_with_constructor/Character.java b/week_7/classes_and_objects/class_with_constructor/Character.java similarity index 100% rename from week_6/classes_and_objects/class_with_constructor/Character.java rename to week_7/classes_and_objects/class_with_constructor/Character.java diff --git a/week_6/classes_and_objects/standard_class/App.java b/week_7/classes_and_objects/standard_class/App.java similarity index 100% rename from week_6/classes_and_objects/standard_class/App.java rename to week_7/classes_and_objects/standard_class/App.java diff --git a/week_6/classes_and_objects/standard_class/Character.java b/week_7/classes_and_objects/standard_class/Character.java similarity index 100% rename from week_6/classes_and_objects/standard_class/Character.java rename to week_7/classes_and_objects/standard_class/Character.java From 76f58af28cbb77c91993bd784c4be9a36a458700 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 14:26:40 +0000 Subject: [PATCH 113/183] =?UTF-8?q?=F0=9F=93=93=20Add=20MainStudentRecord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainStudentRecord.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 week_7/objectclasses_prof_jay_example/Main_student_record/MainStudentRecord.java diff --git a/week_7/objectclasses_prof_jay_example/Main_student_record/MainStudentRecord.java b/week_7/objectclasses_prof_jay_example/Main_student_record/MainStudentRecord.java new file mode 100644 index 0000000..c0f1e1d --- /dev/null +++ b/week_7/objectclasses_prof_jay_example/Main_student_record/MainStudentRecord.java @@ -0,0 +1,48 @@ +package ObjectClasses; + +public class MainStudentRecord { + + public static void main(String[] args) { + Student StudAObj = new Student(); + Student StudBObj = new Student(); + Degree D = new Degree(); + Degree D1 = new Degree(); + Courses C = new Courses(); + + + + StudAObj.StudentID = 202401; + D.Deg = "BSCS"; + C.courseCode = 202; + C.CourseName = "Intermediate Programming"; + StudAObj.FirstName = "Roland"; + StudAObj.MiddleName = "Tom"; + StudAObj.LastName = "Reyes"; + StudAObj.Age = 34; + + System.out.println(StudAObj.StudentID); + System.out.println(D.Deg); + System.out.println(C.courseCode); + System.out.println(C.CourseName); + System.out.println(StudAObj.FirstName); + System.out.println(StudAObj.MiddleName); + System.out.println(StudAObj.LastName); + System.out.println(StudAObj.Age); + + System.out.println("============="); + StudBObj.StudentID = 202402; + D1.Deg = "BSIT"; + StudBObj.FirstName = "Michael"; + StudBObj.MiddleName = "Santos"; + StudBObj.LastName = "Lopez"; + StudBObj.Age = 18; + System.out.println(StudBObj.StudentID); + System.out.println(D1.Deg); + System.out.println(StudBObj.FirstName); + System.out.println(StudBObj.MiddleName); + System.out.println(StudBObj.LastName); + System.out.println(StudBObj.Age); + + } + +} \ No newline at end of file From a2993a2da220177e8049aa0ebf6ba270d8775a5e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 14:29:02 +0000 Subject: [PATCH 114/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Student=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MainStudentRecord.java | 0 .../ObjectClasses/Student.java | 10 ++++++++++ 2 files changed, 10 insertions(+) rename week_7/objectclasses_prof_jay_example/{Main_student_record => ObjectClasses}/MainStudentRecord.java (100%) create mode 100644 week_7/objectclasses_prof_jay_example/ObjectClasses/Student.java diff --git a/week_7/objectclasses_prof_jay_example/Main_student_record/MainStudentRecord.java b/week_7/objectclasses_prof_jay_example/ObjectClasses/MainStudentRecord.java similarity index 100% rename from week_7/objectclasses_prof_jay_example/Main_student_record/MainStudentRecord.java rename to week_7/objectclasses_prof_jay_example/ObjectClasses/MainStudentRecord.java diff --git a/week_7/objectclasses_prof_jay_example/ObjectClasses/Student.java b/week_7/objectclasses_prof_jay_example/ObjectClasses/Student.java new file mode 100644 index 0000000..36e7e92 --- /dev/null +++ b/week_7/objectclasses_prof_jay_example/ObjectClasses/Student.java @@ -0,0 +1,10 @@ +package ObjectClasses; + +public class Student +{ + int StudentID; + String FirstName; + String MiddleName; + String LastName; + int Age; +} \ No newline at end of file From 418ba52a60f309d53ee1ad8f00c46139e47306d0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 14:30:34 +0000 Subject: [PATCH 115/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Courses=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ObjectClasses/Courses.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 week_7/objectclasses_prof_jay_example/ObjectClasses/Courses.java diff --git a/week_7/objectclasses_prof_jay_example/ObjectClasses/Courses.java b/week_7/objectclasses_prof_jay_example/ObjectClasses/Courses.java new file mode 100644 index 0000000..5967af7 --- /dev/null +++ b/week_7/objectclasses_prof_jay_example/ObjectClasses/Courses.java @@ -0,0 +1,8 @@ +package ObjectClasses; + +public class Courses +{ + int courseCode; + String CourseName; +} + \ No newline at end of file From 56430ebadf6162c42b5ab9b54c6001d0cc21d324 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 14:31:54 +0000 Subject: [PATCH 116/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Degree=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ObjectClasses/Degree.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 week_7/objectclasses_prof_jay_example/ObjectClasses/Degree.java diff --git a/week_7/objectclasses_prof_jay_example/ObjectClasses/Degree.java b/week_7/objectclasses_prof_jay_example/ObjectClasses/Degree.java new file mode 100644 index 0000000..a7bc69c --- /dev/null +++ b/week_7/objectclasses_prof_jay_example/ObjectClasses/Degree.java @@ -0,0 +1,6 @@ +package ObjectClasses; + +public class Degree +{ + String Deg; +} \ No newline at end of file From 264d2c4ba442e42dbe8b6eedf74ba3f8b4b91aa2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 22:35:58 +0800 Subject: [PATCH 117/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 706a129..3451da2 100644 --- a/README.md +++ b/README.md @@ -223,7 +223,7 @@ To be follow ### Activity - 💻 Class Lecture about Classes and Object - 💻 Lab Class -- 💻 Lab Activity 5 +- 💻 Lab Activity 5 Object and Classes #### [Back to Table of Content](#introduction)     From 3ab03a29258d11b366d6b898635842f2de09aabe Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 22:36:52 +0800 Subject: [PATCH 118/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3451da2..e601fce 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,7 @@ To be follow ## [4.1.5] - 2024-05-18          ### Added  - ✨ Add Object and Classes java file -- ✨ Coming Soon +- ✨ Add Professor Jay example for object and classes java file ### Changed - ✨ Coming Soon From e55801ac9fdecb80feca9a40e02568e42b1c597d Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 19 May 2024 22:37:59 +0800 Subject: [PATCH 119/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e601fce..0df849b 100644 --- a/README.md +++ b/README.md @@ -218,7 +218,7 @@ To be follow - ✨ Add Professor Jay example for object and classes java file ### Changed -- ✨ Coming Soon +- ✨ Move Object and Classes java file into folder week 6 to week 7 folder ### Activity - 💻 Class Lecture about Classes and Object From a1d4e3d13ce2a4e37f5362e6da6b6b1e9b1b621e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 31 May 2024 01:32:51 +0800 Subject: [PATCH 120/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 0df849b..f1a349b 100644 --- a/README.md +++ b/README.md @@ -225,6 +225,20 @@ To be follow - 💻 Lab Class - 💻 Lab Activity 5 Object and Classes +## [5.1.2] - 2024-05-25          +### Added  +- ✨ Add Instance and Inheritance +- ✨ + +## [6.1.1] - 2024-06-01    +- ✨ +- +### Activity +- 💻 Long Quiz No. 2 + + + + #### [Back to Table of Content](#introduction)     From 549f2334a7a845b2c2cfa6054731a1aa8ec4c8d6 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 31 May 2024 01:34:31 +0800 Subject: [PATCH 121/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f1a349b..2bee0c1 100644 --- a/README.md +++ b/README.md @@ -227,7 +227,7 @@ To be follow ## [5.1.2] - 2024-05-25          ### Added  -- ✨ Add Instance and Inheritance +- ✨ Added Polymorphism code example - ✨ ## [6.1.1] - 2024-06-01    From cb830413eb70744779cfb4c53787d0d1ac49fa84 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Fri, 31 May 2024 01:35:07 +0800 Subject: [PATCH 122/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2bee0c1..16693ad 100644 --- a/README.md +++ b/README.md @@ -231,8 +231,8 @@ To be follow - ✨ ## [6.1.1] - 2024-06-01    -- ✨ -- +- ✨ Coming Soon +- ✨ Coming Soon ### Activity - 💻 Long Quiz No. 2 From 97feb566ba116157a33b3076a75f912d6aff23c3 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 8 Jun 2024 03:35:10 +0800 Subject: [PATCH 123/183] =?UTF-8?q?=F0=9F=92=BB=20Final=20Revision?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flexycode-hotel-client-main/README.md | 8 + .../flexycode-hotel-client-main/index.html | 13 + .../package-lock.json | 4233 +++++++++++++++++ .../flexycode-hotel-client-main/package.json | 35 + .../public/vite.svg | 1 + .../flexycode-hotel-client-main/src/App.css | 42 + .../flexycode-hotel-client-main/src/App.jsx | 63 + .../src/assets/images/parrall.jpg | Bin 0 -> 163209 bytes .../src/assets/images/room7.jpg | Bin 0 -> 7057 bytes .../src/assets/images/services-1.jpg | Bin 0 -> 302911 bytes .../src/assets/images/services4.jpg | Bin 0 -> 186915 bytes .../src/assets/react.svg | 1 + .../src/components/admin/Admin.jsx | 15 + .../src/components/auth/AuthProvider.jsx | 38 + .../src/components/auth/Login.jsx | 87 + .../src/components/auth/Logout.jsx | 31 + .../src/components/auth/Profile.jsx | 207 + .../src/components/auth/Registration.jsx | 120 + .../src/components/auth/RequireAuth.jsx | 12 + .../src/components/booking/BookingForm.jsx | 254 + .../src/components/booking/BookingSuccess.jsx | 30 + .../src/components/booking/BookingSummary.jsx | 96 + .../src/components/booking/Bookings.jsx | 51 + .../src/components/booking/BookingsTable.jsx | 78 + .../src/components/booking/Checkout.jsx | 112 + .../src/components/booking/FindBooking.jsx | 144 + .../src/components/common/DateSlider.jsx | 39 + .../src/components/common/Header.jsx | 14 + .../src/components/common/HotelService.jsx | 98 + .../src/components/common/Parallax.jsx | 19 + .../src/components/common/RoomCarousel.jsx | 75 + .../src/components/common/RoomFilter.jsx | 46 + .../src/components/common/RoomPaginator.jsx | 22 + .../src/components/common/RoomSearch.jsx | 122 + .../components/common/RoomSearchResult.jsx | 50 + .../components/common/RoomTypeSelector.jsx | 73 + .../src/components/home/Home.jsx | 34 + .../src/components/layout/Footer.jsx | 19 + .../src/components/layout/MainHeader.jsx | 17 + .../src/components/layout/NavBar.jsx | 91 + .../src/components/room/AddRoom.jsx | 132 + .../src/components/room/EditRoom.jsx | 140 + .../src/components/room/ExistingRooms.jsx | 152 + .../src/components/room/Room.jsx | 81 + .../src/components/room/RoomCard.jsx | 36 + .../src/components/room/RoomListing.jsx | 12 + .../src/components/utils/ApiFunctions.js | 219 + .../flexycode-hotel-client-main/src/index.css | 228 + .../flexycode-hotel-client-main/src/main.jsx | 10 + .../vite.config.js | 7 + .../server/flexycode-hotel-server-master/mvnw | 308 ++ .../flexycode-hotel-server-master/mvnw.cmd | 205 + .../flexycode-hotel-server-master/pom.xml | 114 + .../LakeSideHotelApplication.java | 13 + .../controller/AuthController.java | 67 + .../controller/BookingController.java | 97 + .../controller/RoleController.java | 63 + .../controller/RoomController.java | 156 + .../controller/UserController.java | 57 + .../exception/InternalServerException.java | 11 + .../InvalidBookingRequestException.java | 11 + .../exception/PhotoRetrievalException.java | 11 + .../exception/ResourceNotFoundException.java | 11 + .../exception/RoleAlreadyExistException.java | 11 + .../exception/UserAlreadyExistsException.java | 11 + .../lakesidehotel/model/BookedRoom.java | 69 + .../lakesidehotel/model/Role.java | 54 + .../lakesidehotel/model/Room.java | 47 + .../lakesidehotel/model/User.java | 38 + .../repository/BookingRepository.java | 20 + .../repository/RoleRepository.java | 18 + .../repository/RoomRepository.java | 28 + .../repository/UserRepository.java | 18 + .../lakesidehotel/request/LoginRequest.java | 15 + .../response/BookingResponse.java | 45 + .../lakesidehotel/response/JwtResponse.java | 30 + .../lakesidehotel/response/RoomResponse.java | 40 + .../lakesidehotel/security/CorsConfig.java | 47 + .../security/WebSecurityConfig.java | 75 + .../security/jwt/AuthTokenFilter.java | 60 + .../security/jwt/JwtAuthEntryPoint.java | 46 + .../lakesidehotel/security/jwt/JwtUtils.java | 72 + .../security/user/HotelUserDetails.java | 79 + .../user/HotelUserDetailsService.java | 25 + .../lakesidehotel/service/BookingService.java | 94 + .../service/IBookingService.java | 23 + .../lakesidehotel/service/IRoleService.java | 22 + .../lakesidehotel/service/IRoomService.java | 33 + .../lakesidehotel/service/IUserService.java | 16 + .../lakesidehotel/service/RoleService.java | 85 + .../lakesidehotel/service/RoomService.java | 96 + .../lakesidehotel/service/UserService.java | 60 + .../src/main/resources/application.properties | 25 + .../src/main/resources/application.yml | 40 + .../LakeSideHotelApplicationTests.java | 13 + 95 files changed, 9886 insertions(+) create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/README.md create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/index.html create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package-lock.json create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package.json create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/public/vite.svg create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.css create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/images/parrall.jpg create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/images/room7.jpg create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/images/services-1.jpg create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/images/services4.jpg create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/react.svg create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/admin/Admin.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/AuthProvider.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Login.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Logout.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Profile.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Registration.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/RequireAuth.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingForm.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSuccess.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSummary.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Bookings.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingsTable.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Checkout.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/FindBooking.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/DateSlider.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Header.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/HotelService.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Parallax.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomCarousel.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomFilter.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomPaginator.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearch.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearchResult.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomTypeSelector.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/home/Home.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/Footer.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/MainHeader.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/NavBar.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/AddRoom.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/EditRoom.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/ExistingRooms.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/Room.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomCard.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomListing.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/utils/ApiFunctions.js create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/index.css create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/main.jsx create mode 100644 XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/vite.config.js create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw.cmd create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/pom.xml create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/LakeSideHotelApplication.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/AuthController.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/BookingController.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoleController.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoomController.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/UserController.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InternalServerException.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InvalidBookingRequestException.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/PhotoRetrievalException.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/ResourceNotFoundException.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/RoleAlreadyExistException.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/UserAlreadyExistsException.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/BookedRoom.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Role.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Room.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/User.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/BookingRepository.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoleRepository.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoomRepository.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/UserRepository.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/request/LoginRequest.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/BookingResponse.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/JwtResponse.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/RoomResponse.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/CorsConfig.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/WebSecurityConfig.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/AuthTokenFilter.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtAuthEntryPoint.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtUtils.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetails.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetailsService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/BookingService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IBookingService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoleService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoomService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IUserService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoleService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoomService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/UserService.java create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.properties create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.yml create mode 100644 XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/test/java/com/dailycodework/lakesidehotel/LakeSideHotelApplicationTests.java diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/README.md b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/README.md new file mode 100644 index 0000000..f768e33 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/README.md @@ -0,0 +1,8 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/index.html b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/index.html new file mode 100644 index 0000000..0c589ec --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package-lock.json b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package-lock.json new file mode 100644 index 0000000..af7896d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package-lock.json @@ -0,0 +1,4233 @@ +{ + "name": "lakeside-hotel", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "lakeside-hotel", + "version": "0.0.0", + "dependencies": { + "axios": "^1.5.0", + "bootstrap": "^5.3.2", + "date-fns": "^2.30.0", + "jwt-decode": "^3.1.2", + "moment": "^2.29.4", + "react": "^18.2.0", + "react-bootstrap": "^2.8.0", + "react-date-range": "^1.4.0", + "react-dom": "^18.2.0", + "react-icons": "^4.11.0", + "react-router-dom": "^6.16.0" + }, + "devDependencies": { + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.3", + "eslint": "^8.45.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "vite": "^4.4.5" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", + "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", + "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", + "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", + "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", + "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.8.0.tgz", + "integrity": "sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@remix-run/router": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", + "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@restart/hooks": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.11.tgz", + "integrity": "sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==", + "dependencies": { + "dequal": "^2.0.3" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@restart/ui": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.6.tgz", + "integrity": "sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@popperjs/core": "^2.11.6", + "@react-aria/ssr": "^3.5.0", + "@restart/hooks": "^0.4.9", + "@types/warning": "^3.0.0", + "dequal": "^2.0.3", + "dom-helpers": "^5.2.0", + "uncontrollable": "^8.0.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/@restart/ui/node_modules/uncontrollable": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", + "peerDependencies": { + "react": ">=16.14.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", + "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", + "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", + "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", + "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.7", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.7.tgz", + "integrity": "sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==" + }, + "node_modules/@types/react": { + "version": "18.2.22", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", + "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", + "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/warning": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.1.tgz", + "integrity": "sha512-ywJmriP+nvjBKNBEMaNZgj2irZHoxcKeYcyMLbqhYKbDVn8yCIULy2Ol/tvIb37O3IBeZj3RU4tXqQTtGwoAMg==" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", + "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.20", + "@babel/plugin-transform-react-jsx-self": "^7.22.5", + "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@types/babel__core": "^7.20.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", + "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.21.11", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.11.tgz", + "integrity": "sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001538", + "electron-to-chromium": "^1.4.526", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001539", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001539.tgz", + "integrity": "sha512-hfS5tE8bnNiNvEOEkm8HElUHroYwlqMMENEzELymy77+tJ6m+gA2krtHl5hxJaj71OlpC2cHZbdSMX1/YEqEkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.528", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.528.tgz", + "integrity": "sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA==", + "dev": true + }, + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", + "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", + "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "dev": true, + "dependencies": { + "flatted": "^3.2.7", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "node_modules/keyv": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types-extra": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", + "dependencies": { + "react-is": "^16.3.2", + "warning": "^4.0.0" + }, + "peerDependencies": { + "react": ">=0.14.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-bootstrap": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.8.0.tgz", + "integrity": "sha512-e/aNtxl0Z2ozrIaR82jr6Zz7ss9GSoaXpQaxmvtDUsTZIq/XalkduR/ZXP6vbQHz2T4syvjA+4FbtwELxxmpww==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@restart/hooks": "^0.4.9", + "@restart/ui": "^1.6.3", + "@types/react-transition-group": "^4.4.5", + "classnames": "^2.3.2", + "dom-helpers": "^5.2.1", + "invariant": "^2.2.4", + "prop-types": "^15.8.1", + "prop-types-extra": "^1.1.0", + "react-transition-group": "^4.4.5", + "uncontrollable": "^7.2.1", + "warning": "^4.0.3" + }, + "peerDependencies": { + "@types/react": ">=16.14.8", + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-date-range": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-date-range/-/react-date-range-1.4.0.tgz", + "integrity": "sha512-+9t0HyClbCqw1IhYbpWecjsiaftCeRN5cdhsi9v06YdimwyMR2yYHWcgVn3URwtN/txhqKpEZB6UX1fHpvK76w==", + "dependencies": { + "classnames": "^2.2.6", + "prop-types": "^15.7.2", + "react-list": "^0.8.13", + "shallow-equal": "^1.2.1" + }, + "peerDependencies": { + "date-fns": "2.0.0-alpha.7 || >=2.0.0", + "react": "^0.14 || ^15.0.0-rc || >=15.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-icons": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", + "integrity": "sha512-V+4khzYcE5EBk/BvcuYRq6V/osf11ODUM2J8hg2FDSswRrGvqiYUYPRy4OdrWaQOBj4NcpJfmHZLNaD+VH0TyA==", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-list": { + "version": "0.8.17", + "resolved": "https://registry.npmjs.org/react-list/-/react-list-0.8.17.tgz", + "integrity": "sha512-pgmzGi0G5uGrdHzMhgO7KR1wx5ZXVvI3SsJUmkblSAKtewIhMwbQiMuQiTE83ozo04BQJbe0r3WIWzSO0dR1xg==", + "dependencies": { + "prop-types": "15" + }, + "peerDependencies": { + "react": "0.14 || 15 - 18" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", + "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "dependencies": { + "@remix-run/router": "1.9.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", + "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "dependencies": { + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.3.tgz", + "integrity": "sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncontrollable": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@types/react": ">=16.9.11", + "invariant": "^2.2.4", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package.json b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package.json new file mode 100644 index 0000000..7a0bcd8 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/package.json @@ -0,0 +1,35 @@ +{ + "name": "lakeside-hotel", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "axios": "^1.5.0", + "bootstrap": "^5.3.2", + "date-fns": "^2.30.0", + "jwt-decode": "^3.1.2", + "moment": "^2.29.4", + "react": "^18.2.0", + "react-bootstrap": "^2.8.0", + "react-date-range": "^1.4.0", + "react-dom": "^18.2.0", + "react-icons": "^4.11.0", + "react-router-dom": "^6.16.0" + }, + "devDependencies": { + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.0.3", + "eslint": "^8.45.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.3", + "vite": "^4.4.5" + } +} diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/public/vite.svg b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.css b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.jsx new file mode 100644 index 0000000..b98d20f --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/App.jsx @@ -0,0 +1,63 @@ +import React from "react" +import "../node_modules/bootstrap/dist/css/bootstrap.min.css" +import "/node_modules/bootstrap/dist/js/bootstrap.min.js" +import ExistingRooms from "./components/room/ExistingRooms" +import { BrowserRouter as Router, Routes, Route } from "react-router-dom" +import Home from "./components/home/Home" +import EditRoom from "./components/room/EditRoom" +import AddRoom from "./components/room/AddRoom" +import NavBar from "./components/layout/NavBar" +import Footer from "./components/layout/Footer" +import RoomListing from "./components/room/RoomListing" +import Admin from "./components/admin/Admin" +import Checkout from "./components/booking/Checkout" +import BookingSuccess from "./components/booking/BookingSuccess" +import Bookings from "./components/booking/Bookings" +import FindBooking from "./components/booking/FindBooking" +import Login from "./components/auth/Login" +import Registration from "./components/auth/Registration" +import Profile from "./components/auth/Profile" +import { AuthProvider } from "./components/auth/AuthProvider" +import RequireAuth from "./components/auth/RequireAuth" + +function App() { + return ( + +
+ + + + } /> + } /> + } /> + } /> + + + + + } + /> + } /> + + } /> + } /> + } /> + } /> + + } /> + } /> + + } /> + } /> + + +
+
+
+ ) +} + +export default App diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/images/parrall.jpg b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/images/parrall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..034459181107477618cf0fdd707cb48506970299 GIT binary patch literal 163209 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�jiOE2DH;O>|L&nayPK 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�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�Z&jd$&*9bw;)|bbw>io5tpza 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�DeLWpqKAxMP)cYcxJDbf1Y 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 z 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 GAOG3XXxYgC literal 0 HcmV?d00001 diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/react.svg b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/admin/Admin.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/admin/Admin.jsx new file mode 100644 index 0000000..3b5917c --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/admin/Admin.jsx @@ -0,0 +1,15 @@ +import React from "react" +import { Link } from "react-router-dom" + +const Admin = () => { + return ( +
+

Welcome to Adimin Panel

+
+ Manage Rooms
+ Manage Bookings +
+ ) +} + +export default Admin diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/AuthProvider.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/AuthProvider.jsx new file mode 100644 index 0000000..3a06ad5 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/AuthProvider.jsx @@ -0,0 +1,38 @@ +import React, { createContext, useState, useContext } from "react" +import jwt_decode from "jwt-decode" + +export const AuthContext = createContext({ + user: null, + handleLogin: (token) => {}, + handleLogout: () => {} +}) + +export const AuthProvider = ({ children }) => { + const [user, setUser] = useState(null) + + const handleLogin = (token) => { + const decodedUser = jwt_decode(token) + localStorage.setItem("userId", decodedUser.sub) + localStorage.setItem("userRole", decodedUser.roles) + localStorage.setItem("token", token) + setUser(decodedUser) + } + + const handleLogout = () => { + localStorage.removeItem("userId") + localStorage.removeItem("userRole") + localStorage.removeItem("token") + setUser(null) + } + + return ( + + {children} + + ) +} + +export const useAuth = () => { + return useContext(AuthContext) +} + diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Login.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Login.jsx new file mode 100644 index 0000000..5e17861 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Login.jsx @@ -0,0 +1,87 @@ +import React, { useState } from "react" +import { loginUser } from "../utils/ApiFunctions" +import { Link, useLocation, useNavigate } from "react-router-dom" +import { useAuth } from "./AuthProvider" + +const Login = () => { + const [errorMessage, setErrorMessage] = useState("") + const [login, setLogin] = useState({ + email: "", + password: "" + }) + + const navigate = useNavigate() + const auth = useAuth() + const location = useLocation() + const redirectUrl = location.state?.path || "/" + + const handleInputChange = (e) => { + setLogin({ ...login, [e.target.name]: e.target.value }) + } + + const handleSubmit = async (e) => { + e.preventDefault() + const success = await loginUser(login) + if (success) { + const token = success.token + auth.handleLogin(token) + navigate(redirectUrl, { replace: true }) + } else { + setErrorMessage("Invalid username or password. Please try again.") + } + setTimeout(() => { + setErrorMessage("") + }, 4000) + } + + return ( +
+ {errorMessage &&

{errorMessage}

} +

Login

+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + + Don't' have an account yet? Register + +
+
+
+ ) +} + +export default Login diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Logout.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Logout.jsx new file mode 100644 index 0000000..fc3029a --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Logout.jsx @@ -0,0 +1,31 @@ +import React, { useContext } from "react" +import { AuthContext } from "./AuthProvider" +import { Link, useNavigate } from "react-router-dom" + +const Logout = () => { + const auth = useContext(AuthContext) + const navigate = useNavigate() + + const handleLogout = () => { + auth.handleLogout() + navigate("/", { state: { message: " You have been logged out!" } }) + } + + return ( + <> +
  • + + Profile + +
  • +
  • +
    +
  • + + + ) +} + +export default Logout diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Profile.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Profile.jsx new file mode 100644 index 0000000..fad327d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Profile.jsx @@ -0,0 +1,207 @@ +import React, { useEffect, useState } from "react" +import { deleteUser, getBookingsByUserId, getUser } from "../utils/ApiFunctions" +import { useNavigate } from "react-router-dom" +import moment from "moment" + +const Profile = () => { + const [user, setUser] = useState({ + id: "", + email: "", + firstName: "", + lastName: "", + roles: [{ id: "", name: "" }] + }) + + const [bookings, setBookings] = useState([ + { + id: "", + room: { id: "", roomType: "" }, + checkInDate: "", + checkOutDate: "", + bookingConfirmationCode: "" + } + ]) + const [message, setMessage] = useState("") + const [errorMessage, setErrorMessage] = useState("") + const navigate = useNavigate() + + const userId = localStorage.getItem("userId") + const token = localStorage.getItem("token") + + useEffect(() => { + const fetchUser = async () => { + try { + const userData = await getUser(userId, token) + setUser(userData) + } catch (error) { + console.error(error) + } + } + + fetchUser() + }, [userId]) + + useEffect(() => { + const fetchBookings = async () => { + try { + const response = await getBookingsByUserId(userId, token) + setBookings(response) + } catch (error) { + console.error("Error fetching bookings:", error.message) + setErrorMessage(error.message) + } + } + + fetchBookings() + }, [userId]) + + const handleDeleteAccount = async () => { + const confirmed = window.confirm( + "Are you sure you want to delete your account? This action cannot be undone." + ) + if (confirmed) { + await deleteUser(userId) + .then((response) => { + setMessage(response.data) + localStorage.removeItem("token") + localStorage.removeItem("userId") + localStorage.removeItem("userRole") + navigate("/") + window.location.reload() + }) + .catch((error) => { + setErrorMessage(error.data) + }) + } + } + + return ( +
    + {errorMessage &&

    {errorMessage}

    } + {message &&

    {message}

    } + {user ? ( +
    +

    User Information

    +
    +
    +
    +
    +
    +
    + Profile +
    +
    + +
    +
    +
    + +
    +

    {user.id}

    +
    +
    +
    + +
    + +
    +

    {user.firstName}

    +
    +
    +
    + +
    + +
    +

    {user.lastName}

    +
    +
    +
    + +
    + +
    +

    {user.email}

    +
    +
    +
    + +
    + +
    +
      + {user.roles.map((role) => ( +
    • + {role.name} +
    • + ))} +
    +
    +
    +
    +
    +
    +
    + +

    Booking History

    + + {bookings.length > 0 ? ( + + + + + + + + + + + + + + {bookings.map((booking, index) => ( + + + + + + + + + + ))} + +
    Booking IDRoom IDRoom TypeCheck In DateCheck Out DateConfirmation CodeStatus
    {booking.id}{booking.room.id}{booking.room.roomType} + {moment(booking.checkInDate).subtract(1, "month").format("MMM Do, YYYY")} + + {moment(booking.checkOutDate) + .subtract(1, "month") + .format("MMM Do, YYYY")} + {booking.bookingConfirmationCode}On-going
    + ) : ( +

    You have not made any bookings yet.

    + )} + +
    +
    + +
    +
    +
    +
    +
    + ) : ( +

    Loading user data...

    + )} +
    + ) +} + +export default Profile diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Registration.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Registration.jsx new file mode 100644 index 0000000..3049692 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/Registration.jsx @@ -0,0 +1,120 @@ +import React, { useState } from "react" +import { registerUser } from "../utils/ApiFunctions" +import { Link } from "react-router-dom" + +const Registration = () => { + const [registration, setRegistration] = useState({ + firstName: "", + lastName: "", + email: "", + password: "" + }) + + const [errorMessage, setErrorMessage] = useState("") + const [successMessage, setSuccessMessage] = useState("") + + const handleInputChange = (e) => { + setRegistration({ ...registration, [e.target.name]: e.target.value }) + } + + const handleRegistration = async (e) => { + e.preventDefault() + try { + const result = await registerUser(registration) + setSuccessMessage(result) + setErrorMessage("") + setRegistration({ firstName: "", lastName: "", email: "", password: "" }) + } catch (error) { + setSuccessMessage("") + setErrorMessage(`Registration error : ${error.message}`) + } + setTimeout(() => { + setErrorMessage("") + setSuccessMessage("") + }, 5000) + } + + return ( +
    + {errorMessage &&

    {errorMessage}

    } + {successMessage &&

    {successMessage}

    } + +

    Register

    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + + + Already have an account? Login + +
    +
    +
    + ) +} + +export default Registration diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/RequireAuth.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/RequireAuth.jsx new file mode 100644 index 0000000..9663079 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/auth/RequireAuth.jsx @@ -0,0 +1,12 @@ +import React from "react" +import { Navigate, useLocation } from "react-router-dom" + +const RequireAuth = ({ children }) => { + const user = localStorage.getItem("userId") + const location = useLocation() + if (!user) { + return + } + return children +} +export default RequireAuth diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingForm.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingForm.jsx new file mode 100644 index 0000000..5ce9c76 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingForm.jsx @@ -0,0 +1,254 @@ +import React, { useEffect } from "react" +import moment from "moment" +import { useState } from "react" +import { Form, FormControl, Button } from "react-bootstrap" +import BookingSummary from "./BookingSummary" +import { bookRoom, getRoomById } from "../utils/ApiFunctions" +import { useNavigate, useParams } from "react-router-dom" +import { useAuth } from "../auth/AuthProvider" + +const BookingForm = () => { + const [validated, setValidated] = useState(false) + const [isSubmitted, setIsSubmitted] = useState(false) + const [errorMessage, setErrorMessage] = useState("") + const [roomPrice, setRoomPrice] = useState(0) + +const currentUser = localStorage.getItem("userId") + + const [booking, setBooking] = useState({ + guestFullName: "", + guestEmail: currentUser, + checkInDate: "", + checkOutDate: "", + numOfAdults: "", + numOfChildren: "" + }) + + const { roomId } = useParams() + const navigate = useNavigate() + + const handleInputChange = (e) => { + const { name, value } = e.target + setBooking({ ...booking, [name]: value }) + setErrorMessage("") + } + + + const getRoomPriceById = async (roomId) => { + try { + const response = await getRoomById(roomId) + setRoomPrice(response.roomPrice) + } catch (error) { + throw new Error(error) + } + } + + useEffect(() => { + getRoomPriceById(roomId) + }, [roomId]) + + const calculatePayment = () => { + const checkInDate = moment(booking.checkInDate) + const checkOutDate = moment(booking.checkOutDate) + const diffInDays = checkOutDate.diff(checkInDate, "days") + const paymentPerDay = roomPrice ? roomPrice : 0 + return diffInDays * paymentPerDay + } + + const isGuestCountValid = () => { + const adultCount = parseInt(booking.numOfAdults) + const childrenCount = parseInt(booking.numOfChildren) + const totalCount = adultCount + childrenCount + return totalCount >= 1 && adultCount >= 1 + } + + const isCheckOutDateValid = () => { + if (!moment(booking.checkOutDate).isSameOrAfter(moment(booking.checkInDate))) { + setErrorMessage("Check-out date must be after check-in date") + return false + } else { + setErrorMessage("") + return true + } + } + + const handleSubmit = (e) => { + e.preventDefault() + const form = e.currentTarget + if (form.checkValidity() === false || !isGuestCountValid() || !isCheckOutDateValid()) { + e.stopPropagation() + } else { + setIsSubmitted(true) + } + setValidated(true) + } + + const handleFormSubmit = async () => { + try { + const confirmationCode = await bookRoom(roomId, booking) + setIsSubmitted(true) + navigate("/booking-success", { state: { message: confirmationCode } }) + } catch (error) { + const errorMessage = error.message + console.log(errorMessage) + navigate("/booking-success", { state: { error: errorMessage } }) + } + } + + return ( + <> +
    +
    +
    +
    +

    Reserve Room

    + +
    + + + Fullname + + + + Please enter your fullname. + + + + + + Email + + + + Please enter a valid email address. + + + +
    + Lodging Period +
    +
    + + Check-in date + + + + Please select a check in date. + +
    + +
    + + Check-out date + + + + Please select a check out date. + +
    + {errorMessage &&

    {errorMessage}

    } +
    +
    + +
    + Number of Guest +
    +
    + + Adults + + + + Please select at least 1 adult. + +
    +
    + + Children + + + + Select 0 if no children + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    + {isSubmitted && ( + + )} +
    +
    +
    + + ) +} +export default BookingForm diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSuccess.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSuccess.jsx new file mode 100644 index 0000000..08110a4 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSuccess.jsx @@ -0,0 +1,30 @@ +import React from "react" +import { Link, useLocation } from "react-router-dom" +import Header from "../common/Header" + +const BookingSuccess = () => { + const location = useLocation() + const message = location.state?.message + const error = location.state?.error + return ( +
    +
    +
    + {message ? ( +
    +

    Booking Success!

    +

    {message}

    +
    + ) : ( +
    +

    Error Booking Room!

    +

    {error}

    + +
    + )} +
    +
    + ) +} + +export default BookingSuccess diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSummary.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSummary.jsx new file mode 100644 index 0000000..d04e83a --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingSummary.jsx @@ -0,0 +1,96 @@ +import React, { useState, useEffect } from "react" +import moment from "moment" +import Button from "react-bootstrap/Button" +import { useNavigate } from "react-router-dom" + +const BookingSummary = ({ booking, payment, isFormValid, onConfirm }) => { + const checkInDate = moment(booking.checkInDate) + const checkOutDate = moment(booking.checkOutDate) + const numberOfDays = checkOutDate.diff(checkInDate, "days") + const [isBookingConfirmed, setIsBookingConfirmed] = useState(false) + const [isProcessingPayment, setIsProcessingPayment] = useState(false) + const navigate = useNavigate() + + const handleConfirmBooking = () => { + setIsProcessingPayment(true) + setTimeout(() => { + setIsProcessingPayment(false) + setIsBookingConfirmed(true) + onConfirm() + }, 3000) + } + + useEffect(() => { + if (isBookingConfirmed) { + navigate("/booking-success") + } + }, [isBookingConfirmed, navigate]) + + return ( +
    +
    +
    +

    Reservation Summary

    +

    + Name: {booking.guestFullName} +

    +

    + Email: {booking.guestEmail} +

    +

    + Check-in Date: {moment(booking.checkInDate).format("MMM Do YYYY")} +

    +

    + Check-out Date: {moment(booking.checkOutDate).format("MMM Do YYYY")} +

    +

    + Number of Days Booked: {numberOfDays} +

    + +
    +
    Number of Guest
    + + Adult{booking.numOfAdults > 1 ? "s" : ""} : {booking.numOfAdults} + + +

    Children : {booking.numOfChildren}

    +
    +
    + + {payment > 0 ? ( + <> +

    + Total payment: ${payment} +

    + + {isFormValid && !isBookingConfirmed ? ( + + ) : isBookingConfirmed ? ( +
    +
    + Loading... +
    +
    + ) : null} + + ) : ( +

    Check-out date must be after check-in date.

    + )} +
    +
    + ) +} + +export default BookingSummary diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Bookings.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Bookings.jsx new file mode 100644 index 0000000..a240493 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Bookings.jsx @@ -0,0 +1,51 @@ +import React, { useState, useEffect } from "react" +import { cancelBooking, getAllBookings } from "../utils/ApiFunctions" +import Header from "../common/Header" +import BookingsTable from "./BookingsTable" + +const Bookings = () => { + const [bookingInfo, setBookingInfo] = useState([]) + const [isLoading, setIsLoading] = useState(true) + const [error, setError] = useState("") + + useEffect(() => { + setTimeout(() => { + getAllBookings() + .then((data) => { + setBookingInfo(data) + setIsLoading(false) + }) + .catch((error) => { + setError(error.message) + setIsLoading(false) + }) + }, 1000) + }, []) + + const handleBookingCancellation = async (bookingId) => { + try { + await cancelBooking(bookingId) + const data = await getAllBookings() + setBookingInfo(data) + } catch (error) { + setError(error.message) + } + } + + return ( +
    +
    + {error &&
    {error}
    } + {isLoading ? ( +
    Loading existing bookings
    + ) : ( + + )} +
    + ) +} + +export default Bookings diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingsTable.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingsTable.jsx new file mode 100644 index 0000000..68d4940 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/BookingsTable.jsx @@ -0,0 +1,78 @@ +import { parseISO } from "date-fns" +import React, { useState, useEffect } from "react" +import DateSlider from "../common/DateSlider" + +const BookingsTable = ({ bookingInfo, handleBookingCancellation }) => { + const [filteredBookings, setFilteredBookings] = useState(bookingInfo) + + const filterBooknigs = (startDate, endDate) => { + let filtered = bookingInfo + if (startDate && endDate) { + filtered = bookingInfo.filter((booking) => { + const bookingStarDate = parseISO(booking.checkInDate) + const bookingEndDate = parseISO(booking.checkOutDate) + return ( + bookingStarDate >= startDate && bookingEndDate <= endDate && bookingEndDate > startDate + ) + }) + } + setFilteredBookings(filtered) + } + + useEffect(() => { + setFilteredBookings(bookingInfo) + }, [bookingInfo]) + + return ( +
    + + + + + + + + + + + + + + + + + + + + + {filteredBookings.map((booking, index) => ( + + + + + + + + + + + + + + + + ))} + +
    S/NBooking IDRoom IDRoom TypeCheck-In DateCheck-Out DateGuest NameGuest EmailAdultsChildrenTotal GuestConfirmation CodeActions
    {index + 1}{booking.id}{booking.room.id}{booking.room.roomType}{booking.checkInDate}{booking.checkOutDate}{booking.guestName}{booking.guestEmail}{booking.numOfAdults}{booking.numOfChildren}{booking.totalNumOfGuests}{booking.bookingConfirmationCode} + +
    + {filterBooknigs.length === 0 &&

    No booking found for the selected dates

    } +
    + ) +} + +export default BookingsTable diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Checkout.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Checkout.jsx new file mode 100644 index 0000000..7e9d7f1 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/Checkout.jsx @@ -0,0 +1,112 @@ +import React, { useEffect, useState } from "react" +import BookingForm from "../booking/BookingForm" +import { + FaUtensils, + FaWifi, + FaTv, + FaWineGlassAlt, + FaParking, + FaCar, + FaTshirt +} from "react-icons/fa" + +import { useParams } from "react-router-dom" +import { getRoomById } from "../utils/ApiFunctions" +import RoomCarousel from "../common/RoomCarousel" + +const Checkout = () => { + const [error, setError] = useState(null) + const [isLoading, setIsLoading] = useState(true) + const [roomInfo, setRoomInfo] = useState({ + photo: "", + roomType: "", + roomPrice: "" + }) + + const { roomId } = useParams() + + useEffect(() => { + setTimeout(() => { + getRoomById(roomId) + .then((response) => { + setRoomInfo(response) + setIsLoading(false) + }) + .catch((error) => { + setError(error) + setIsLoading(false) + }) + }, 1000) + }, [roomId]) + + return ( +
    +
    +
    +
    + {isLoading ? ( +

    Loading room information...

    + ) : error ? ( +

    {error}

    + ) : ( +
    + Room photo + + + + + + + + + + + + + + + +
    Room Type:{roomInfo.roomType}
    Price per night:${roomInfo.roomPrice}
    Room Service: +
      +
    • + Wifi +
    • +
    • + Netfilx Premium +
    • +
    • + Breakfast +
    • +
    • + Mini bar refreshment +
    • +
    • + Car Service +
    • +
    • + Parking Space +
    • +
    • + Laundry +
    • +
    +
    +
    + )} +
    +
    + +
    +
    +
    +
    + +
    +
    + ) +} +export default Checkout diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/FindBooking.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/FindBooking.jsx new file mode 100644 index 0000000..bf64057 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/booking/FindBooking.jsx @@ -0,0 +1,144 @@ +import React, { useState } from "react" +import moment from "moment" +import { cancelBooking, getBookingByConfirmationCode } from "../utils/ApiFunctions" + +const FindBooking = () => { + const [confirmationCode, setConfirmationCode] = useState("") + const [error, setError] = useState(null) + const [successMessage, setSuccessMessage] = useState("") + const [isLoading, setIsLoading] = useState(false) + const [bookingInfo, setBookingInfo] = useState({ + id: "", + bookingConfirmationCode: "", + room: { id: "", roomType: "" }, + roomNumber: "", + checkInDate: "", + checkOutDate: "", + guestName: "", + guestEmail: "", + numOfAdults: "", + numOfChildren: "", + totalNumOfGuests: "" + }) + + const emptyBookingInfo = { + id: "", + bookingConfirmationCode: "", + room: { id: "", roomType: "" }, + roomNumber: "", + checkInDate: "", + checkOutDate: "", + guestName: "", + guestEmail: "", + numOfAdults: "", + numOfChildren: "", + totalNumOfGuests: "" + } + const [isDeleted, setIsDeleted] = useState(false) + + const handleInputChange = (event) => { + setConfirmationCode(event.target.value) + } + + const handleFormSubmit = async (event) => { + event.preventDefault() + setIsLoading(true) + + try { + const data = await getBookingByConfirmationCode(confirmationCode) + setBookingInfo(data) + setError(null) + } catch (error) { + setBookingInfo(emptyBookingInfo) + if (error.response && error.response.status === 404) { + setError(error.response.data.message) + } else { + setError(error.message) + } + } + + setTimeout(() => setIsLoading(false), 2000) + } + + const handleBookingCancellation = async (bookingId) => { + try { + await cancelBooking(bookingInfo.id) + setIsDeleted(true) + setSuccessMessage("Booking has been cancelled successfully!") + setBookingInfo(emptyBookingInfo) + setConfirmationCode("") + setError(null) + } catch (error) { + setError(error.message) + } + setTimeout(() => { + setSuccessMessage("") + setIsDeleted(false) + }, 2000) + } + + return ( + <> +
    +

    Find My Booking

    +
    +
    + + + +
    +
    + + {isLoading ? ( +
    Finding your booking...
    + ) : error ? ( +
    Error: {error}
    + ) : bookingInfo.bookingConfirmationCode ? ( +
    +

    Booking Information

    +

    Confirmation Code: {bookingInfo.bookingConfirmationCode}

    +

    Room Number: {bookingInfo.room.id}

    +

    Room Type: {bookingInfo.room.roomType}

    +

    + Check-in Date:{" "} + {moment(bookingInfo.checkInDate).subtract(1, "month").format("MMM Do, YYYY")} +

    +

    + Check-out Date:{" "} + {moment(bookingInfo.checkInDate).subtract(1, "month").format("MMM Do, YYYY")} +

    +

    Full Name: {bookingInfo.guestName}

    +

    Email Address: {bookingInfo.guestEmail}

    +

    Adults: {bookingInfo.numOfAdults}

    +

    Children: {bookingInfo.numOfChildren}

    +

    Total Guest: {bookingInfo.totalNumOfGuests}

    + + {!isDeleted && ( + + )} +
    + ) : ( +
    find booking...
    + )} + + {isDeleted &&
    {successMessage}
    } +
    + + ) +} + +export default FindBooking diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/DateSlider.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/DateSlider.jsx new file mode 100644 index 0000000..61cc07b --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/DateSlider.jsx @@ -0,0 +1,39 @@ +import React, { useState } from "react" +import "react-date-range/dist/styles.css" +import "react-date-range/dist/theme/default.css" +import { DateRangePicker } from "react-date-range" + +const DateSlider = ({ onDateChange, onFilterChange }) => { + const [dateRange, setDateRange] = useState({ + startDate: undefined, + endDate: undefined, + key: "selection" + }) + + const handleSelect = (ranges) => { + setDateRange(ranges.selection) + onDateChange(ranges.selection.startDate, ranges.selection.endDate) + onFilterChange(ranges.selection.startDate, ranges.selection.endDate) + } + + const handleClearFilter = () => { + setDateRange({ + startDate: undefined, + endDate: undefined, + key: "selection" + }) + onDateChange(null, null) + onFilterChange(null, null) + } + return ( + <> +
    Filter bookings by date
    + + + + ) +} + +export default DateSlider diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Header.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Header.jsx new file mode 100644 index 0000000..cedb0af --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Header.jsx @@ -0,0 +1,14 @@ +import React from "react" + +const Header = ({ title }) => { + return ( +
    +
    +
    +

    {title}

    +
    +
    + ) +} + +export default Header diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/HotelService.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/HotelService.jsx new file mode 100644 index 0000000..729fcc6 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/HotelService.jsx @@ -0,0 +1,98 @@ +import React from "react" +import { Container, Row, Col, Card } from "react-bootstrap" +import Header from "./Header" +import { + FaClock, + FaCocktail, + FaParking, + FaSnowflake, + FaTshirt, + FaUtensils, + FaWifi +} from "react-icons/fa" + +const HotelService = () => { + return ( + <> +
    +
    + + +

    + Services at lakeSide - Hotel + + 24-Hour Front Desk + +

    +
    +
    + + + + + + + WiFi + + Stay connected with high-speed internet access. + + + + + + + + Breakfast + + Start your day with a delicious breakfast buffet. + + + + + + + + Laundry + + Keep your clothes clean and fresh with our laundry service. + + + + + + + + Mini-bar + + Enjoy a refreshing drink or snack from our in-room mini-bar. + + + + + + + + Parking + + Park your car conveniently in our on-site parking lot. + + + + + + + + Air conditioning + + Stay cool and comfortable with our air conditioning system. + + + + +
    +
    + + ) +} + +export default HotelService diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Parallax.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Parallax.jsx new file mode 100644 index 0000000..0a37c26 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/Parallax.jsx @@ -0,0 +1,19 @@ +import React from "react" +import { Container } from "react-bootstrap" + +const Parallax = () => { + return ( +
    + +
    +

    + Experience the Best hospitality at lakeSide Hotel +

    +

    We offer the best services for all your needs.

    +
    +
    +
    + ) +} + +export default Parallax diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomCarousel.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomCarousel.jsx new file mode 100644 index 0000000..d06ff32 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomCarousel.jsx @@ -0,0 +1,75 @@ +import React, { useEffect, useState } from "react" +import { getAllRooms } from "../utils/ApiFunctions" +import { Link } from "react-router-dom" +import { Card, Carousel, Col, Container, Row } from "react-bootstrap" + +const RoomCarousel = () => { + const [rooms, setRooms] = useState([{ id: "", roomType: "", roomPrice: "", photo: "" }]) + const [errorMessage, setErrorMessage] = useState("") + const [isLoading, setIsLoading] = useState(false) + + useEffect(() => { + setIsLoading(true) + getAllRooms() + .then((data) => { + setRooms(data) + setIsLoading(false) + }) + .catch((error) => { + setErrorMessage(error.message) + setIsLoading(false) + }) + }, []) + + if (isLoading) { + return
    Loading rooms....
    + } + if (errorMessage) { + return
    Error : {errorMessage}
    + } + + return ( +
    + + Browse all rooms + + + + + {[...Array(Math.ceil(rooms.length / 4))].map((_, index) => ( + + + {rooms.slice(index * 4, index * 4 + 4).map((room) => ( + + + + + + + {room.roomType} + ${room.roomPrice}/night +
    + + Book Now + +
    +
    +
    + + ))} +
    +
    + ))} +
    +
    +
    + ) +} + +export default RoomCarousel diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomFilter.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomFilter.jsx new file mode 100644 index 0000000..b5c534b --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomFilter.jsx @@ -0,0 +1,46 @@ +import React, { useState } from "react" + +const RoomFilter = ({ data, setFilteredData }) => { + const [filter, setFilter] = useState("") + + const handleSelectChange = (e) => { + const selectedType = e.target.value + setFilter(selectedType) + + const filteredRooms = data.filter((room) => + room.roomType.toLowerCase().includes(selectedType.toLowerCase()) + ) + setFilteredData(filteredRooms) + } + + const clearFilter = () => { + setFilter("") + setFilteredData(data) + } + + const roomTypes = ["", ...new Set(data.map((room) => room.roomType))] + + return ( +
    + + FIlter rooms by type + + + +
    + ) +} +export default RoomFilter diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomPaginator.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomPaginator.jsx new file mode 100644 index 0000000..3577f3b --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomPaginator.jsx @@ -0,0 +1,22 @@ +import React from "react" + +const RoomPaginator = ({ currentPage, totalPages, onPageChange }) => { + const pageNumbers = Array.from({ length: totalPages }, (_, i) => i + 1) + return ( + + ) +} + +export default RoomPaginator diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearch.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearch.jsx new file mode 100644 index 0000000..e41f369 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearch.jsx @@ -0,0 +1,122 @@ +import React, { useState } from "react" +import { Form, Button, Row, Col, Container } from "react-bootstrap" +import moment from "moment" +import { getAvailableRooms } from "../utils/ApiFunctions" +import RoomSearchResults from "./RoomSearchResult" +import RoomTypeSelector from "./RoomTypeSelector" + +const RoomSearch = () => { + const [searchQuery, setSearchQuery] = useState({ + checkInDate: "", + checkOutDate: "", + roomType: "" + }) + + const [errorMessage, setErrorMessage] = useState("") + const [availableRooms, setAvailableRooms] = useState([]) + const [isLoading, setIsLoading] = useState(false) + + const handleSearch = (e) => { + e.preventDefault() + const checkInMoment = moment(searchQuery.checkInDate) + const checkOutMoment = moment(searchQuery.checkOutDate) + if (!checkInMoment.isValid() || !checkOutMoment.isValid()) { + setErrorMessage("Please enter valid dates") + return + } + if (!checkOutMoment.isSameOrAfter(checkInMoment)) { + setErrorMessage("Check-out date must be after check-in date") + return + } + setIsLoading(true) + getAvailableRooms(searchQuery.checkInDate, searchQuery.checkOutDate, searchQuery.roomType) + .then((response) => { + setAvailableRooms(response.data) + setTimeout(() => setIsLoading(false), 2000) + }) + .catch((error) => { + console.log(error) + }) + .finally(() => { + setIsLoading(false) + }) + } + + const handleInputChange = (e) => { + const { name, value } = e.target + setSearchQuery({ ...searchQuery, [name]: value }) + const checkInDate = moment(searchQuery.checkInDate) + const checkOutDate = moment(searchQuery.checkOutDate) + if (checkInDate.isValid() && checkOutDate.isValid()) { + setErrorMessage("") + } + } + const handleClearSearch = () => { + setSearchQuery({ + checkInDate: "", + checkOutDate: "", + roomType: "" + }) + setAvailableRooms([]) + } + + return ( + <> + +
    + + + + Check-in Date + + + + + + Check-out Date + + + + + + Room Type +
    + + +
    +
    + +
    +
    + + {isLoading ? ( +

    Finding availble rooms....

    + ) : availableRooms ? ( + + ) : ( +

    No rooms available for the selected dates and room type.

    + )} + {errorMessage &&

    {errorMessage}

    } +
    + + ) +} + +export default RoomSearch diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearchResult.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearchResult.jsx new file mode 100644 index 0000000..1bf4d1d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomSearchResult.jsx @@ -0,0 +1,50 @@ +import React, { useState } from "react" +import RoomCard from "../room/RoomCard" +import { Button, Row } from "react-bootstrap" +import RoomPaginator from "./RoomPaginator" + +const RoomSearchResults = ({ results, onClearSearch }) => { + const [currentPage, setCurrentPage] = useState(1) + const resultsPerPage = 3 + const totalResults = results.length + const totalPages = Math.ceil(totalResults / resultsPerPage) + + const handlePageChange = (pageNumber) => { + setCurrentPage(pageNumber) + } + + const startIndex = (currentPage - 1) * resultsPerPage + const endIndex = startIndex + resultsPerPage + const paginatedResults = results.slice(startIndex, endIndex) + + return ( + <> + {results.length > 0 ? ( + <> +
    Search Results
    + + {paginatedResults.map((room) => ( + + ))} + + + {totalResults > resultsPerPage && ( + + )} + + + + ) : ( +

    + )} + + ) +} + +export default RoomSearchResults diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomTypeSelector.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomTypeSelector.jsx new file mode 100644 index 0000000..3c0ab2b --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/common/RoomTypeSelector.jsx @@ -0,0 +1,73 @@ +import React, { useState, useEffect } from "react" +import { getRoomTypes } from "../utils/ApiFunctions" + +const RoomTypeSelector = ({ handleRoomInputChange, newRoom }) => { + const [roomTypes, setRoomTypes] = useState([""]) + const [showNewRoomTypeInput, setShowNewRoomTypeInput] = useState(false) + const [newRoomType, setNewRoomType] = useState("") + + useEffect(() => { + getRoomTypes().then((data) => { + setRoomTypes(data) + }) + }, []) + + const handleNewRoomTypeInputChange = (e) => { + setNewRoomType(e.target.value) + } + + const handleAddNewRoomType = () => { + if (newRoomType !== "") { + setRoomTypes([...roomTypes, newRoomType]) + setNewRoomType("") + setShowNewRoomTypeInput(false) + } + } + + return ( + <> + {roomTypes.length > 0 && ( +
    + + {showNewRoomTypeInput && ( +
    +
    + + +
    +
    + )} +
    + )} + + ) +} + +export default RoomTypeSelector diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/home/Home.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/home/Home.jsx new file mode 100644 index 0000000..cde99b2 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/home/Home.jsx @@ -0,0 +1,34 @@ +import React, { useContext } from "react" +import MainHeader from "../layout/MainHeader" +import HotelService from "../common/HotelService" +import Parallax from "../common/Parallax" +import RoomCarousel from "../common/RoomCarousel" +import RoomSearch from "../common/RoomSearch" +import { useLocation } from "react-router-dom" +import { useAuth } from "../auth/AuthProvider" +const Home = () => { + const location = useLocation() + + const message = location.state && location.state.message + const currentUser = localStorage.getItem("userId") + return ( +
    + {message &&

    {message}

    } + {currentUser && ( +
    You are logged-In as {currentUser}
    + )} + +
    + + + + + + + +
    +
    + ) +} + +export default Home diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/Footer.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/Footer.jsx new file mode 100644 index 0000000..48c9a5b --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/Footer.jsx @@ -0,0 +1,19 @@ +import React from "react" +import { Col, Container, Row } from "react-bootstrap" + +const Footer = () => { + let today = new Date() + return ( +
    + + + +

    © {today.getFullYear()} lakeSide Hotel

    + +
    +
    +
    + ) +} + +export default Footer diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/MainHeader.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/MainHeader.jsx new file mode 100644 index 0000000..a4b6657 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/MainHeader.jsx @@ -0,0 +1,17 @@ +import React from "react" + +const MainHeader = () => { + return ( +
    +
    +
    +

    + Welcome to lakeSide Hotel +

    +

    Experience the Best Hospitality in Town

    +
    +
    + ) +} + +export default MainHeader diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/NavBar.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/NavBar.jsx new file mode 100644 index 0000000..8a3a2f6 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/layout/NavBar.jsx @@ -0,0 +1,91 @@ +import React, { useContext, useState } from "react" +import { NavLink, Link } from "react-router-dom" +import Logout from "../auth/Logout" + + +const NavBar = () => { + const [showAccount, setShowAccount] = useState(false) + + const handleAccountClick = () => { + setShowAccount(!showAccount) + } + + const isLoggedIn = localStorage.getItem("token") + const userRole = localStorage.getItem("userRole") + + return ( +
    + ) +} + +export default NavBar diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/AddRoom.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/AddRoom.jsx new file mode 100644 index 0000000..6c2bf7e --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/AddRoom.jsx @@ -0,0 +1,132 @@ +import React, { useState } from "react" +import { addRoom } from "../utils/ApiFunctions" +import RoomTypeSelector from "../common/RoomTypeSelector" +import { Link } from "react-router-dom" + +const AddRoom = () => { + const [newRoom, setNewRoom] = useState({ + photo: null, + roomType: "", + roomPrice: "" + }) + + const [successMessage, setSuccessMessage] = useState("") + const [errorMessage, setErrorMessage] = useState("") + const [imagePreview, setImagePreview] = useState("") + + const handleRoomInputChange = (e) => { + const name = e.target.name + let value = e.target.value + if (name === "roomPrice") { + if (!isNaN(value)) { + value = parseInt(value) + } else { + value = "" + } + } + setNewRoom({ ...newRoom, [name]: value }) + } + + const handleImageChange = (e) => { + const selectedImage = e.target.files[0] + setNewRoom({ ...newRoom, photo: selectedImage }) + setImagePreview(URL.createObjectURL(selectedImage)) + } + + const handleSubmit = async (e) => { + e.preventDefault() + try { + const success = await addRoom(newRoom.photo, newRoom.roomType, newRoom.roomPrice) + if (success !== undefined) { + setSuccessMessage("A new room was added successfully !") + setNewRoom({ photo: null, roomType: "", roomPrice: "" }) + setImagePreview("") + setErrorMessage("") + } else { + setErrorMessage("Error adding new room") + } + } catch (error) { + setErrorMessage(error.message) + } + setTimeout(() => { + setSuccessMessage("") + setErrorMessage("") + }, 3000) + } + + return ( + <> +
    +
    +
    +

    Add a New Room

    + {successMessage && ( +
    {successMessage}
    + )} + + {errorMessage &&
    {errorMessage}
    } + +
    +
    + +
    + +
    +
    +
    + + +
    + +
    + + + {imagePreview && ( + Preview  room photo + )} +
    +
    + + Existing rooms + + +
    +
    +
    +
    +
    + + ) +} + +export default AddRoom diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/EditRoom.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/EditRoom.jsx new file mode 100644 index 0000000..426e7eb --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/EditRoom.jsx @@ -0,0 +1,140 @@ +import React, { useEffect, useState } from "react" +import { getRoomById, updateRoom } from "../utils/ApiFunctions" +import { Link, useParams } from "react-router-dom" + +const EditRoom = () => { + const [room, setRoom] = useState({ + photo: "", + roomType: "", + roomPrice: "" + }) + + const [imagePreview, setImagePreview] = useState("") + const [successMessage, setSuccessMessage] = useState("") + const [errorMessage, setErrorMessage] = useState("") + const { roomId } = useParams() + + const handleImageChange = (e) => { + const selectedImage = e.target.files[0] + setRoom({ ...room, photo: selectedImage }) + setImagePreview(URL.createObjectURL(selectedImage)) + } + + const handleInputChange = (event) => { + const { name, value } = event.target + setRoom({ ...room, [name]: value }) + } + + useEffect(() => { + const fetchRoom = async () => { + try { + const roomData = await getRoomById(roomId) + setRoom(roomData) + setImagePreview(roomData.photo) + } catch (error) { + console.error(error) + } + } + + fetchRoom() + }, [roomId]) + + const handleSubmit = async (e) => { + e.preventDefault() + + try { + const response = await updateRoom(roomId, room) + if (response.status === 200) { + setSuccessMessage("Room updated successfully!") + const updatedRoomData = await getRoomById(roomId) + setRoom(updatedRoomData) + setImagePreview(updatedRoomData.photo) + setErrorMessage("") + } else { + setErrorMessage("Error updating room") + } + } catch (error) { + console.error(error) + setErrorMessage(error.message) + } + } + + return ( +
    +

    Edit Room

    +
    +
    + {successMessage && ( +
    + {successMessage} +
    + )} + {errorMessage && ( +
    + {errorMessage} +
    + )} +
    +
    + + +
    +
    + + +
    + +
    + + + {imagePreview && ( + Room preview + )} +
    +
    + + back + + +
    +
    +
    +
    +
    + ) +} +export default EditRoom diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/ExistingRooms.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/ExistingRooms.jsx new file mode 100644 index 0000000..fb8790c --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/ExistingRooms.jsx @@ -0,0 +1,152 @@ +import React, { useEffect, useState } from "react" +import { deleteRoom, getAllRooms } from "../utils/ApiFunctions" +import { Col, Row } from "react-bootstrap" +import RoomFilter from "../common/RoomFilter" +import RoomPaginator from "../common/RoomPaginator" +import { FaEdit, FaEye, FaPlus, FaTrashAlt } from "react-icons/fa" +import { Link } from "react-router-dom" + +const ExistingRooms = () => { + const [rooms, setRooms] = useState([{ id: "", roomType: "", roomPrice: "" }]) + const [currentPage, setCurrentPage] = useState(1) + const [roomsPerPage] = useState(8) + const [isLoading, setIsLoading] = useState(false) + const [filteredRooms, setFilteredRooms] = useState([{ id: "", roomType: "", roomPrice: "" }]) + const [selectedRoomType, setSelectedRoomType] = useState("") + const [errorMessage, setErrorMessage] = useState("") + const [successMessage, setSuccessMessage] = useState("") + + useEffect(() => { + fetchRooms() + }, []) + + const fetchRooms = async () => { + setIsLoading(true) + try { + const result = await getAllRooms() + setRooms(result) + setIsLoading(false) + } catch (error) { + setErrorMessage(error.message) + setIsLoading(false) + } + } + + useEffect(() => { + if (selectedRoomType === "") { + setFilteredRooms(rooms) + } else { + const filteredRooms = rooms.filter((room) => room.roomType === selectedRoomType) + setFilteredRooms(filteredRooms) + } + setCurrentPage(1) + }, [rooms, selectedRoomType]) + + const handlePaginationClick = (pageNumber) => { + setCurrentPage(pageNumber) + } + + const handleDelete = async (roomId) => { + try { + const result = await deleteRoom(roomId) + if (result === "") { + setSuccessMessage(`Room No ${roomId} was delete`) + fetchRooms() + } else { + console.error(`Error deleting room : ${result.message}`) + } + } catch (error) { + setErrorMessage(error.message) + } + setTimeout(() => { + setSuccessMessage("") + setErrorMessage("") + }, 3000) + } + + const calculateTotalPages = (filteredRooms, roomsPerPage, rooms) => { + const totalRooms = filteredRooms.length > 0 ? filteredRooms.length : rooms.length + return Math.ceil(totalRooms / roomsPerPage) + } + + const indexOfLastRoom = currentPage * roomsPerPage + const indexOfFirstRoom = indexOfLastRoom - roomsPerPage + const currentRooms = filteredRooms.slice(indexOfFirstRoom, indexOfLastRoom) + + return ( + <> +
    + {successMessage &&

    {successMessage}

    } + + {errorMessage &&

    {errorMessage}

    } +
    + + {isLoading ? ( +

    Loading existing rooms

    + ) : ( + <> +
    +
    +

    Existing Rooms

    +
    + + + + + + + + + Add Room + + + + + + + + + + + + + + + + {currentRooms.map((room) => ( + + + + + + + ))} + +
    IDRoom TypeRoom PriceActions
    {room.id}{room.roomType}{room.roomPrice} + + + + + + + + + +
    + +
    + + )} + + ) +} + +export default ExistingRooms diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/Room.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/Room.jsx new file mode 100644 index 0000000..b110f90 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/Room.jsx @@ -0,0 +1,81 @@ +import React, { useEffect, useState } from "react" +import { getAllRooms } from "../utils/ApiFunctions" +import RoomCard from "./RoomCard" +import { Col, Container, Row } from "react-bootstrap" +import RoomFilter from "../common/RoomFilter" +import RoomPaginator from "../common/RoomPaginator" + +const Room = () => { + const [data, setData] = useState([]) + const [error, setError] = useState(null) + const [isLoading, setIsLoading] = useState(false) + const [currentPage, setCurrentPage] = useState(1) + const [roomsPerPage] = useState(6) + const [filteredData, setFilteredData] = useState([{ id: "" }]) + + useEffect(() => { + setIsLoading(true) + getAllRooms() + .then((data) => { + setData(data) + setFilteredData(data) + setIsLoading(false) + }) + .catch((error) => { + setError(error.message) + setIsLoading(false) + }) + }, []) + if (isLoading) { + return
    Loading rooms.....
    + } + if (error) { + return
    Error : {error}
    + } + + const handlePageChange = (pageNumber) => { + setCurrentPage(pageNumber) + } + + const totalPages = Math.ceil(filteredData.length / roomsPerPage) + + const renderRooms = () => { + const startIndex = (currentPage - 1) * roomsPerPage + const endIndex = startIndex + roomsPerPage + return filteredData + .slice(startIndex, endIndex) + .map((room) => ) + } + + return ( + + + + + + + + + + + + {renderRooms()} + + + + + + + + ) +} + +export default Room diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomCard.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomCard.jsx new file mode 100644 index 0000000..59d8285 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomCard.jsx @@ -0,0 +1,36 @@ +import React, { useContext } from "react" +import { Card, Col } from "react-bootstrap" +import { Link } from "react-router-dom" + +const RoomCard = ({ room }) => { + return ( + + + +
    + + + +
    +
    + {room.roomType} + {room.roomPrice} / night + Some room information goes here for the guest to read through +
    +
    + + Book Now + +
    +
    +
    + + ) +} + +export default RoomCard diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomListing.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomListing.jsx new file mode 100644 index 0000000..23daf12 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/room/RoomListing.jsx @@ -0,0 +1,12 @@ +import React from "react" +import Room from "./Room" + +const RoomListing = () => { + return ( +
    + +
    + ) +} + +export default RoomListing diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/utils/ApiFunctions.js b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/utils/ApiFunctions.js new file mode 100644 index 0000000..8f8642e --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/components/utils/ApiFunctions.js @@ -0,0 +1,219 @@ +import axios from "axios" + +export const api = axios.create({ + baseURL: "http://localhost:9192" +}) + +export const getHeader = () => { + const token = localStorage.getItem("token") + return { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json" + } +} + +/* This function adds a new room room to the database */ +export async function addRoom(photo, roomType, roomPrice) { + const formData = new FormData() + formData.append("photo", photo) + formData.append("roomType", roomType) + formData.append("roomPrice", roomPrice) + + const response = await api.post("/rooms/add/new-room", formData,{ + headers: getHeader() + }) + if (response.status === 201) { + return true + } else { + return false + } +} + +/* This function gets all room types from thee database */ +export async function getRoomTypes() { + try { + const response = await api.get("/rooms/room/types") + return response.data + } catch (error) { + throw new Error("Error fetching room types") + } +} +/* This function gets all rooms from the database */ +export async function getAllRooms() { + try { + const result = await api.get("/rooms/all-rooms") + return result.data + } catch (error) { + throw new Error("Error fetching rooms") + } +} + +/* This function deletes a room by the Id */ +export async function deleteRoom(roomId) { + try { + const result = await api.delete(`/rooms/delete/room/${roomId}`, { + headers: getHeader() + }) + return result.data + } catch (error) { + throw new Error(`Error deleting room ${error.message}`) + } +} +/* This function update a room */ +export async function updateRoom(roomId, roomData) { + const formData = new FormData() + formData.append("roomType", roomData.roomType) + formData.append("roomPrice", roomData.roomPrice) + formData.append("photo", roomData.photo) + const response = await api.put(`/rooms/update/${roomId}`, formData,{ + headers: getHeader() + }) + return response +} + +/* This funcction gets a room by the id */ +export async function getRoomById(roomId) { + try { + const result = await api.get(`/rooms/room/${roomId}`) + return result.data + } catch (error) { + throw new Error(`Error fetching room ${error.message}`) + } +} + +/* This function saves a new booking to the databse */ +export async function bookRoom(roomId, booking) { + try { + const response = await api.post(`/bookings/room/${roomId}/booking`, booking) + return response.data + } catch (error) { + if (error.response && error.response.data) { + throw new Error(error.response.data) + } else { + throw new Error(`Error booking room : ${error.message}`) + } + } +} + +/* This function gets alll bokings from the database */ +export async function getAllBookings() { + try { + const result = await api.get("/bookings/all-bookings", { + headers: getHeader() + }) + return result.data + } catch (error) { + throw new Error(`Error fetching bookings : ${error.message}`) + } +} + +/* This function get booking by the cnfirmation code */ +export async function getBookingByConfirmationCode(confirmationCode) { + try { + const result = await api.get(`/bookings/confirmation/${confirmationCode}`) + return result.data + } catch (error) { + if (error.response && error.response.data) { + throw new Error(error.response.data) + } else { + throw new Error(`Error find booking : ${error.message}`) + } + } +} + +/* This is the function to cancel user booking */ +export async function cancelBooking(bookingId) { + try { + const result = await api.delete(`/bookings/booking/${bookingId}/delete`) + return result.data + } catch (error) { + throw new Error(`Error cancelling booking :${error.message}`) + } +} + +/* This function gets all availavle rooms from the database with a given date and a room type */ +export async function getAvailableRooms(checkInDate, checkOutDate, roomType) { + const result = await api.get( + `rooms/available-rooms?checkInDate=${checkInDate} + &checkOutDate=${checkOutDate}&roomType=${roomType}` + ) + return result +} + +/* This function register a new user */ +export async function registerUser(registration) { + try { + const response = await api.post("/auth/register-user", registration) + return response.data + } catch (error) { + if (error.reeponse && error.response.data) { + throw new Error(error.response.data) + } else { + throw new Error(`User registration error : ${error.message}`) + } + } +} + +/* This function login a registered user */ +export async function loginUser(login) { + try { + const response = await api.post("/auth/login", login) + if (response.status >= 200 && response.status < 300) { + return response.data + } else { + return null + } + } catch (error) { + console.error(error) + return null + } +} + +/* This is function to get the user profile */ +export async function getUserProfile(userId, token) { + try { + const response = await api.get(`users/profile/${userId}`, { + headers: getHeader() + }) + return response.data + } catch (error) { + throw error + } +} + +/* This isthe function to delete a user */ +export async function deleteUser(userId) { + try { + const response = await api.delete(`/users/delete/${userId}`, { + headers: getHeader() + }) + return response.data + } catch (error) { + return error.message + } +} + +/* This is the function to get a single user */ +export async function getUser(userId, token) { + try { + const response = await api.get(`/users/${userId}`, { + headers: getHeader() + }) + return response.data + } catch (error) { + throw error + } +} + +/* This is the function to get user bookings by the user id */ +export async function getBookingsByUserId(userId, token) { + try { + const response = await api.get(`/bookings/user/${userId}/bookings`, { + headers: getHeader() + }) + return response.data + } catch (error) { + console.error("Error fetching bookings:", error.message) + throw new Error("Failed to fetch bookings") + } +} diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/index.css b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/index.css new file mode 100644 index 0000000..f7ba894 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/index.css @@ -0,0 +1,228 @@ +body { + min-height: 100vh; + padding-bottom: 50px; +} +.card { + opacity: 0.9; +} + +/* Navigation bar definitions */ + .navbar{ + padding: 0; + } + .navbar .navbar-nav .nav-link{ + padding: 1em; + } + .navbar .navbar-nav .nav-item{ + position: relative; + } + + .navbar .navbar-nav .nav-item::after{ + position: absolute; + bottom: 0; + left: 0; + right: 0; + content: ''; + background-color:rgb(169, 77, 123) ; + width: 0; + margin: 0 auto; + height: 4px; + transition: all .5s; + } + .navbar .navbar-nav .nav-item:hover::after{ + width: 100%; + } + .navbar-dark .navbar-nav .nav-link { + color: rgb(25, 24, 24); +} + +.navbar-dark .navbar-brand { + color: rgb(25, 24, 24); +} + + @media screen and (min-width: 992px){ + .navbar{ + padding: 0; + } + .navbar .navbar-nav .nav-link{ + padding: 1em 0; + } + .navbar .navbar-nav .nav-item{ + margin: 0 1em; + } + } + + /* Hotel custom color */ + .btn-hotel{ + background-color: rgb(169, 77, 123); + color: #fff; + } + .btn-hotel:hover{ + background-color: rgb(137, 127, 132); + color: #fff; + transition: 0.7s; + outline-color: transparent; + outline-style:solid; + + } + + .hotel-color{ + color: rgb(169, 77, 123); + } + .room-price{ + color:darkgoldenrod; + font-family: 'Courier New', Courier, monospace; + font-size:medium; + } + .vertical-rule{ + border-left: '0.5px solid black'; + height: '100vh' + } + + + +.parallax { + background-image: url("./assets/images/parrall.jpg"); + background-attachment: fixed; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + height: 50vh; +} + +.header { + position: relative; + height: 150px; + background-size: cover; + background-image: url("./assets/images/services4.jpg"); + background-position: center center; +} +.header-title { + color: #fff; + font-size: 4rem; + align-content: center; +} + +.parallax { + margin-top: 50px; + color: white; + text-shadow: 2px 2px black; +} + +.animated { + animation-duration: 1s; +} + +.animated-texts h1 { + animation: fadeInDown 1s ease-in-out; +} + +.animated-texts p, h1, h2 { + animation: fadeInUp 1s ease-in-out; +} + +@keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + transform: translate3d(0,0,0); + } + + 40%, 60% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -30px, 0); + } + + 70% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -15px, 0); + } + + 90% { + transform: translate3d(0,-4px,0); + } +} + +.bounceIn { + animation-name: bounceIn; +} + +@keyframes fadeInDown { + from { + opacity: 0; + transform: translate3d(0, -50%, 0); + } + + to { + opacity: 1; + transform: none; + } +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translate3d(0, 50%, 0); + } + + to { + opacity: 1; + transform: none; + } +} +/* Header overlay */ + .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + } + .overlay-content { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: #fff; + justify-content: flex-start; + } + +/* The header banner */ +.header-banner { + background-image: url("./assets/images/services-1.jpg"); + background-size: cover; + background-position: center; + position: relative; + height: 80vh; + } + +.header-banner { + position: relative; + height: 500px; +} + +@media only screen and (max-width: 768px) { + .header-banner h1 { + font-size: 20px; + } +} + +@media only screen and (max-width: 480px) { + .header-banner h1 { + font-size: 16px; + } +} + + .footer { + position: fixed; + left: 0; + bottom: 0; + width: 100%; + background-color: #f5f5f5; + height: 60px; + text-align: center; +} + + + + diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/main.jsx b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/main.jsx new file mode 100644 index 0000000..54b39dd --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/src/main.jsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + , +) diff --git a/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/vite.config.js b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/vite.config.js new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/client/flexycode-hotel-client-main/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw new file mode 100644 index 0000000..66df285 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw.cmd b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw.cmd new file mode 100644 index 0000000..95ba6f5 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/pom.xml b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/pom.xml new file mode 100644 index 0000000..4143db9 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.1.4 + + + com.dailycodework + lakeSide-hotel + 0.0.1-SNAPSHOT + lakeSide-hotel + lakeSide-hotel + + 17 + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-validation + + + + com.mysql + mysql-connector-j + runtime + + + org.projectlombok + lombok + true + + + + + com.fasterxml.jackson.core + jackson-databind + 2.15.2 + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + io.jsonwebtoken + jjwt-api + 0.11.5 + + + + io.jsonwebtoken + jjwt-impl + 0.11.5 + runtime + + + + io.jsonwebtoken + jjwt-jackson + 0.11.5 + runtime + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/LakeSideHotelApplication.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/LakeSideHotelApplication.java new file mode 100644 index 0000000..2280650 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/LakeSideHotelApplication.java @@ -0,0 +1,13 @@ +package com.dailycodework.lakesidehotel; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LakeSideHotelApplication { + + public static void main(String[] args) { + SpringApplication.run(LakeSideHotelApplication.class, args); + } + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/AuthController.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/AuthController.java new file mode 100644 index 0000000..37a502c --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/AuthController.java @@ -0,0 +1,67 @@ +package com.dailycodework.lakesidehotel.controller; + +import com.dailycodework.lakesidehotel.exception.UserAlreadyExistsException; +import com.dailycodework.lakesidehotel.model.User; +import com.dailycodework.lakesidehotel.request.LoginRequest; +import com.dailycodework.lakesidehotel.response.JwtResponse; +import com.dailycodework.lakesidehotel.security.jwt.JwtUtils; +import com.dailycodework.lakesidehotel.security.user.HotelUserDetails; +import com.dailycodework.lakesidehotel.service.IUserService; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; +import org.springframework.http.ResponseEntity; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +/** + * @author Simpson Alfred + */ +@RestController +@RequestMapping("/auth") +@RequiredArgsConstructor +public class AuthController { + private final IUserService userService; + private final AuthenticationManager authenticationManager; + private final JwtUtils jwtUtils; + + @PostMapping("/register-user") + public ResponseEntity registerUser(@RequestBody User user){ + try{ + userService.registerUser(user); + return ResponseEntity.ok("Registration successful!"); + + }catch (UserAlreadyExistsException e){ + return ResponseEntity.status(HttpStatus.CONFLICT).body(e.getMessage()); + } + } + + @PostMapping("/login") + public ResponseEntity authenticateUser(@Valid @RequestBody LoginRequest request){ + Authentication authentication = + authenticationManager + .authenticate(new UsernamePasswordAuthenticationToken(request.getEmail(), request.getPassword())); + SecurityContextHolder.getContext().setAuthentication(authentication); + String jwt = jwtUtils.generateJwtTokenForUser(authentication); + HotelUserDetails userDetails = (HotelUserDetails) authentication.getPrincipal(); + List roles = userDetails.getAuthorities() + .stream() + .map(GrantedAuthority::getAuthority).toList(); + return ResponseEntity.ok(new JwtResponse( + userDetails.getId(), + userDetails.getEmail(), + jwt, + roles)); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/BookingController.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/BookingController.java new file mode 100644 index 0000000..6313edc --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/BookingController.java @@ -0,0 +1,97 @@ +package com.dailycodework.lakesidehotel.controller; + +import com.dailycodework.lakesidehotel.exception.InvalidBookingRequestException; +import com.dailycodework.lakesidehotel.exception.ResourceNotFoundException; +import com.dailycodework.lakesidehotel.model.BookedRoom; +import com.dailycodework.lakesidehotel.model.Room; +import com.dailycodework.lakesidehotel.response.BookingResponse; +import com.dailycodework.lakesidehotel.response.RoomResponse; +import com.dailycodework.lakesidehotel.service.IBookingService; +import com.dailycodework.lakesidehotel.service.IRoomService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Simpson Alfred + */ + +@RequiredArgsConstructor +@RestController +@RequestMapping("/bookings") +public class BookingController { + private final IBookingService bookingService; + private final IRoomService roomService; + + @GetMapping("/all-bookings") + @PreAuthorize("hasRole('ROLE_ADMIN')") + public ResponseEntity> getAllBookings(){ + List bookings = bookingService.getAllBookings(); + List bookingResponses = new ArrayList<>(); + for (BookedRoom booking : bookings){ + BookingResponse bookingResponse = getBookingResponse(booking); + bookingResponses.add(bookingResponse); + } + return ResponseEntity.ok(bookingResponses); + } + + @PostMapping("/room/{roomId}/booking") + public ResponseEntity saveBooking(@PathVariable Long roomId, + @RequestBody BookedRoom bookingRequest){ + try{ + String confirmationCode = bookingService.saveBooking(roomId, bookingRequest); + return ResponseEntity.ok( + "Room booked successfully, Your booking confirmation code is :"+confirmationCode); + + }catch (InvalidBookingRequestException e){ + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping("/confirmation/{confirmationCode}") + public ResponseEntity getBookingByConfirmationCode(@PathVariable String confirmationCode){ + try{ + BookedRoom booking = bookingService.findByBookingConfirmationCode(confirmationCode); + BookingResponse bookingResponse = getBookingResponse(booking); + return ResponseEntity.ok(bookingResponse); + }catch (ResourceNotFoundException ex){ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); + } + } + + @GetMapping("/user/{email}/bookings") + public ResponseEntity> getBookingsByUserEmail(@PathVariable String email) { + List bookings = bookingService.getBookingsByUserEmail(email); + List bookingResponses = new ArrayList<>(); + for (BookedRoom booking : bookings) { + BookingResponse bookingResponse = getBookingResponse(booking); + bookingResponses.add(bookingResponse); + } + return ResponseEntity.ok(bookingResponses); + } + + @DeleteMapping("/booking/{bookingId}/delete") + public void cancelBooking(@PathVariable Long bookingId){ + bookingService.cancelBooking(bookingId); + } + + private BookingResponse getBookingResponse(BookedRoom booking) { + Room theRoom = roomService.getRoomById(booking.getRoom().getId()).get(); + RoomResponse room = new RoomResponse( + theRoom.getId(), + theRoom.getRoomType(), + theRoom.getRoomPrice()); + return new BookingResponse( + booking.getBookingId(), booking.getCheckInDate(), + booking.getCheckOutDate(),booking.getGuestFullName(), + booking.getGuestEmail(), booking.getNumOfAdults(), + booking.getNumOfChildren(), booking.getTotalNumOfGuest(), + booking.getBookingConfirmationCode(), room); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoleController.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoleController.java new file mode 100644 index 0000000..c8b6c9d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoleController.java @@ -0,0 +1,63 @@ +package com.dailycodework.lakesidehotel.controller; + +import com.dailycodework.lakesidehotel.exception.RoleAlreadyExistException; +import com.dailycodework.lakesidehotel.model.Role; +import com.dailycodework.lakesidehotel.model.User; +import com.dailycodework.lakesidehotel.service.IRoleService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static org.springframework.http.HttpStatus.FOUND; + +/** + * @author Simpson Alfred + */ + +@RestController +@RequestMapping("/roles") +@RequiredArgsConstructor +public class RoleController { + private final IRoleService roleService; + + @GetMapping("/all-roles") + public ResponseEntity> getAllRoles(){ + return new ResponseEntity<>(roleService.getRoles(), FOUND); + } + + @PostMapping("/create-new-role") + public ResponseEntity createRole(@RequestBody Role theRole){ + try{ + roleService.createRole(theRole); + return ResponseEntity.ok("New role created successfully!"); + }catch(RoleAlreadyExistException re){ + return ResponseEntity.status(HttpStatus.CONFLICT).body(re.getMessage()); + + } + } + @DeleteMapping("/delete/{roleId}") + public void deleteRole(@PathVariable("roleId") Long roleId){ + roleService.deleteRole(roleId); + } + @PostMapping("/remove-all-users-from-role/{roleId}") + public Role removeAllUsersFromRole(@PathVariable("roleId") Long roleId){ + return roleService.removeAllUsersFromRole(roleId); + } + + @PostMapping("/remove-user-from-role") + public User removeUserFromRole( + @RequestParam("userId") Long userId, + @RequestParam("roleId") Long roleId){ + return roleService.removeUserFromRole(userId, roleId); + } + @PostMapping("/assign-user-to-role") + public User assignUserToRole( + @RequestParam("userId") Long userId, + @RequestParam("roleId") Long roleId){ + return roleService.assignRoleToUser(userId, roleId); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoomController.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoomController.java new file mode 100644 index 0000000..b989579 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/RoomController.java @@ -0,0 +1,156 @@ +package com.dailycodework.lakesidehotel.controller; + +import com.dailycodework.lakesidehotel.exception.PhotoRetrievalException; +import com.dailycodework.lakesidehotel.exception.ResourceNotFoundException; +import com.dailycodework.lakesidehotel.model.BookedRoom; +import com.dailycodework.lakesidehotel.model.Room; +import com.dailycodework.lakesidehotel.response.BookingResponse; +import com.dailycodework.lakesidehotel.response.RoomResponse; +import com.dailycodework.lakesidehotel.service.BookingService; +import com.dailycodework.lakesidehotel.service.IRoomService; +import lombok.RequiredArgsConstructor; +import org.apache.tomcat.util.codec.binary.Base64; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.sql.rowset.serial.SerialBlob; +import java.io.IOException; +import java.math.BigDecimal; +import java.sql.Blob; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +@RestController +@RequiredArgsConstructor +@RequestMapping("/rooms") +public class RoomController { + private final IRoomService roomService; + private final BookingService bookingService; + + @PostMapping("/add/new-room") + @PreAuthorize("hasRole('ROLE_ADMIN')") + public ResponseEntity addNewRoom( + @RequestParam("photo") MultipartFile photo, + @RequestParam("roomType") String roomType, + @RequestParam("roomPrice") BigDecimal roomPrice) throws SQLException, IOException { + Room savedRoom = roomService.addNewRoom(photo, roomType, roomPrice); + RoomResponse response = new RoomResponse(savedRoom.getId(), savedRoom.getRoomType(), + savedRoom.getRoomPrice()); + return ResponseEntity.ok(response); + } + + @GetMapping("/room/types") + public List getRoomTypes() { + return roomService.getAllRoomTypes(); + } + + @GetMapping("/all-rooms") + public ResponseEntity> getAllRooms() throws SQLException { + List rooms = roomService.getAllRooms(); + List roomResponses = new ArrayList<>(); + for (Room room : rooms) { + byte[] photoBytes = roomService.getRoomPhotoByRoomId(room.getId()); + if (photoBytes != null && photoBytes.length > 0) { + String base64Photo = Base64.encodeBase64String(photoBytes); + RoomResponse roomResponse = getRoomResponse(room); + roomResponse.setPhoto(base64Photo); + roomResponses.add(roomResponse); + } + } + return ResponseEntity.ok(roomResponses); + } + @DeleteMapping("/delete/room/{roomId}") + @PreAuthorize("hasRole('ROLE_ADMIN')") + public ResponseEntity deleteRoom(@PathVariable Long roomId){ + roomService.deleteRoom(roomId); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PutMapping("/update/{roomId}") + @PreAuthorize("hasRole('ROLE_ADMIN')") + public ResponseEntity updateRoom(@PathVariable Long roomId, + @RequestParam(required = false) String roomType, + @RequestParam(required = false) BigDecimal roomPrice, + @RequestParam(required = false) MultipartFile photo) throws SQLException, IOException { + byte[] photoBytes = photo != null && !photo.isEmpty() ? + photo.getBytes() : roomService.getRoomPhotoByRoomId(roomId); + Blob photoBlob = photoBytes != null && photoBytes.length >0 ? new SerialBlob(photoBytes): null; + Room theRoom = roomService.updateRoom(roomId, roomType, roomPrice, photoBytes); + theRoom.setPhoto(photoBlob); + RoomResponse roomResponse = getRoomResponse(theRoom); + return ResponseEntity.ok(roomResponse); + } + + @GetMapping("/room/{roomId}") + public ResponseEntity> getRoomById(@PathVariable Long roomId){ + Optional theRoom = roomService.getRoomById(roomId); + return theRoom.map(room -> { + RoomResponse roomResponse = getRoomResponse(room); + return ResponseEntity.ok(Optional.of(roomResponse)); + }).orElseThrow(() -> new ResourceNotFoundException("Room not found")); + } + + @GetMapping("/available-rooms") + public ResponseEntity> getAvailableRooms( + @RequestParam("checkInDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate checkInDate, + @RequestParam("checkOutDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)LocalDate checkOutDate, + @RequestParam("roomType") String roomType) throws SQLException { + List availableRooms = roomService.getAvailableRooms(checkInDate, checkOutDate, roomType); + List roomResponses = new ArrayList<>(); + for (Room room : availableRooms){ + byte[] photoBytes = roomService.getRoomPhotoByRoomId(room.getId()); + if (photoBytes != null && photoBytes.length > 0){ + String photoBase64 = Base64.encodeBase64String(photoBytes); + RoomResponse roomResponse = getRoomResponse(room); + roomResponse.setPhoto(photoBase64); + roomResponses.add(roomResponse); + } + } + if(roomResponses.isEmpty()){ + return ResponseEntity.noContent().build(); + }else{ + return ResponseEntity.ok(roomResponses); + } + } + + + + + private RoomResponse getRoomResponse(Room room) { + List bookings = getAllBookingsByRoomId(room.getId()); + List bookingInfo = bookings + .stream() + .map(booking -> new BookingResponse(booking.getBookingId(), + booking.getCheckInDate(), + booking.getCheckOutDate(), booking.getBookingConfirmationCode())).toList(); + byte[] photoBytes = null; + Blob photoBlob = room.getPhoto(); + if (photoBlob != null) { + try { + photoBytes = photoBlob.getBytes(1, (int) photoBlob.length()); + } catch (SQLException e) { + throw new PhotoRetrievalException("Error retrieving photo"); + } + } + return new RoomResponse(room.getId(), + room.getRoomType(), room.getRoomPrice(), + room.isBooked(), photoBytes, bookingInfo); + } + + private List getAllBookingsByRoomId(Long roomId) { + return bookingService.getAllBookingsByRoomId(roomId); + + } + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/UserController.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/UserController.java new file mode 100644 index 0000000..241a663 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/controller/UserController.java @@ -0,0 +1,57 @@ +package com.dailycodework.lakesidehotel.controller; + +import com.dailycodework.lakesidehotel.model.User; +import com.dailycodework.lakesidehotel.service.IUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author Simpson Alfred + */ + +@RestController +@RequestMapping("/users") +@RequiredArgsConstructor +public class UserController { + private final IUserService userService; + + @GetMapping("/all") + @PreAuthorize("hasRole('ROLE_ADMIN')") + public ResponseEntity> getUsers(){ + + return new ResponseEntity<>(userService.getUsers(), HttpStatus.FOUND); + } + + @GetMapping("/{email}") + @PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')") + public ResponseEntity getUserByEmail(@PathVariable("email") String email){ + try{ + User theUser = userService.getUser(email); + return ResponseEntity.ok(theUser); + }catch (UsernameNotFoundException e){ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + }catch (Exception e){ + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error fetching user"); + } + } + @DeleteMapping("/delete/{userId}") + @PreAuthorize("hasRole('ROLE_ADMIN') or (hasRole('ROLE_USER') and #email == principal.username)") + public ResponseEntity deleteUser(@PathVariable("userId") String email){ + try{ + userService.deleteUser(email); + return ResponseEntity.ok("User deleted successfully"); + }catch (UsernameNotFoundException e){ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + }catch (Exception e){ + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error deleting user: " + e.getMessage()); + } + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InternalServerException.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InternalServerException.java new file mode 100644 index 0000000..6ebdb55 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InternalServerException.java @@ -0,0 +1,11 @@ +package com.dailycodework.lakesidehotel.exception; + +/** + * @author Simpson Alfred + */ + +public class InternalServerException extends RuntimeException { + public InternalServerException(String message) { + super(message); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InvalidBookingRequestException.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InvalidBookingRequestException.java new file mode 100644 index 0000000..15c7a51 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/InvalidBookingRequestException.java @@ -0,0 +1,11 @@ +package com.dailycodework.lakesidehotel.exception; + +/** + * @author Simpson Alfred + */ + +public class InvalidBookingRequestException extends RuntimeException { + public InvalidBookingRequestException(String message) { + super(message); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/PhotoRetrievalException.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/PhotoRetrievalException.java new file mode 100644 index 0000000..63ea34a --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/PhotoRetrievalException.java @@ -0,0 +1,11 @@ +package com.dailycodework.lakesidehotel.exception; + +/** + * @author Simpson Alfred + */ + +public class PhotoRetrievalException extends RuntimeException { + public PhotoRetrievalException(String message) { + super(message); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/ResourceNotFoundException.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/ResourceNotFoundException.java new file mode 100644 index 0000000..4e73926 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/ResourceNotFoundException.java @@ -0,0 +1,11 @@ +package com.dailycodework.lakesidehotel.exception; + +/** + * @author Simpson Alfred + */ + +public class ResourceNotFoundException extends RuntimeException { + public ResourceNotFoundException(String message) { + super(message); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/RoleAlreadyExistException.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/RoleAlreadyExistException.java new file mode 100644 index 0000000..f78d7a8 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/RoleAlreadyExistException.java @@ -0,0 +1,11 @@ +package com.dailycodework.lakesidehotel.exception; + +/** + * @author Simpson Alfred + */ + +public class RoleAlreadyExistException extends RuntimeException { + public RoleAlreadyExistException(String message) { + super(message); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/UserAlreadyExistsException.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/UserAlreadyExistsException.java new file mode 100644 index 0000000..333730b --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/exception/UserAlreadyExistsException.java @@ -0,0 +1,11 @@ +package com.dailycodework.lakesidehotel.exception; + +/** + * @author Simpson Alfred + */ + +public class UserAlreadyExistsException extends RuntimeException{ + public UserAlreadyExistsException(String message) { + super(message); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/BookedRoom.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/BookedRoom.java new file mode 100644 index 0000000..a10c594 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/BookedRoom.java @@ -0,0 +1,69 @@ +package com.dailycodework.lakesidehotel.model; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDate; + +/** + * @author Simpson Alfred + */ +@Entity +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class BookedRoom { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long bookingId; + + @Column(name = "check_in") + private LocalDate checkInDate; + + @Column(name = "check_out") + private LocalDate checkOutDate; + + @Column(name = "guest_fullName") + private String guestFullName; + + @Column(name = "guest_email") + private String guestEmail; + + @Column(name = "adults") + private int NumOfAdults; + + @Column(name = "children") + private int NumOfChildren; + + @Column(name = "total_guest") + private int totalNumOfGuest; + + @Column(name = "confirmation_Code") + private String bookingConfirmationCode; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "room_id") + private Room room; + + public void calculateTotalNumberOfGuest(){ + this.totalNumOfGuest = this.NumOfAdults + NumOfChildren; + } + + public void setNumOfAdults(int numOfAdults) { + NumOfAdults = numOfAdults; + calculateTotalNumberOfGuest(); + } + + public void setNumOfChildren(int numOfChildren) { + NumOfChildren = numOfChildren; + calculateTotalNumberOfGuest(); + } + + public void setBookingConfirmationCode(String bookingConfirmationCode) { + this.bookingConfirmationCode = bookingConfirmationCode; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Role.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Role.java new file mode 100644 index 0000000..f4545ed --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Role.java @@ -0,0 +1,54 @@ +package com.dailycodework.lakesidehotel.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.Collection; +import java.util.HashSet; +import java.util.List; + +/** + * @author Simpson Alfred + */ +@Entity +@Getter +@Setter +@NoArgsConstructor +public class Role { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + + @JsonIgnore + @ManyToMany(mappedBy = "roles") + private Collection users = new HashSet<>(); + + public Role(String name) { + this.name = name; + } + + public void assignRoleToUser(User user){ + user.getRoles().add(this); + this.getUsers().add(user); + } + + public void removeUserFromRole(User user){ + user.getRoles().remove(this); + this.getUsers().remove(user); + + } + + public void removeAllUsersFromRole(){ + if (this.getUsers() != null){ + List roleUsers = this.getUsers().stream().toList(); + roleUsers.forEach(this :: removeUserFromRole); + } + } + public String getName(){ + return name != null? name : ""; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Room.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Room.java new file mode 100644 index 0000000..f134383 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/Room.java @@ -0,0 +1,47 @@ +package com.dailycodework.lakesidehotel.model; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.lang3.RandomStringUtils; + +import java.math.BigDecimal; +import java.sql.Blob; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Simpson Alfred + */ +@Entity +@Getter +@Setter +@AllArgsConstructor +public class Room { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String roomType; + private BigDecimal roomPrice; + private boolean isBooked = false; + @Lob + private Blob photo; + + @OneToMany(mappedBy="room", fetch = FetchType.LAZY, cascade = CascadeType.ALL) + private List bookings; + + public Room() { + this.bookings = new ArrayList<>(); + } + public void addBooking(BookedRoom booking){ + if (bookings == null){ + bookings = new ArrayList<>(); + } + bookings.add(booking); + booking.setRoom(this); + isBooked = true; + String bookingCode = RandomStringUtils.randomNumeric(10); + booking.setBookingConfirmationCode(bookingCode); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/User.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/User.java new file mode 100644 index 0000000..1388518 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/model/User.java @@ -0,0 +1,38 @@ +package com.dailycodework.lakesidehotel.model; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.ManyToAny; + +import java.util.Collection; +import java.util.HashSet; +import java.util.List; + +/** + * @author Simpson Alfred + */ +@Entity +@Getter +@Setter +@NoArgsConstructor +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String firstName; + private String lastName; + private String email; + private String password; + @ManyToMany(fetch = FetchType.EAGER, + cascade = {CascadeType.PERSIST, + CascadeType.MERGE, CascadeType.DETACH}) + @JoinTable(name = "user_roles", + joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")) + private Collection roles = new HashSet<>(); + + + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/BookingRepository.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/BookingRepository.java new file mode 100644 index 0000000..6676dff --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/BookingRepository.java @@ -0,0 +1,20 @@ +package com.dailycodework.lakesidehotel.repository; + +import com.dailycodework.lakesidehotel.model.BookedRoom; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +public interface BookingRepository extends JpaRepository { + + List findByRoomId(Long roomId); + + Optional findByBookingConfirmationCode(String confirmationCode); + + List findByGuestEmail(String email); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoleRepository.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoleRepository.java new file mode 100644 index 0000000..048d3e8 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoleRepository.java @@ -0,0 +1,18 @@ +package com.dailycodework.lakesidehotel.repository; + +import com.dailycodework.lakesidehotel.model.Role; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +public interface RoleRepository extends JpaRepository { + + Optional findByName(String role); + + + boolean existsByName(String role); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoomRepository.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoomRepository.java new file mode 100644 index 0000000..45beb7f --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/RoomRepository.java @@ -0,0 +1,28 @@ +package com.dailycodework.lakesidehotel.repository; + +import com.dailycodework.lakesidehotel.model.Room; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.time.LocalDate; +import java.util.List; + +/** + * @author Simpson Alfred + */ + +public interface RoomRepository extends JpaRepository { + + @Query("SELECT DISTINCT r.roomType FROM Room r") + List findDistinctRoomTypes(); + + @Query(" SELECT r FROM Room r " + + " WHERE r.roomType LIKE %:roomType% " + + " AND r.id NOT IN (" + + " SELECT br.room.id FROM BookedRoom br " + + " WHERE ((br.checkInDate <= :checkOutDate) AND (br.checkOutDate >= :checkInDate))" + + ")") + + List findAvailableRoomsByDatesAndType(LocalDate checkInDate, LocalDate checkOutDate, String roomType); +} + diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/UserRepository.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/UserRepository.java new file mode 100644 index 0000000..81d26fa --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/repository/UserRepository.java @@ -0,0 +1,18 @@ +package com.dailycodework.lakesidehotel.repository; + +import com.dailycodework.lakesidehotel.model.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +public interface UserRepository extends JpaRepository { + boolean existsByEmail(String email); + + void deleteByEmail(String email); + + Optional findByEmail(String email); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/request/LoginRequest.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/request/LoginRequest.java new file mode 100644 index 0000000..75c089a --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/request/LoginRequest.java @@ -0,0 +1,15 @@ +package com.dailycodework.lakesidehotel.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @author Simpson Alfred + */ +@Data +public class LoginRequest { + @NotBlank + private String email; + @NotBlank + private String password; +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/BookingResponse.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/BookingResponse.java new file mode 100644 index 0000000..e0308dc --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/BookingResponse.java @@ -0,0 +1,45 @@ +package com.dailycodework.lakesidehotel.response; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +/** + * @author Simpson Alfred + */ + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BookingResponse { + + private Long id; + + private LocalDate checkInDate; + + private LocalDate checkOutDate; + + private String guestName; + + private String guestEmail; + + private int numOfAdults; + + private int numOfChildren; + + private int totalNumOfGuests; + + private String bookingConfirmationCode; + + private RoomResponse room; + + public BookingResponse(Long id, LocalDate checkInDate, LocalDate checkOutDate, + String bookingConfirmationCode) { + this.id = id; + this.checkInDate = checkInDate; + this.checkOutDate = checkOutDate; + this.bookingConfirmationCode = bookingConfirmationCode; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/JwtResponse.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/JwtResponse.java new file mode 100644 index 0000000..764866d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/JwtResponse.java @@ -0,0 +1,30 @@ +package com.dailycodework.lakesidehotel.response; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author Simpson Alfred + */ + +@Data + +@NoArgsConstructor +public class JwtResponse { + private Long id; + private String email; + private String token; + private String type = "Bearer"; + private List roles; + + public JwtResponse(Long id, String email, String token, List roles) { + this.id = id; + this.email = email; + this.token = token; + this.roles = roles; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/RoomResponse.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/RoomResponse.java new file mode 100644 index 0000000..d077d1a --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/response/RoomResponse.java @@ -0,0 +1,40 @@ +package com.dailycodework.lakesidehotel.response; + + +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.tomcat.util.codec.binary.Base64; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author Simpson Alfred + */ +@Data +@NoArgsConstructor +public class RoomResponse { + private Long id; + private String roomType; + private BigDecimal roomPrice; + private boolean isBooked; + private String photo; + private Listbookings; + + public RoomResponse(Long id, String roomType, BigDecimal roomPrice) { + this.id = id; + this.roomType = roomType; + this.roomPrice = roomPrice; + } + + public RoomResponse(Long id, String roomType, BigDecimal roomPrice, boolean isBooked, + byte[] photoBytes , List bookings) { + this.id = id; + this.roomType = roomType; + this.roomPrice = roomPrice; + this.isBooked = isBooked; + this.photo = photoBytes != null ? Base64.encodeBase64String(photoBytes) : null; + this.bookings = bookings; + } + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/CorsConfig.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/CorsConfig.java new file mode 100644 index 0000000..5b95f39 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/CorsConfig.java @@ -0,0 +1,47 @@ +package com.dailycodework.lakesidehotel.security; + +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import java.util.Arrays; + +/** + * @author Simpson Alfred + */ + +@Configuration +@EnableWebMvc +public class CorsConfig { + + private static final Long MAX_AGE = 3600L; + private static final int CORS_FILTER_ORDER = -102; + + @Bean + public FilterRegistrationBean corsFilter() { + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + CorsConfiguration config = new CorsConfiguration(); + config.setAllowCredentials(true); + config.addAllowedOrigin("http://localhost:5173"); + config.setAllowedHeaders(Arrays.asList( + HttpHeaders.AUTHORIZATION, + HttpHeaders.CONTENT_TYPE, + HttpHeaders.ACCEPT)); + config.setAllowedMethods(Arrays.asList( + HttpMethod.GET.name(), + HttpMethod.POST.name(), + HttpMethod.PUT.name(), + HttpMethod.DELETE.name())); + config.setMaxAge(MAX_AGE); + source.registerCorsConfiguration("/**", config); + FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source)); + bean.setOrder(CORS_FILTER_ORDER); + return bean; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/WebSecurityConfig.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/WebSecurityConfig.java new file mode 100644 index 0000000..d71fe90 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/WebSecurityConfig.java @@ -0,0 +1,75 @@ +package com.dailycodework.lakesidehotel.security; +import com.dailycodework.lakesidehotel.security.jwt.AuthTokenFilter; +import com.dailycodework.lakesidehotel.security.jwt.JwtAuthEntryPoint; +import com.dailycodework.lakesidehotel.security.user.HotelUserDetailsService; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + + +/** + * @author Simpson Alfred + */ +@Configuration +@RequiredArgsConstructor +@EnableMethodSecurity(securedEnabled = true, jsr250Enabled = true, prePostEnabled = true) +public class WebSecurityConfig { + private final HotelUserDetailsService userDetailsService; + private final JwtAuthEntryPoint jwtAuthEntryPoint; + + @Bean + public AuthTokenFilter authenticationTokenFilter(){ + return new AuthTokenFilter(); + } + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public DaoAuthenticationProvider authenticationProvider() { + var authProvider = new DaoAuthenticationProvider(); + authProvider.setUserDetailsService(userDetailsService); + authProvider.setPasswordEncoder(passwordEncoder()); + return authProvider; + } + + @Bean + public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception { + return authConfig.getAuthenticationManager(); + } + + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http.csrf(AbstractHttpConfigurer :: disable) + .exceptionHandling( + exception -> exception.authenticationEntryPoint(jwtAuthEntryPoint)) + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + .authorizeHttpRequests(auth -> auth + .requestMatchers("/auth/**", "/rooms/**","/bookings/**") + .permitAll().requestMatchers("/roles/**").hasRole("ADMIN") + .anyRequest().authenticated()); + http.authenticationProvider(authenticationProvider()); + http.addFilterBefore(authenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class); + return http.build(); + } + + + + + + + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/AuthTokenFilter.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/AuthTokenFilter.java new file mode 100644 index 0000000..54cdd37 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/AuthTokenFilter.java @@ -0,0 +1,60 @@ +package com.dailycodework.lakesidehotel.security.jwt; + +import com.dailycodework.lakesidehotel.security.user.HotelUserDetailsService; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.util.StringUtils; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +/** + * @author Simpson Alfred + */ + +public class AuthTokenFilter extends OncePerRequestFilter { + + @Autowired + private JwtUtils jwtUtils; + + @Autowired + private HotelUserDetailsService userDetailsService; + private static final Logger logger = LoggerFactory.getLogger(AuthTokenFilter.class); + @Override + protected void doFilterInternal(HttpServletRequest request, + HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + try{ + String jwt = parseJwt(request); + if (jwt != null && jwtUtils.validateToken(jwt)){ + String email = jwtUtils.getUserNameFromToken(jwt); + UserDetails userDetails = userDetailsService.loadUserByUsername(email); + var authentication = + new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + }catch (Exception e){ + logger.error("Cannot set user authentication : {} ", e.getMessage()); + } + filterChain.doFilter(request, response); + } + + private String parseJwt(HttpServletRequest request) { + String headerAuth = request.getHeader("Authorization"); + if (StringUtils.hasText(headerAuth) && headerAuth.startsWith("Bearer ")){ + return headerAuth.substring(7); + } + return null; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtAuthEntryPoint.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtAuthEntryPoint.java new file mode 100644 index 0000000..64641ac --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtAuthEntryPoint.java @@ -0,0 +1,46 @@ +package com.dailycodework.lakesidehotel.security.jwt; + +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.MediaType; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + + +/** + * @author Simpson Alfred + */ + +@Component +public class JwtAuthEntryPoint implements AuthenticationEntryPoint { + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, + AuthenticationException authException) throws IOException, ServletException { + + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + + final Map body = new HashMap<>(); + body.put("status", HttpServletResponse.SC_UNAUTHORIZED); + body.put("error", "Unauthorized"); + body.put("message", authException.getMessage()); + body.put("path", request.getServletPath()); + + final ObjectMapper mapper = new ObjectMapper(); + mapper.writeValue(response.getOutputStream(), body); + } +} + + + + diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtUtils.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtUtils.java new file mode 100644 index 0000000..790b8be --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/jwt/JwtUtils.java @@ -0,0 +1,72 @@ +package com.dailycodework.lakesidehotel.security.jwt; + +import com.dailycodework.lakesidehotel.security.user.HotelUserDetails; +import io.jsonwebtoken.*; +import io.jsonwebtoken.io.Decoders; +import io.jsonwebtoken.security.Keys; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Component; + +import java.security.Key; +import java.util.Date; +import java.util.List; + + +/** + * @author Simpson Alfred + */ + +@Component +public class JwtUtils { + private static final Logger logger = LoggerFactory.getLogger(JwtUtils.class); + + @Value("${auth.token.jwtSecret}") + private String jwtSecret; + + @Value("${auth.token.expirationInMils}") + private int jwtExpirationMs; + + public String generateJwtTokenForUser(Authentication authentication){ + HotelUserDetails userPrincipal = (HotelUserDetails) authentication.getPrincipal(); + List roles = userPrincipal.getAuthorities() + .stream() + .map(GrantedAuthority::getAuthority).toList(); + return Jwts.builder() + .setSubject(userPrincipal.getUsername()) + .claim("roles", roles) + .setIssuedAt(new Date()) + .setExpiration(new Date((new Date()).getTime()+jwtExpirationMs)) + .signWith(key(), SignatureAlgorithm.HS256).compact(); + } + + private Key key() { + return Keys.hmacShaKeyFor(Decoders.BASE64.decode(jwtSecret)); + } + public String getUserNameFromToken(String token){ + return Jwts.parserBuilder() + .setSigningKey(key()) + .build() + .parseClaimsJws(token).getBody().getSubject(); + } + public boolean validateToken(String token){ + try{ + Jwts.parserBuilder().setSigningKey(key()).build().parse(token); + return true; + }catch(MalformedJwtException e){ + logger.error("Invalid jwt token : {} ", e.getMessage()); + }catch (ExpiredJwtException e){ + logger.error("Expired token : {} ", e.getMessage()); + }catch (UnsupportedJwtException e){ + logger.error("This token is not supported : {} ", e.getMessage()); + }catch (IllegalArgumentException e){ + logger.error("No claims found : {} ", e.getMessage()); + } + return false; + } + + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetails.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetails.java new file mode 100644 index 0000000..e23dd0d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetails.java @@ -0,0 +1,79 @@ +package com.dailycodework.lakesidehotel.security.user; + +import com.dailycodework.lakesidehotel.model.User; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Simpson Alfred + */ + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class HotelUserDetails implements UserDetails { + private Long id; + private String email; + private String password; + private Collection authorities; + + public static HotelUserDetails buildUserDetails(User user){ + List authorities = user.getRoles() + .stream() + .map(role -> new SimpleGrantedAuthority(role.getName())) + .collect(Collectors.toList()); + return new HotelUserDetails( + user.getId(), + user.getEmail(), + user.getPassword(), + authorities); + + } + + + + @Override + public Collection getAuthorities() { + return authorities; + } + + @Override + public String getPassword() { + return password; + } + + @Override + public String getUsername() { + return email; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetailsService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetailsService.java new file mode 100644 index 0000000..8dbc56e --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/security/user/HotelUserDetailsService.java @@ -0,0 +1,25 @@ +package com.dailycodework.lakesidehotel.security.user; + +import com.dailycodework.lakesidehotel.model.User; +import com.dailycodework.lakesidehotel.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +/** + * @author Simpson Alfred + */ +@Service +@RequiredArgsConstructor +public class HotelUserDetailsService implements UserDetailsService { + private final UserRepository userRepository; + + @Override + public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { + User user = userRepository.findByEmail(email) + .orElseThrow(() -> new UsernameNotFoundException("User not found")); + return HotelUserDetails.buildUserDetails(user); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/BookingService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/BookingService.java new file mode 100644 index 0000000..6d55d53 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/BookingService.java @@ -0,0 +1,94 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.exception.InvalidBookingRequestException; +import com.dailycodework.lakesidehotel.exception.ResourceNotFoundException; +import com.dailycodework.lakesidehotel.model.BookedRoom; +import com.dailycodework.lakesidehotel.model.Room; +import com.dailycodework.lakesidehotel.repository.BookingRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import java.util.List; + +/** + * @author Simpson Alfred + */ + +@Service +@RequiredArgsConstructor +public class BookingService implements IBookingService { + private final BookingRepository bookingRepository; + private final IRoomService roomService; + + + @Override + public List getAllBookings() { + return bookingRepository.findAll(); + } + + + @Override + public List getBookingsByUserEmail(String email) { + return bookingRepository.findByGuestEmail(email); + } + + @Override + public void cancelBooking(Long bookingId) { + bookingRepository.deleteById(bookingId); + } + + @Override + public List getAllBookingsByRoomId(Long roomId) { + return bookingRepository.findByRoomId(roomId); + } + + @Override + public String saveBooking(Long roomId, BookedRoom bookingRequest) { + if (bookingRequest.getCheckOutDate().isBefore(bookingRequest.getCheckInDate())){ + throw new InvalidBookingRequestException("Check-in date must come before check-out date"); + } + Room room = roomService.getRoomById(roomId).get(); + List existingBookings = room.getBookings(); + boolean roomIsAvailable = roomIsAvailable(bookingRequest,existingBookings); + if (roomIsAvailable){ + room.addBooking(bookingRequest); + bookingRepository.save(bookingRequest); + }else{ + throw new InvalidBookingRequestException("Sorry, This room is not available for the selected dates;"); + } + return bookingRequest.getBookingConfirmationCode(); + } + + @Override + public BookedRoom findByBookingConfirmationCode(String confirmationCode) { + return bookingRepository.findByBookingConfirmationCode(confirmationCode) + .orElseThrow(() -> new ResourceNotFoundException("No booking found with booking code :"+confirmationCode)); + + } + + + private boolean roomIsAvailable(BookedRoom bookingRequest, List existingBookings) { + return existingBookings.stream() + .noneMatch(existingBooking -> + bookingRequest.getCheckInDate().equals(existingBooking.getCheckInDate()) + || bookingRequest.getCheckOutDate().isBefore(existingBooking.getCheckOutDate()) + || (bookingRequest.getCheckInDate().isAfter(existingBooking.getCheckInDate()) + && bookingRequest.getCheckInDate().isBefore(existingBooking.getCheckOutDate())) + || (bookingRequest.getCheckInDate().isBefore(existingBooking.getCheckInDate()) + + && bookingRequest.getCheckOutDate().equals(existingBooking.getCheckOutDate())) + || (bookingRequest.getCheckInDate().isBefore(existingBooking.getCheckInDate()) + + && bookingRequest.getCheckOutDate().isAfter(existingBooking.getCheckOutDate())) + + || (bookingRequest.getCheckInDate().equals(existingBooking.getCheckOutDate()) + && bookingRequest.getCheckOutDate().equals(existingBooking.getCheckInDate())) + + || (bookingRequest.getCheckInDate().equals(existingBooking.getCheckOutDate()) + && bookingRequest.getCheckOutDate().equals(bookingRequest.getCheckInDate())) + ); + } + + + + +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IBookingService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IBookingService.java new file mode 100644 index 0000000..b6154fe --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IBookingService.java @@ -0,0 +1,23 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.model.BookedRoom; + +import java.util.List; + +/** + * @author Simpson Alfred + */ + +public interface IBookingService { + void cancelBooking(Long bookingId); + + List getAllBookingsByRoomId(Long roomId); + + String saveBooking(Long roomId, BookedRoom bookingRequest); + + BookedRoom findByBookingConfirmationCode(String confirmationCode); + + List getAllBookings(); + + List getBookingsByUserEmail(String email); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoleService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoleService.java new file mode 100644 index 0000000..36e8fcd --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoleService.java @@ -0,0 +1,22 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.model.Role; +import com.dailycodework.lakesidehotel.model.User; + +import java.util.List; + +/** + * @author Simpson Alfred + */ + +public interface IRoleService { + List getRoles(); + Role createRole(Role theRole); + + void deleteRole(Long id); + Role findByName(String name); + + User removeUserFromRole(Long userId, Long roleId); + User assignRoleToUser(Long userId, Long roleId); + Role removeAllUsersFromRole(Long roleId); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoomService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoomService.java new file mode 100644 index 0000000..9dbfc2c --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IRoomService.java @@ -0,0 +1,33 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.model.Room; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.math.BigDecimal; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +public interface IRoomService { + Room addNewRoom(MultipartFile photo, String roomType, BigDecimal roomPrice) throws SQLException, IOException; + + List getAllRoomTypes(); + + List getAllRooms(); + + byte[] getRoomPhotoByRoomId(Long roomId) throws SQLException; + + void deleteRoom(Long roomId); + + Room updateRoom(Long roomId, String roomType, BigDecimal roomPrice, byte[] photoBytes); + + Optional getRoomById(Long roomId); + + List getAvailableRooms(LocalDate checkInDate, LocalDate checkOutDate, String roomType); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IUserService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IUserService.java new file mode 100644 index 0000000..982a36d --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/IUserService.java @@ -0,0 +1,16 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.model.User; + +import java.util.List; + +/** + * @author Simpson Alfred + */ + +public interface IUserService { + User registerUser(User user); + List getUsers(); + void deleteUser(String email); + User getUser(String email); +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoleService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoleService.java new file mode 100644 index 0000000..aebac62 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoleService.java @@ -0,0 +1,85 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.exception.RoleAlreadyExistException; +import com.dailycodework.lakesidehotel.exception.UserAlreadyExistsException; +import com.dailycodework.lakesidehotel.model.Role; +import com.dailycodework.lakesidehotel.model.User; +import com.dailycodework.lakesidehotel.repository.RoleRepository; +import com.dailycodework.lakesidehotel.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +@Service +@RequiredArgsConstructor +public class RoleService implements IRoleService { + private final RoleRepository roleRepository; + private final UserRepository userRepository; + + @Override + public List getRoles() { + return roleRepository.findAll(); + } + + @Override + public Role createRole(Role theRole) { + String roleName = "ROLE_"+theRole.getName().toUpperCase(); + Role role = new Role(roleName); + if (roleRepository.existsByName(roleName)){ + throw new RoleAlreadyExistException(theRole.getName()+" role already exists"); + } + return roleRepository.save(role); + } + + @Override + public void deleteRole(Long roleId) { + this.removeAllUsersFromRole(roleId); + roleRepository.deleteById(roleId); + } + + @Override + public Role findByName(String name) { + return roleRepository.findByName(name).get(); + } + + @Override + public User removeUserFromRole(Long userId, Long roleId) { + Optional user = userRepository.findById(userId); + Optional role = roleRepository.findById(roleId); + if (role.isPresent() && role.get().getUsers().contains(user.get())){ + role.get().removeUserFromRole(user.get()); + roleRepository.save(role.get()); + return user.get(); + } + throw new UsernameNotFoundException("User not found"); + } + + @Override + public User assignRoleToUser(Long userId, Long roleId) { + Optional user = userRepository.findById(userId); + Optional role = roleRepository.findById(roleId); + if (user.isPresent() && user.get().getRoles().contains(role.get())){ + throw new UserAlreadyExistsException( + user.get().getFirstName()+ " is already assigned to the" + role.get().getName()+ " role"); + } + if (role.isPresent()){ + role.get().assignRoleToUser(user.get()); + roleRepository.save(role.get()); + } + return user.get(); + } + + @Override + public Role removeAllUsersFromRole(Long roleId) { + Optional role = roleRepository.findById(roleId); + role.ifPresent(Role::removeAllUsersFromRole); + return roleRepository.save(role.get()); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoomService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoomService.java new file mode 100644 index 0000000..56458ab --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/RoomService.java @@ -0,0 +1,96 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.exception.InternalServerException; +import com.dailycodework.lakesidehotel.exception.ResourceNotFoundException; +import com.dailycodework.lakesidehotel.model.Room; +import com.dailycodework.lakesidehotel.repository.RoomRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.sql.rowset.serial.SerialBlob; +import java.io.IOException; +import java.math.BigDecimal; +import java.sql.Blob; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +/** + * @author Simpson Alfred + */ + +@Service +@RequiredArgsConstructor +public class RoomService implements IRoomService { + private final RoomRepository roomRepository; + @Override + public Room addNewRoom(MultipartFile file, String roomType, BigDecimal roomPrice) throws SQLException, IOException { + Room room = new Room(); + room.setRoomType(roomType); + room.setRoomPrice(roomPrice); + if (!file.isEmpty()){ + byte[] photoBytes = file.getBytes(); + Blob photoBlob = new SerialBlob(photoBytes); + room.setPhoto(photoBlob); + } + return roomRepository.save(room); + } + + @Override + public List getAllRoomTypes() { + return roomRepository.findDistinctRoomTypes(); + } + + @Override + public List getAllRooms() { + return roomRepository.findAll(); + } + + @Override + public byte[] getRoomPhotoByRoomId(Long roomId) throws SQLException { + Optional theRoom = roomRepository.findById(roomId); + if(theRoom.isEmpty()){ + throw new ResourceNotFoundException("Sorry, Room not found!"); + } + Blob photoBlob = theRoom.get().getPhoto(); + if(photoBlob != null){ + return photoBlob.getBytes(1, (int) photoBlob.length()); + } + return null; + } + + @Override + public void deleteRoom(Long roomId) { + Optional theRoom = roomRepository.findById(roomId); + if(theRoom.isPresent()){ + roomRepository.deleteById(roomId); + } + } + + @Override + public Room updateRoom(Long roomId, String roomType, BigDecimal roomPrice, byte[] photoBytes) { + Room room = roomRepository.findById(roomId).get(); + if (roomType != null) room.setRoomType(roomType); + if (roomPrice != null) room.setRoomPrice(roomPrice); + if (photoBytes != null && photoBytes.length > 0) { + try { + room.setPhoto(new SerialBlob(photoBytes)); + } catch (SQLException ex) { + throw new InternalServerException("Fail updating room"); + } + } + return roomRepository.save(room); + } + + @Override + public Optional getRoomById(Long roomId) { + return Optional.of(roomRepository.findById(roomId).get()); + } + + @Override + public List getAvailableRooms(LocalDate checkInDate, LocalDate checkOutDate, String roomType) { + return roomRepository.findAvailableRoomsByDatesAndType(checkInDate, checkOutDate, roomType); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/UserService.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/UserService.java new file mode 100644 index 0000000..135e547 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/java/com/dailycodework/lakesidehotel/service/UserService.java @@ -0,0 +1,60 @@ +package com.dailycodework.lakesidehotel.service; + +import com.dailycodework.lakesidehotel.exception.UserAlreadyExistsException; +import com.dailycodework.lakesidehotel.model.Role; +import com.dailycodework.lakesidehotel.model.User; +import com.dailycodework.lakesidehotel.repository.RoleRepository; +import com.dailycodework.lakesidehotel.repository.UserRepository; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @author Simpson Alfred + */ + +@Service +@RequiredArgsConstructor +public class UserService implements IUserService { + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + private final RoleRepository roleRepository; + + @Override + public User registerUser(User user) { + if (userRepository.existsByEmail(user.getEmail())){ + throw new UserAlreadyExistsException(user.getEmail() + " already exists"); + } + user.setPassword(passwordEncoder.encode(user.getPassword())); + System.out.println(user.getPassword()); + Role userRole = roleRepository.findByName("ROLE_USER").get(); + user.setRoles(Collections.singletonList(userRole)); + return userRepository.save(user); + } + + @Override + public List getUsers() { + return userRepository.findAll(); + } + + @Transactional + @Override + public void deleteUser(String email) { + User theUser = getUser(email); + if (theUser != null){ + userRepository.deleteByEmail(email); + } + + } + + @Override + public User getUser(String email) { + return userRepository.findByEmail(email) + .orElseThrow(() -> new UsernameNotFoundException("User not found")); + } +} diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.properties b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.properties new file mode 100644 index 0000000..5085fb5 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.properties @@ -0,0 +1,25 @@ +server.port=9192 + +spring.datasource.url=jdbc:mysql://localhost:3306/lakeSide_hotel_db +spring.datasource.username=root +spring.datasource.password=admin + +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQLDialect + + +spring.servlet.multipart.max-file-size=500KB +spring.servlet.multipart.max-request-size=500KB + +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.hibernate.ddl-auto=update + + +logging.level.org.hibernate.SQL=DEBUG +logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE + +# App Properties + +auth.token.expirationInMils=3600000 +auth.token.jwtSecret=36763979244226452948404D635166546A576D5A7134743777217A25432A462D diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.yml b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.yml new file mode 100644 index 0000000..5398c81 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/main/resources/application.yml @@ -0,0 +1,40 @@ +#server: +# port: 9192 +# +#spring: +# datasource: +# username: root +# password: admin +# url: jdbc:mysql://localhost:3306/lakeSide_hotel_db +# driver-class-name: com.mysql.cj.jdbc.Driver +# jpa: +# show-sql: true +# hibernate: +# ddl-auto: update +# format_sql: true +# servlet: +# multipart: +# max-file-size: 5MB +# max-request-size: 5MB +# file-size-threshold: 2KB +# +# security: +# jwt: +# secret-key: 36763979244226452948404D635166546A576D5A7134743777217A25432A462D +# expire-length: 3600000 +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# +# diff --git a/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/test/java/com/dailycodework/lakesidehotel/LakeSideHotelApplicationTests.java b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/test/java/com/dailycodework/lakesidehotel/LakeSideHotelApplicationTests.java new file mode 100644 index 0000000..7e64a96 --- /dev/null +++ b/XSampleCode/Hotel-DeLuna/server/flexycode-hotel-server-master/src/test/java/com/dailycodework/lakesidehotel/LakeSideHotelApplicationTests.java @@ -0,0 +1,13 @@ +package com.dailycodework.lakesidehotel; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class LakeSideHotelApplicationTests { + + @Test + void contextLoads() { + } + +} From 10e8c86c37b6bcc9c1ce5fcb901b8ae741d2e08e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 8 Jun 2024 03:38:22 +0800 Subject: [PATCH 124/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 16693ad..726f71b 100644 --- a/README.md +++ b/README.md @@ -231,10 +231,15 @@ To be follow - ✨ ## [6.1.1] - 2024-06-01    +### Activity +- 💻 Long Quiz No. 2 + +## [6.1.1] - 2024-06-08    - ✨ Coming Soon - ✨ Coming Soon ### Activity -- 💻 Long Quiz No. 2 +- 💻 Coming Soon + From aa7e0c99cb136b624ef059d5bb1c7cf08e8baf52 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 10 Jun 2024 00:02:51 +0800 Subject: [PATCH 125/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 726f71b..6c8396e 100644 --- a/README.md +++ b/README.md @@ -192,7 +192,7 @@ To be follow - ✨ Fixed build structure ## [4.1.4] - 2024-05-04  -- ✨ Discussion regarding recursion +- ✨ Discussion regarding recursion  - ✨ Added Source code for recursion ### Activity @@ -228,7 +228,7 @@ To be follow ## [5.1.2] - 2024-05-25          ### Added  - ✨ Added Polymorphism code example -- ✨ + ## [6.1.1] - 2024-06-01    ### Activity From 37749883ae3e2885177bb9ba6441b8fe2e65e1d1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 12 Jun 2024 17:10:39 +0800 Subject: [PATCH 126/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6c8396e..c7d2f6b 100644 --- a/README.md +++ b/README.md @@ -234,13 +234,16 @@ To be follow ### Activity - 💻 Long Quiz No. 2 -## [6.1.1] - 2024-06-08    -- ✨ Coming Soon +## [6.1.3] - 2024-06-08     +- ✨ Coming Soon   - ✨ Coming Soon ### Activity -- 💻 Coming Soon - +- 💻 Lab Lecture   +## [6.1.1] - 2024-06-15       +- ✨ Coming Soon  +- ✨ Coming Soon +  From 7d713d5150ae88764f2de50c99582d6294d8a69a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 15:47:25 +0000 Subject: [PATCH 127/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JButton=20sample1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JButton/sample1/App.java | 15 +++++++++++ week_9/JButton/sample1/Frame.java | 41 +++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 week_9/JButton/sample1/App.java create mode 100644 week_9/JButton/sample1/Frame.java diff --git a/week_9/JButton/sample1/App.java b/week_9/JButton/sample1/App.java new file mode 100644 index 0000000..ce900cc --- /dev/null +++ b/week_9/JButton/sample1/App.java @@ -0,0 +1,15 @@ +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(400, 400); + + // Makes the window appear + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/week_9/JButton/sample1/Frame.java b/week_9/JButton/sample1/Frame.java new file mode 100644 index 0000000..ecb3d50 --- /dev/null +++ b/week_9/JButton/sample1/Frame.java @@ -0,0 +1,41 @@ +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JTextField; +import java.awt.FlowLayout; +import javax.swing.JOptionPane; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class Frame extends JFrame { + + Frame() { + + // Set the title of the window/frame + super("My title"); + + setLayout(new FlowLayout()); + + // JButton Component + JButton button = new JButton("Click Here"); + + // Set component size + button.setBounds(50, 100, 95, 30); + + // Add JButton Component to frame/window + add(button); + + // Add event + EventHandler handler = new EventHandler(); + button.addActionListener(handler); + } + + // Event Handler Class + private class EventHandler implements ActionListener { + + public void actionPerformed(ActionEvent event) { + JOptionPane.showMessageDialog(null, "Hello"); + } + } +} \ No newline at end of file From 04dc7b781423ccfcd0b20241831558b053ac3509 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 15:50:44 +0000 Subject: [PATCH 128/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JButton=20sample2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JButton/sample2/App.java | 15 +++++++ week_9/JButton/sample2/Frame.java | 68 +++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 week_9/JButton/sample2/App.java create mode 100644 week_9/JButton/sample2/Frame.java diff --git a/week_9/JButton/sample2/App.java b/week_9/JButton/sample2/App.java new file mode 100644 index 0000000..269f36b --- /dev/null +++ b/week_9/JButton/sample2/App.java @@ -0,0 +1,15 @@ +public class App { + public static void main(String[] args) throws Exception { + + MyFrame frame = new MyFrame(); + + frame.setLayout(null); + // Makes frame visible + frame.setVisible(true); + // Sets frame size + frame.setSize(500, 500); + // Exit out of application + frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); + + } +} \ No newline at end of file diff --git a/week_9/JButton/sample2/Frame.java b/week_9/JButton/sample2/Frame.java new file mode 100644 index 0000000..59da272 --- /dev/null +++ b/week_9/JButton/sample2/Frame.java @@ -0,0 +1,68 @@ +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import java.awt.event.ActionListener; +import java.awt.Color; +import java.awt.Font; +import java.awt.event.ActionEvent; + +public class MyFrame extends JFrame { + + JButton button; + JLabel label; + + MyFrame() { + + ImageIcon icon = new ImageIcon("pointing.png"); + ImageIcon icon2 = new ImageIcon("smile.png"); + + label = new JLabel(); + label.setIcon(icon2); + label.setBounds(150, 250, 150, 150); + label.setVisible(false); + + button = new JButton("Click me"); + button.setBounds(100, 100, 250, 100); + button.setIcon(icon); + button.setHorizontalTextPosition(JButton.CENTER); + button.setVerticalTextPosition(JButton.BOTTOM); + button.setFont(new Font("Comic Sans", Font.BOLD, 25)); + button.setIconTextGap(-5); + button.setForeground(Color.CYAN); + button.setBackground(Color.LIGHT_GRAY); + button.setBorder(BorderFactory.createEtchedBorder()); + // Disables a button + // button.setEnabled(false); + + // How to add button event + // 1. Create an EventHandler Object + EventHandler eventhandler = new EventHandler(); + // 2. Add a ActionListener + button.addActionListener(eventhandler); + + // OR + + // Use a lambda expression + // With lambda expressions, you do not need to create a EventHandler class + // button.addActionListener(e -> JOptionPane.showMessageDialog(null, "HELLOO")); + + button.setFocusable(false); + this.add(button); + this.add(label); + + }; + + // Event Handler Class + private class EventHandler implements ActionListener { + + public void actionPerformed(ActionEvent event) { + // Causes button to be clicked only once + button.setEnabled(false); + label.setVisible(true); + } + } +} \ No newline at end of file From 52c2524c5cf52dc1caae7ab5ff77b7e6faeb51c8 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 23:53:43 +0800 Subject: [PATCH 129/183] =?UTF-8?q?=F0=9F=9A=80=20Add=20Two=20png=20file?= =?UTF-8?q?=20for=20the=20Sample2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JButton/sample2/pointing.png | Bin 0 -> 467 bytes week_9/JButton/sample2/smile.png | Bin 0 -> 1663 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 week_9/JButton/sample2/pointing.png create mode 100644 week_9/JButton/sample2/smile.png diff --git a/week_9/JButton/sample2/pointing.png b/week_9/JButton/sample2/pointing.png new file mode 100644 index 0000000000000000000000000000000000000000..93f0cabe01ef9d514bdb306e27998794999a202f GIT binary patch literal 467 zcmV;^0WAKBP)Ch;j957Ls}Iyn6S}z1REIfBnv{d*11EASERwMH79% z9#93IfK4EagRBASS5AR$9OL2-kszx$#!DNKCNPadJhu@E@&JtD2!|me3fKoSIKV=L zhyqq{fZmAqQa}S3#{sqkuW}3YV>y!o5e4kv0GC3Uc`Rp1C{hQ;u$TehRVY&eda#&n zp@_15g_(#U(u}*p%mPK=J;p~&r2-5~C6whkkgPBz3kp?&EJlgcEGSY560A6bVIoBf zid4dcE|$Sm__Cl#CCE`!d(8mnmQF48BabA^T!%zHOdS(UBvBf^h}`=kvhIsW7AX55 zk_SG05IOUuwcdOYDf=R_(IJUi(jr5^O$S7-(ZC3BWmu$uCQQFdUYCf;o$DBl+!>On z0y&)`%Z4PT&`cMwtGS(W7$VcUo}VOek*T*PVL|7Qos#lj_y#HH#(cSO+Z_M^002ov JPDHLkV1f)jx_STr literal 0 HcmV?d00001 diff --git a/week_9/JButton/sample2/smile.png b/week_9/JButton/sample2/smile.png new file mode 100644 index 0000000000000000000000000000000000000000..4668ab5aba9e7a680f798725db982e53bb3b5267 GIT binary patch literal 1663 zcmV-_27vjAP)s`MyJ4hgaI#GIG(Dz72K_gWrPI4V%%Lya~3%jj+aNby?#wJFT%94)FCF zn4?l)j$rUfFoh(*7!?1(=)iU4DH-UfWT0*iK0@_^JCcxzHNYzZ4-i_gT6 zsfQ=S6q*QQa6F7bacBup-yJ!;fp$psWR?w1@KL}swQbKBl)5b;3)Z+ySYy-wlX`N$ z)Z@?+7>kyG7&NbrY7qyoqFK@(bc}gzQ_r_R9FsnN1_J%dNn zs)+Mq@Xu(jWS|S<1ux$v^jus3+lEZ>)YrwLWo-Y)KMIX2!h0H5goTMEKhE%6 zT0++`)xWhqAoZkysRyXhyrwVpNCq!A_=fHhN`E}dra!!V$Dz&w6)Z8S{ZdctmpUsK zR_iSFNHndCK!abH+~^bXu2|_9=*@|Qmw$Jt^T;xoA`^#B-JjPwnpT9P!8cTH^a&D# ze@Y7_0~se8UcOC`s|g)nyar=P?7-AlIZ|)*3q!;55c$~~g7Ca_40Lp|;AN&NLdT({ zXby0uzS5C;qi-l0e1b6|c<9J$EQi!+;N{;O>NvOCr>W#}o(BKmUd!A=6%INix zq`&`Vz{`~c`4-{%0Z%me2BX0{5N&y$kjn|u4ayfwALJ(0(_b$OUjCIJ-z0Q?Js+I~ z^EteHgCLdBQxuZBvH?9sD8kpP0Q(6*vO8oif~@xyhrg!+EGK|oyF->D$XeeQ@LU!2 z0-mdkfa?@0VqmW#e6JaUMy~~Otx62OXNdVd7Rc4AVd3RpxPcFq>t9EwT$K$^9za=H z8B$YIq0wkiUS95iuoWtn4Nrc!`KCfw@IWd3sBEB)YFyPkFByRUI5;?%D=jU}xeBd{ zHP1`N)%@~d;F(HD`T8vB$n2_NT^q0|Hmqv{w&CGR3Ajc^krn86wcD_UWrHm{gJ3_e zsHkuNSdT02HmqTXoo_roJbVc^(4}nPq0_){TczHYH|*dhG(oQMQr;@HzPw?FoL}kX z3LdyBX27ht&)2GW!?K#?V#$lZ_wDo5D&DZ@o6nM0h6jEYDWO`bndn1GVXMTD@D2k4 zO18szL*J~{pUcHW=rtjqV zLI2YnMR;A|9PHfe$LA!(1c^N_J&4F?Jd3C8ZXy>a@` zB0N6rf%XzNv|n?><0227KDY?G-}2_)ux~SxR^#rs^F-i*i}dA);Q1=l(5uoNGK$oE zYpFX9zOO=bWZ;YY&2VDhe7;8o`$czAcoWXhq7fV5Chkz~NE+63WhM#_cw)~^Z)B(X zBPJ@4D?7y>@9p%)iF{9(&&?Dq8{iT*u$9I#q}%k>r0zCX`oUkI!()Qyt58VpQZ*I5 z1o(3(p_yYgz)e)qT&arAPa^zToT0hn0^iTXEUA(TCZlXHUdaz>q>{EtH_12w@GWC* zSYZ>lXrWX=N2Chs8VC3;w$I}dy*erI1B_JAGWKF7-JmC{cm!F`FLKV|tLQ@egT;B4#X|14;k@002ov JPDHLkV1h Date: Sat, 15 Jun 2024 15:56:24 +0000 Subject: [PATCH 130/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JCheckBox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JCheckBox/App.java | 16 ++++++++++ week_9/JCheckBox/Frame.java | 62 +++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 week_9/JCheckBox/App.java create mode 100644 week_9/JCheckBox/Frame.java diff --git a/week_9/JCheckBox/App.java b/week_9/JCheckBox/App.java new file mode 100644 index 0000000..9e4db2c --- /dev/null +++ b/week_9/JCheckBox/App.java @@ -0,0 +1,16 @@ +import javax.swing.JFrame; + +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(300, 200); + + // Makes the frame/window appear + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/week_9/JCheckBox/Frame.java b/week_9/JCheckBox/Frame.java new file mode 100644 index 0000000..a7a2d1c --- /dev/null +++ b/week_9/JCheckBox/Frame.java @@ -0,0 +1,62 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class Frame extends JFrame { + + private JTextField textField; + private JCheckBox checkBox1; + private JCheckBox checkBox2; + + public Frame() { + // Set the title of the window/frame + super("The title"); + setLayout(new FlowLayout()); + + // JTextField Component + textField = new JTextField("This is a sentence", 20); + textField.setFont(new Font("Serif", Font.PLAIN, 14)); + + // Add JTextField Component to frame/window + add(textField); + + // JCheckBox Component + checkBox1 = new JCheckBox("bold"); + + // JCheckBox Component + checkBox2 = new JCheckBox("italic"); + + // Add JCheckBox Component to frame/window + add(checkBox1); + + // Add JCheckBox Component to frame/window + add(checkBox2); + + // Add event + EventHandler handler = new EventHandler(); + checkBox1.addItemListener(handler); + checkBox2.addItemListener(handler); + + } + + // Event Handler Class + private class EventHandler implements ItemListener { + + public void itemStateChanged(ItemEvent event) { + Font font = null; + + if (checkBox1.isSelected() && checkBox2.isSelected()) { + font = new Font("Serif", Font.BOLD + Font.ITALIC, 14); + } else if (checkBox1.isSelected()) { + font = new Font("Serif", Font.BOLD, 14); + } else if (checkBox2.isSelected()) { + font = new Font("Serif", Font.ITALIC, 14); + } else { + font = new Font("Serif", Font.PLAIN, 14); + } + + textField.setFont(font); + } + } + +} \ No newline at end of file From 69b707a6f55e55c66ae93daa99d4bb6fdce565c8 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 15:59:38 +0000 Subject: [PATCH 131/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JComboBox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JComboBox/App.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 week_9/JComboBox/App.java diff --git a/week_9/JComboBox/App.java b/week_9/JComboBox/App.java new file mode 100644 index 0000000..28d5a6f --- /dev/null +++ b/week_9/JComboBox/App.java @@ -0,0 +1,17 @@ +import javax.swing.JFrame; + +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(300, 200); + + // Makes the window appear + frame.setVisible(true); + } +} \ No newline at end of file From 6840236bc05f77bfd0aaf6b203c849630f4128d9 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 16:03:22 +0000 Subject: [PATCH 132/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JComboBox=20Frame.?= =?UTF-8?q?java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JComboBox/Frame.java | 49 +++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 week_9/JComboBox/Frame.java diff --git a/week_9/JComboBox/Frame.java b/week_9/JComboBox/Frame.java new file mode 100644 index 0000000..6d0c0c9 --- /dev/null +++ b/week_9/JComboBox/Frame.java @@ -0,0 +1,49 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class Frame extends JFrame { + + private JComboBox box; + private JLabel picture; + + // Declare filename array + private static String[] filename = { "icon1.png", "icon2.png" }; + + // Declare icon array + private Icon[] pics = { + new ImageIcon(getClass().getResource(filename[0])), + new ImageIcon(getClass().getResource(filename[1])) }; + + public Frame() { + // Set the title of the window/frame + super("The title"); + setLayout(new FlowLayout()); + + // JComboBox Component + box = new JComboBox(filename); + + // Add event + EventHandler handler = new EventHandler(); + box.addItemListener(handler); + + // Add JComboBox Component + add(box); + + // JLabel Component + picture = new JLabel(pics[0]); + + // Add JLabel Component + add(picture); + } + + // Event Handler Class + private class EventHandler implements ItemListener { + + public void itemStateChanged(ItemEvent event) { + if (event.getStateChange() == ItemEvent.SELECTED) { + picture.setIcon(pics[box.getSelectedIndex()]); + } + } + } +} \ No newline at end of file From d4dc7a475cfbf60171ee39ac2f2dadd532755866 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 16 Jun 2024 00:06:16 +0800 Subject: [PATCH 133/183] =?UTF-8?q?=F0=9F=9A=80=20Add=20png=20file=20Icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JComboBox/icon1.png | Bin 0 -> 10358 bytes week_9/JComboBox/icon2.png | Bin 0 -> 3359 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 week_9/JComboBox/icon1.png create mode 100644 week_9/JComboBox/icon2.png diff --git a/week_9/JComboBox/icon1.png b/week_9/JComboBox/icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..93d9d0e9eed90fef5310c5853eabc27216922cf6 GIT binary patch literal 10358 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 literal 0 HcmV?d00001 diff --git a/week_9/JComboBox/icon2.png b/week_9/JComboBox/icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc40611adeed152f834e6df4e7e71fa50a229cb GIT binary patch literal 3359 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 literal 0 HcmV?d00001 From 0857cad643fc1e0ff4d1b95c89a2a61a6868c816 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 16:12:59 +0000 Subject: [PATCH 134/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JFrame=20Java=20Fi?= =?UTF-8?q?le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JFrame/App.java | 10 ++++++++++ week_9/JFrame/MyFrame.java | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 week_9/JFrame/App.java create mode 100644 week_9/JFrame/MyFrame.java diff --git a/week_9/JFrame/App.java b/week_9/JFrame/App.java new file mode 100644 index 0000000..3e6c65e --- /dev/null +++ b/week_9/JFrame/App.java @@ -0,0 +1,10 @@ +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import java.awt.Color; + +public class App { + public static void main(String[] args) throws Exception { + + new MyFrame(); + } +} \ No newline at end of file diff --git a/week_9/JFrame/MyFrame.java b/week_9/JFrame/MyFrame.java new file mode 100644 index 0000000..d846cb6 --- /dev/null +++ b/week_9/JFrame/MyFrame.java @@ -0,0 +1,38 @@ +import javax.swing.JFrame; +import javax.swing.ImageIcon; +import java.awt.Color; + +public class MyFrame extends JFrame { + + MyFrame() { + // Makes frame visible + this.setVisible(true); + + // Sets frame size + this.setSize(420, 420); + + // Sets title of frame + this.setTitle("JFrame title"); + + // Exit out of application + this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); + + // Prevent frame from being resized + this.setResizable(false); + + // This will create an image icon + ImageIcon image = new ImageIcon("tiktok.png"); + + // Change icon of frame + this.setIconImage(image.getImage()); + + // Set background color + // frame.getContentPane().setBackground(Color.green); + + // Set background color using RGB + this.getContentPane().setBackground(new Color(123, 50, 250)); + + // Set background color using Hexadecimal + this.getContentPane().setBackground(new Color(0x123456)); + }; +} \ No newline at end of file From 5642080a4eacd63c468f67e9c16125251d83cc5f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 16 Jun 2024 00:15:07 +0800 Subject: [PATCH 135/183] =?UTF-8?q?=F0=9F=9A=80=20Add=20tiktok=20png=20fil?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JFrame/tiktok.png | Bin 0 -> 5440 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 week_9/JFrame/tiktok.png diff --git a/week_9/JFrame/tiktok.png b/week_9/JFrame/tiktok.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe96bee48b169350c6eb25cceadaaf59026729e GIT binary patch literal 5440 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 Date: Sat, 15 Jun 2024 16:34:10 +0000 Subject: [PATCH 136/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JLabel=20Java=20Fi?= =?UTF-8?q?le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JLabel/App,java | 33 ++++++++++++++++++++++++++++ week_9/JLabel/Frame.java | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 week_9/JLabel/App,java create mode 100644 week_9/JLabel/Frame.java diff --git a/week_9/JLabel/App,java b/week_9/JLabel/App,java new file mode 100644 index 0000000..b398c0d --- /dev/null +++ b/week_9/JLabel/App,java @@ -0,0 +1,33 @@ +import javax.swing.ImageIcon; + +public class App { + public static void main(String[] args) throws Exception { + + MyFrame frame = new MyFrame(); + + // frame.setLayout(null); + // Makes frame visible + frame.setVisible(true); + // Sets frame size + // frame.setSize(500, 500); + // Sets title of frame + frame.setTitle("JFrame title"); + // Exit out of application + frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); + // Prevent frame from being resized + frame.setResizable(true); + // This will create an image icon + ImageIcon image = new ImageIcon("tiktok.png"); + // Change icon of frame + frame.setIconImage(image.getImage()); + + // Set background color + // frame.getContentPane().setBackground(Color.green); + // Set background color using RGB + // frame.getContentPane().setBackground(new Color(123, 50, 250)); + // Set background color using Hexadecimal + // frame.getContentPane().setBackground(new Color(0x123456)); + + frame.pack(); + } +} \ No newline at end of file diff --git a/week_9/JLabel/Frame.java b/week_9/JLabel/Frame.java new file mode 100644 index 0000000..37830f2 --- /dev/null +++ b/week_9/JLabel/Frame.java @@ -0,0 +1,47 @@ +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.border.Border; +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import java.awt.Color; +import java.awt.Font; + +public class MyFrame extends JFrame { + + MyFrame() { + + ImageIcon image = new ImageIcon("smile.png"); + + Border border = BorderFactory.createLineBorder(Color.green, 3); + + JLabel label = new JLabel(); + // Set text of label + label.setText("Do you even code?"); + this.add(label); + label.setIcon(image); + // Set text LEFT, CENTER, RIGHT of imageicon + label.setHorizontalTextPosition(JLabel.CENTER); + // Set text TOP,CENTER, BOTTOM of image + label.setVerticalTextPosition(JLabel.TOP); + // Set font color of text + label.setForeground(new Color(0x00FF00)); + // Set font of text + label.setFont(new Font("Consolas", Font.PLAIN, 20)); + // Set gap of text to image + label.setIconTextGap(-25); + // Set background color + label.setBackground(Color.BLACK); + // Display background color + label.setOpaque(true); + // Set border + label.setBorder(border); + // Set vertical position of icon and text within label + label.setVerticalAlignment(JLabel.CENTER); + // Set horizontal position of icon and text within label + label.setHorizontalAlignment(JLabel.CENTER); + + // This will set x,y position within frame as well as dimensions + // label.setBounds(100, 100, 250, 250); + + }; +} \ No newline at end of file From 3f4cac9a8deffe1cda7121dfc1d69919275cf747 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 16 Jun 2024 00:36:24 +0800 Subject: [PATCH 137/183] =?UTF-8?q?=F0=9F=93=93=20Add=20smile=20png?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JLabel/smile.png | Bin 0 -> 1663 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 week_9/JLabel/smile.png diff --git a/week_9/JLabel/smile.png b/week_9/JLabel/smile.png new file mode 100644 index 0000000000000000000000000000000000000000..4668ab5aba9e7a680f798725db982e53bb3b5267 GIT binary patch literal 1663 zcmV-_27vjAP)s`MyJ4hgaI#GIG(Dz72K_gWrPI4V%%Lya~3%jj+aNby?#wJFT%94)FCF zn4?l)j$rUfFoh(*7!?1(=)iU4DH-UfWT0*iK0@_^JCcxzHNYzZ4-i_gT6 zsfQ=S6q*QQa6F7bacBup-yJ!;fp$psWR?w1@KL}swQbKBl)5b;3)Z+ySYy-wlX`N$ z)Z@?+7>kyG7&NbrY7qyoqFK@(bc}gzQ_r_R9FsnN1_J%dNn zs)+Mq@Xu(jWS|S<1ux$v^jus3+lEZ>)YrwLWo-Y)KMIX2!h0H5goTMEKhE%6 zT0++`)xWhqAoZkysRyXhyrwVpNCq!A_=fHhN`E}dra!!V$Dz&w6)Z8S{ZdctmpUsK zR_iSFNHndCK!abH+~^bXu2|_9=*@|Qmw$Jt^T;xoA`^#B-JjPwnpT9P!8cTH^a&D# ze@Y7_0~se8UcOC`s|g)nyar=P?7-AlIZ|)*3q!;55c$~~g7Ca_40Lp|;AN&NLdT({ zXby0uzS5C;qi-l0e1b6|c<9J$EQi!+;N{;O>NvOCr>W#}o(BKmUd!A=6%INix zq`&`Vz{`~c`4-{%0Z%me2BX0{5N&y$kjn|u4ayfwALJ(0(_b$OUjCIJ-z0Q?Js+I~ z^EteHgCLdBQxuZBvH?9sD8kpP0Q(6*vO8oif~@xyhrg!+EGK|oyF->D$XeeQ@LU!2 z0-mdkfa?@0VqmW#e6JaUMy~~Otx62OXNdVd7Rc4AVd3RpxPcFq>t9EwT$K$^9za=H z8B$YIq0wkiUS95iuoWtn4Nrc!`KCfw@IWd3sBEB)YFyPkFByRUI5;?%D=jU}xeBd{ zHP1`N)%@~d;F(HD`T8vB$n2_NT^q0|Hmqv{w&CGR3Ajc^krn86wcD_UWrHm{gJ3_e zsHkuNSdT02HmqTXoo_roJbVc^(4}nPq0_){TczHYH|*dhG(oQMQr;@HzPw?FoL}kX z3LdyBX27ht&)2GW!?K#?V#$lZ_wDo5D&DZ@o6nM0h6jEYDWO`bndn1GVXMTD@D2k4 zO18szL*J~{pUcHW=rtjqV zLI2YnMR;A|9PHfe$LA!(1c^N_J&4F?Jd3C8ZXy>a@` zB0N6rf%XzNv|n?><0227KDY?G-}2_)ux~SxR^#rs^F-i*i}dA);Q1=l(5uoNGK$oE zYpFX9zOO=bWZ;YY&2VDhe7;8o`$czAcoWXhq7fV5Chkz~NE+63WhM#_cw)~^Z)B(X zBPJ@4D?7y>@9p%)iF{9(&&?Dq8{iT*u$9I#q}%k>r0zCX`oUkI!()Qyt58VpQZ*I5 z1o(3(p_yYgz)e)qT&arAPa^zToT0hn0^iTXEUA(TCZlXHUdaz>q>{EtH_12w@GWC* zSYZ>lXrWX=N2Chs8VC3;w$I}dy*erI1B_JAGWKF7-JmC{cm!F`FLKV|tLQ@egT;B4#X|14;k@002ov JPDHLkV1h Date: Sat, 15 Jun 2024 16:45:28 +0000 Subject: [PATCH 138/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JList=20Multiple?= =?UTF-8?q?=20Selection=20Java=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JList/Multiple Selection/App.java | 17 ++++++ week_9/JList/Multiple Selection/Frame.java | 66 ++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 week_9/JList/Multiple Selection/App.java create mode 100644 week_9/JList/Multiple Selection/Frame.java diff --git a/week_9/JList/Multiple Selection/App.java b/week_9/JList/Multiple Selection/App.java new file mode 100644 index 0000000..28d5a6f --- /dev/null +++ b/week_9/JList/Multiple Selection/App.java @@ -0,0 +1,17 @@ +import javax.swing.JFrame; + +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(300, 200); + + // Makes the window appear + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/week_9/JList/Multiple Selection/Frame.java b/week_9/JList/Multiple Selection/Frame.java new file mode 100644 index 0000000..2467f4e --- /dev/null +++ b/week_9/JList/Multiple Selection/Frame.java @@ -0,0 +1,66 @@ +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import java.awt.*; + +public class Frame extends JFrame { + + private JList leftList; + private JList rightList; + private JButton moveButton; + private static String[] food = { "bacon", "wings", "ham", "beef", "chicken" }; + + Frame() { + + // Adds window title + super("Title"); + setLayout(new FlowLayout()); + + // JList component + leftList = new JList(food); + + // Sets number of visible rows in the JList + leftList.setVisibleRowCount(3); + + // Enables user to select multiple items in the list + leftList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + + // Adds a scrollbar + add(new JScrollPane(leftList)); + + // Adds text in button + moveButton = new JButton("Move -->"); + + // Add event when button is clicked + moveButton.addActionListener(new EventHandler()); + + // Add button component in frame + add(moveButton); + + rightList = new JList(); + + // Set number of visible item lists + rightList.setVisibleRowCount(3); + + // Set width and height of list + rightList.setFixedCellWidth(100); + rightList.setFixedCellHeight(15); + + // Enables user to select multiple items in the list + rightList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + + add(new JScrollPane(rightList)); + } + + // Event handler class + private class EventHandler implements ActionListener { + + public void actionPerformed(ActionEvent event) { + rightList.setListData(leftList.getSelectedValuesList().toArray()); + } + } +} \ No newline at end of file From aba537ae25b47937743e26505d6a2b313adb6b21 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 16:47:55 +0000 Subject: [PATCH 139/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JList=20Single=20S?= =?UTF-8?q?election=20Java=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JList/Single Selection/App.java | 16 +++++++++ week_9/JList/Single Selection/Frame.java | 46 ++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 week_9/JList/Single Selection/App.java create mode 100644 week_9/JList/Single Selection/Frame.java diff --git a/week_9/JList/Single Selection/App.java b/week_9/JList/Single Selection/App.java new file mode 100644 index 0000000..b0b9dde --- /dev/null +++ b/week_9/JList/Single Selection/App.java @@ -0,0 +1,16 @@ +import javax.swing.JFrame; + +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(300, 200); + + // Makes the window appear + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/week_9/JList/Single Selection/Frame.java b/week_9/JList/Single Selection/Frame.java new file mode 100644 index 0000000..3b7041b --- /dev/null +++ b/week_9/JList/Single Selection/Frame.java @@ -0,0 +1,46 @@ +import java.awt.*; +import javax.swing.*; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +public class Frame extends JFrame { + + // Declare JList + private JList list; + + // Declare array of color names in the selection + private static String[] colorNames = { "Black", "Blue", "Red", "White" }; + + // Declare array of colors from the Colr class + private static Color[] colors = { Color.BLACK, Color.BLUE, Color.RED, Color.WHITE }; + + // Constructor + Frame() { + super("title"); + setLayout(new FlowLayout()); + + // JList Component + list = new JList(colorNames); + + // Set number of visible item lists + list.setVisibleRowCount(4); + + // Sets JList to selection one option at a time + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + // Add JList component frame + add(new JScrollPane(list)); + + // Add event handler + list.addListSelectionListener(new EventHandler()); + } + + // Event handler class + private class EventHandler implements ListSelectionListener { + + // Changes background color when an event occurs + public void valueChanged(ListSelectionEvent event) { + getContentPane().setBackground(colors[list.getSelectedIndex()]); + } + } +} \ No newline at end of file From 007cfb3e9e3c94c4fc2c529c84e7cfb77007ebf7 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 16:50:33 +0000 Subject: [PATCH 140/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JPanel=20java=20fi?= =?UTF-8?q?le?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JPanel/App.java | 15 +++++++++++++++ week_9/JPanel/Frame.java | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 week_9/JPanel/App.java create mode 100644 week_9/JPanel/Frame.java diff --git a/week_9/JPanel/App.java b/week_9/JPanel/App.java new file mode 100644 index 0000000..269f36b --- /dev/null +++ b/week_9/JPanel/App.java @@ -0,0 +1,15 @@ +public class App { + public static void main(String[] args) throws Exception { + + MyFrame frame = new MyFrame(); + + frame.setLayout(null); + // Makes frame visible + frame.setVisible(true); + // Sets frame size + frame.setSize(500, 500); + // Exit out of application + frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); + + } +} \ No newline at end of file diff --git a/week_9/JPanel/Frame.java b/week_9/JPanel/Frame.java new file mode 100644 index 0000000..f82d8af --- /dev/null +++ b/week_9/JPanel/Frame.java @@ -0,0 +1,41 @@ +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import java.awt.Color; +import java.awt.Font; +import java.awt.BorderLayout; + +public class MyFrame extends JFrame { + + MyFrame() { + + JLabel label = new JLabel(); + label.setText("Hello"); + label.setFont(new Font("Consolas", Font.PLAIN, 20)); + label.setVerticalAlignment(JLabel.BOTTOM); + label.setHorizontalAlignment(JLabel.RIGHT); + label.setBounds(100, 100, 75, 75); + + JPanel redPanel = new JPanel(); + redPanel.setBackground(Color.RED); + redPanel.setBounds(0, 0, 250, 250); + redPanel.setLayout(null); + + JPanel bluePanel = new JPanel(); + bluePanel.setBackground(Color.BLUE); + bluePanel.setBounds(250, 0, 250, 250); + bluePanel.setLayout(null); + + JPanel greenPanel = new JPanel(); + greenPanel.setBackground(Color.GREEN); + greenPanel.setBounds(0, 250, 500, 250); + // greenPanel.setLayout(new BorderLayout()); + greenPanel.setLayout(null); + + greenPanel.add(label); + this.add(redPanel); + this.add(bluePanel); + this.add(greenPanel); + + }; +} \ No newline at end of file From 56e25ed4c54915680ae54cf2e5d75dd85dc5e2de Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 17:10:24 +0000 Subject: [PATCH 141/183] =?UTF-8?q?=F0=9F=93=93=20Add=20JRadioButton=20Jav?= =?UTF-8?q?a=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/JRadioButton/App.java | 16 +++++++ week_9/JRadioButton/Frame.java | 78 ++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 week_9/JRadioButton/App.java create mode 100644 week_9/JRadioButton/Frame.java diff --git a/week_9/JRadioButton/App.java b/week_9/JRadioButton/App.java new file mode 100644 index 0000000..b0b9dde --- /dev/null +++ b/week_9/JRadioButton/App.java @@ -0,0 +1,16 @@ +import javax.swing.JFrame; + +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(300, 200); + + // Makes the window appear + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/week_9/JRadioButton/Frame.java b/week_9/JRadioButton/Frame.java new file mode 100644 index 0000000..b4d9634 --- /dev/null +++ b/week_9/JRadioButton/Frame.java @@ -0,0 +1,78 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class Frame extends JFrame { + + private JTextField textField; + + private Font font1; + private Font font2; + private Font font3; + private Font font4; + + private JRadioButton radioButton1; + private JRadioButton radioButton2; + private JRadioButton radioButton3; + private JRadioButton radioButton4; + + private ButtonGroup group; + + public Frame() { + // Set the title of the window/frame + super("The title"); + setLayout(new FlowLayout()); + + // JTextField component + textField = new JTextField("This is a sentence", 25); + + // Add JTextField component + add(textField); + + // JRadioButton components + radioButton1 = new JRadioButton("plain", true); + radioButton2 = new JRadioButton("bold", false); + radioButton3 = new JRadioButton("italic", false); + radioButton4 = new JRadioButton("bold and italic", false); + + // Add JRadioButton components + add(radioButton1); + add(radioButton2); + add(radioButton3); + add(radioButton4); + + group = new ButtonGroup(); + group.add(radioButton1); + group.add(radioButton2); + group.add(radioButton3); + group.add(radioButton4); + + font1 = new Font("Serif", Font.PLAIN, 14); + font2 = new Font("Serif", Font.BOLD, 14); + font3 = new Font("Serif", Font.ITALIC, 14); + font4 = new Font("Serif", Font.BOLD + Font.ITALIC, 14); + textField.setFont(font1); + + // Add Event + radioButton1.addItemListener(new EventHandler(font1)); + radioButton2.addItemListener(new EventHandler(font2)); + radioButton3.addItemListener(new EventHandler(font3)); + radioButton4.addItemListener(new EventHandler(font4)); + + } + + // Event handler class + private class EventHandler implements ItemListener { + + private Font font; + + public EventHandler(Font f) { + font = f; + } + + public void itemStateChanged(ItemEvent event) { + textField.setFont(font); + } + } + +} \ No newline at end of file From f7fa2cde92b0c4613f7fa82921081d33410df7ec Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 17:28:18 +0000 Subject: [PATCH 142/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Layout=20BorderLay?= =?UTF-8?q?out=20Java=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/Layout/BorderLayout/App.java | 15 ++++++++++ week_9/Layout/BorderLayout/Frame.java | 41 +++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 week_9/Layout/BorderLayout/App.java create mode 100644 week_9/Layout/BorderLayout/Frame.java diff --git a/week_9/Layout/BorderLayout/App.java b/week_9/Layout/BorderLayout/App.java new file mode 100644 index 0000000..fc73f2e --- /dev/null +++ b/week_9/Layout/BorderLayout/App.java @@ -0,0 +1,15 @@ +import java.awt.*; +import javax.swing.*; + +public class App { + public static void main(String[] args) throws Exception { + + Frame f = new Frame(); + + f.setDefaultCloseOperation(f.getDefaultCloseOperation()); + + // Frame size + f.setSize(500, 500); + f.setVisible(true); + } +} \ No newline at end of file diff --git a/week_9/Layout/BorderLayout/Frame.java b/week_9/Layout/BorderLayout/Frame.java new file mode 100644 index 0000000..f814921 --- /dev/null +++ b/week_9/Layout/BorderLayout/Frame.java @@ -0,0 +1,41 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class Frame extends JFrame { + + // Layout Manager = Defines the natural layout for components within a container + + // BorderLayout = A BorderLayout places components in five areas: NORTH, SOUTH, + // WEST, EAST, CENTER. All extra space is placed in the center area. + + Frame() { + + // JPAnel components + JPanel northPanel = new JPanel(); + northPanel.setBackground(Color.RED); + JPanel southPanel = new JPanel(); + southPanel.setBackground(Color.BLUE); + JPanel eastPanel = new JPanel(); + eastPanel.setBackground(Color.GREEN); + JPanel westPanel = new JPanel(); + westPanel.setBackground(Color.ORANGE); + JPanel centerPanel = new JPanel(); + centerPanel.setBackground(Color.MAGENTA); + + // Set JPanel component sizes + northPanel.setPreferredSize(new Dimension(100, 100)); + southPanel.setPreferredSize(new Dimension(100, 100)); + eastPanel.setPreferredSize(new Dimension(100, 100)); + westPanel.setPreferredSize(new Dimension(100, 100)); + centerPanel.setPreferredSize(new Dimension(100, 100)); + + // Add JPanel component sizes + add(northPanel, BorderLayout.NORTH); + add(southPanel, BorderLayout.SOUTH); + add(eastPanel, BorderLayout.EAST); + add(westPanel, BorderLayout.WEST); + add(centerPanel, BorderLayout.CENTER); + } +} + From c3b2ccf0c5f398b55618d6ed962eaf61933be676 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 17:39:48 +0000 Subject: [PATCH 143/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Layout=20FlowLayou?= =?UTF-8?q?t=20java=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/Layout/FlowLayout/App.java | 14 ++++++++++++ week_9/Layout/FlowLayout/Frame.java | 35 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 week_9/Layout/FlowLayout/App.java create mode 100644 week_9/Layout/FlowLayout/Frame.java diff --git a/week_9/Layout/FlowLayout/App.java b/week_9/Layout/FlowLayout/App.java new file mode 100644 index 0000000..873e1ef --- /dev/null +++ b/week_9/Layout/FlowLayout/App.java @@ -0,0 +1,14 @@ +public class App { + public static void main(String[] args) throws Exception { + + MyFrame frame = new MyFrame(); + + // Makes frame visible + frame.setVisible(true); + // Sets frame size + frame.setSize(500, 500); + // Exit out of application + frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); + + } +} \ No newline at end of file diff --git a/week_9/Layout/FlowLayout/Frame.java b/week_9/Layout/FlowLayout/Frame.java new file mode 100644 index 0000000..be7ac53 --- /dev/null +++ b/week_9/Layout/FlowLayout/Frame.java @@ -0,0 +1,35 @@ +import java.awt.*; +import javax.swing.*; + +public class MyFrame extends JFrame { + + // Layout Manager = Defines the natural layout for components within a container + + // FlowLayout = places components in a row, sized at their preferred size. + // If the horizontal space in the container is too small, the FlowLayout class + // uses the next available row. + + MyFrame() { + // this.setLayout(new FlowLayout(FlowLayout.TRAILING)); + // this.setLayout(new FlowLayout(FlowLayout.LEADING)); + this.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10)); + + JPanel panel = new JPanel(); + panel.setPreferredSize(new Dimension(250, 250)); + panel.setBackground(Color.LIGHT_GRAY); + panel.setLayout(new FlowLayout()); + + // Adds nine buttons + panel.add(new JButton("1")); + panel.add(new JButton("2")); + panel.add(new JButton("4")); + panel.add(new JButton("5")); + panel.add(new JButton("6")); + panel.add(new JButton("7")); + panel.add(new JButton("8")); + panel.add(new JButton("9")); + + this.add(panel); + + } +} \ No newline at end of file From a65c0cc07321495bee5b2ccbfcddb8c8e1f3cdfb Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 17:42:55 +0000 Subject: [PATCH 144/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Layout=20GridLayou?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_9/Layout/GridLayout/App.java | 14 ++++++++++++++ week_9/Layout/GridLayout/Frame.java | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 week_9/Layout/GridLayout/App.java create mode 100644 week_9/Layout/GridLayout/Frame.java diff --git a/week_9/Layout/GridLayout/App.java b/week_9/Layout/GridLayout/App.java new file mode 100644 index 0000000..873e1ef --- /dev/null +++ b/week_9/Layout/GridLayout/App.java @@ -0,0 +1,14 @@ +public class App { + public static void main(String[] args) throws Exception { + + MyFrame frame = new MyFrame(); + + // Makes frame visible + frame.setVisible(true); + // Sets frame size + frame.setSize(500, 500); + // Exit out of application + frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); + + } +} \ No newline at end of file diff --git a/week_9/Layout/GridLayout/Frame.java b/week_9/Layout/GridLayout/Frame.java new file mode 100644 index 0000000..4228936 --- /dev/null +++ b/week_9/Layout/GridLayout/Frame.java @@ -0,0 +1,26 @@ +import java.awt.*; +import javax.swing.*; + +public class MyFrame extends JFrame { + + // Layout Manager = Defines the natural layout for components within a container + + // GridLayout = places components in a grid of cells. Each componentn takes all + // the available space within its cell, and each cell is the same size. + + MyFrame() { + + this.setLayout(new GridLayout(3, 3, 10, 10)); + + // Add ten buttons + this.add(new JButton("1")); + this.add(new JButton("2")); + this.add(new JButton("3")); + this.add(new JButton("4")); + this.add(new JButton("5")); + this.add(new JButton("6")); + this.add(new JButton("7")); + this.add(new JButton("8")); + this.add(new JButton("9")); + } +} \ No newline at end of file From 1829a003c5d03ad55b1ebc9bf84ec6459d9cbbe0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:45:06 +0000 Subject: [PATCH 145/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Inheritance=20java?= =?UTF-8?q?=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Inheritance/App.java | 23 +++++++++++++++++++++++ week_8/Inheritance/Daughter.java | 5 +++++ week_8/Inheritance/Mommy.java | 12 ++++++++++++ week_8/Inheritance/Son.java | 5 +++++ 4 files changed, 45 insertions(+) create mode 100644 week_8/Inheritance/App.java create mode 100644 week_8/Inheritance/Daughter.java create mode 100644 week_8/Inheritance/Mommy.java create mode 100644 week_8/Inheritance/Son.java diff --git a/week_8/Inheritance/App.java b/week_8/Inheritance/App.java new file mode 100644 index 0000000..b3a9894 --- /dev/null +++ b/week_8/Inheritance/App.java @@ -0,0 +1,23 @@ +public class App { + public static void main(String[] args) throws Exception { + + // Son object + Son me = new Son(); + me.name = "Jay"; + + // The Son class inherited the surname variable and the getSurname() method + String surname = me.getSurname(); + + System.out.println("My name is " + me.name + " and my surname is " + surname); + + // Daughter object + Daughter mySister = new Daughter(); + mySister.name = "Dianne"; + + // The Daughter class also inherited the surname variable and the getSurname() + // method + surname = mySister.getSurname(); + + System.out.println("My sister's name is " + mySister.name + " and her surname is also " + surname); + } +} \ No newline at end of file diff --git a/week_8/Inheritance/Daughter.java b/week_8/Inheritance/Daughter.java new file mode 100644 index 0000000..556f968 --- /dev/null +++ b/week_8/Inheritance/Daughter.java @@ -0,0 +1,5 @@ +public class Daughter extends Mommy { + + // Properties + String name; +} \ No newline at end of file diff --git a/week_8/Inheritance/Mommy.java b/week_8/Inheritance/Mommy.java new file mode 100644 index 0000000..ca01d8f --- /dev/null +++ b/week_8/Inheritance/Mommy.java @@ -0,0 +1,12 @@ +public class Mommy { + + // Properties + protected String surname = "Ponio"; + + // Methods + public String getSurname() { + + return this.surname; + } + +} \ No newline at end of file diff --git a/week_8/Inheritance/Son.java b/week_8/Inheritance/Son.java new file mode 100644 index 0000000..5eaed4e --- /dev/null +++ b/week_8/Inheritance/Son.java @@ -0,0 +1,5 @@ +public class Son extends Mommy { + + // Properties + String name; +} \ No newline at end of file From c75b3e3a15441d192e9cc58db2eeb7aaaa9ebf56 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:48:44 +0000 Subject: [PATCH 146/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Polymorphism=20Gro?= =?UTF-8?q?cery=20App.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Polymorphism/Grocery/App.java | 33 ++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 week_8/Polymorphism/Grocery/App.java diff --git a/week_8/Polymorphism/Grocery/App.java b/week_8/Polymorphism/Grocery/App.java new file mode 100644 index 0000000..337147e --- /dev/null +++ b/week_8/Polymorphism/Grocery/App.java @@ -0,0 +1,33 @@ +public class App { + public static void main(String[] args) throws Exception { + + // Polymorphic variable/object + GroceryItem item1 = new Junkfood(); + item1.name = "V-cut"; + + // Polymorphic variable/object + GroceryItem item2 = new Shampoo(); + item2.name = "Pantene"; + + // Polymorphic array + GroceryItem[] itemArray = new GroceryItem[2]; + itemArray[0] = item1; + itemArray[1] = item2; + + // Instead of calling the showItemName for each grocery item, we can loop + // through the polymorphic array + for (int i = 0; i < 2; i++) { + itemArray[i].showItemName(); + } + + // Cashier Object + Cashier c1 = new Cashier(); + + // Polymorphic Argument + c1.checkOut(item1); + + // Polymorphic Argument + c1.checkOut(item2); + + } +} \ No newline at end of file From f23c8d72ae166b411ad2317a8e1ae4af43c9ae04 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:49:58 +0000 Subject: [PATCH 147/183] =?UTF-8?q?=F0=9F=93=93=20Add=20class=20Cashier=20?= =?UTF-8?q?for=20Grocery=20Polymorphism?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Polymorphism/Grocery/Cashier.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 week_8/Polymorphism/Grocery/Cashier.java diff --git a/week_8/Polymorphism/Grocery/Cashier.java b/week_8/Polymorphism/Grocery/Cashier.java new file mode 100644 index 0000000..473265e --- /dev/null +++ b/week_8/Polymorphism/Grocery/Cashier.java @@ -0,0 +1,7 @@ +public class Cashier { + + public void checkOut(GroceryItem item) { + System.out.println("You have purchased " + item.name); + + } +} \ No newline at end of file From d53af9a7e395b2e0438be73f17f599cddb25eed1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:53:06 +0000 Subject: [PATCH 148/183] =?UTF-8?q?=F0=9F=93=93=20Add=20class=20GroceryIte?= =?UTF-8?q?m=20to=20Grocery=20Polymorphism?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Polymorphism/Grocery/GroceryItem.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 week_8/Polymorphism/Grocery/GroceryItem.java diff --git a/week_8/Polymorphism/Grocery/GroceryItem.java b/week_8/Polymorphism/Grocery/GroceryItem.java new file mode 100644 index 0000000..eb2a5c1 --- /dev/null +++ b/week_8/Polymorphism/Grocery/GroceryItem.java @@ -0,0 +1,11 @@ +public class GroceryItem { + + String name; + + // Methods + public void showItemName() { + + System.out.println("This is a " + this.name); + } + +} \ No newline at end of file From fca5c989dc727991e8dde38398ffe1b587cc5368 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:55:04 +0000 Subject: [PATCH 149/183] =?UTF-8?q?=F0=9F=93=93=20Add=20class=20Junkfood?= =?UTF-8?q?=20for=20Grocery=20Polymorphism?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Polymorphism/Grocery/Junkfood.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 week_8/Polymorphism/Grocery/Junkfood.java diff --git a/week_8/Polymorphism/Grocery/Junkfood.java b/week_8/Polymorphism/Grocery/Junkfood.java new file mode 100644 index 0000000..0af6daa --- /dev/null +++ b/week_8/Polymorphism/Grocery/Junkfood.java @@ -0,0 +1,8 @@ +public class Junkfood extends GroceryItem { + + // Method Override + public void showItemName() { + + System.out.println("The name of this junkfood is " + this.name); + } +} \ No newline at end of file From 464ffbdec3dd9e6010a8c955b60622b3b7541840 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 19:56:44 +0000 Subject: [PATCH 150/183] =?UTF-8?q?=F0=9F=93=93=20Add=20class=20Shampoo=20?= =?UTF-8?q?for=20Grocery=20Polymorphism?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Polymorphism/Grocery/Shampoo.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 week_8/Polymorphism/Grocery/Shampoo.java diff --git a/week_8/Polymorphism/Grocery/Shampoo.java b/week_8/Polymorphism/Grocery/Shampoo.java new file mode 100644 index 0000000..cacd0cc --- /dev/null +++ b/week_8/Polymorphism/Grocery/Shampoo.java @@ -0,0 +1,8 @@ +public class Shampoo extends GroceryItem { + + // Method Override + public void showItemName() { + + System.out.println("The name of this shampoo is " + this.name); + } +} \ No newline at end of file From 64e0da93d1659c78cf7294534a6650c4af64ae0f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:00:19 +0000 Subject: [PATCH 151/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Polymorphism=20exa?= =?UTF-8?q?mple=20"Person"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Polymorphism/Person/App.java | 26 ++++++++++++++++++++++++ week_8/Polymorphism/Person/Diver.java | 7 +++++++ week_8/Polymorphism/Person/Gardener.java | 8 ++++++++ week_8/Polymorphism/Person/Person.java | 8 ++++++++ week_8/Polymorphism/Person/Student.java | 8 ++++++++ week_8/Polymorphism/Person/Teacher.java | 8 ++++++++ 6 files changed, 65 insertions(+) create mode 100644 week_8/Polymorphism/Person/App.java create mode 100644 week_8/Polymorphism/Person/Diver.java create mode 100644 week_8/Polymorphism/Person/Gardener.java create mode 100644 week_8/Polymorphism/Person/Person.java create mode 100644 week_8/Polymorphism/Person/Student.java create mode 100644 week_8/Polymorphism/Person/Teacher.java diff --git a/week_8/Polymorphism/Person/App.java b/week_8/Polymorphism/Person/App.java new file mode 100644 index 0000000..1b0d16e --- /dev/null +++ b/week_8/Polymorphism/Person/App.java @@ -0,0 +1,26 @@ +public class App { + public static void main(String[] args) throws Exception { + + // Polymorphism + + Person me = new Person(); + me.name = "Elizer"; + me.aboutMe(); + + // Me in a form of a teacher + me = new Teacher(); + me.aboutMe(); + + // Me in a form of a student + me = new Student(); + me.aboutMe(); + + // Me in a form of a diver + me = new Diver(); + me.aboutMe(); + + // Me in a form of a gardener + me = new Gardener(); + me.aboutMe(); + } +} \ No newline at end of file diff --git a/week_8/Polymorphism/Person/Diver.java b/week_8/Polymorphism/Person/Diver.java new file mode 100644 index 0000000..53655ca --- /dev/null +++ b/week_8/Polymorphism/Person/Diver.java @@ -0,0 +1,7 @@ +public class Diver extends Person { + + // Override method + public void aboutMe() { + System.out.println(name + " loves freediving"); + } +} \ No newline at end of file diff --git a/week_8/Polymorphism/Person/Gardener.java b/week_8/Polymorphism/Person/Gardener.java new file mode 100644 index 0000000..04ada2c --- /dev/null +++ b/week_8/Polymorphism/Person/Gardener.java @@ -0,0 +1,8 @@ +public class Gardener extends Person { + + // Override method + public void aboutMe() { + System.out.println(name + " loves gardening"); + } + +} \ No newline at end of file diff --git a/week_8/Polymorphism/Person/Person.java b/week_8/Polymorphism/Person/Person.java new file mode 100644 index 0000000..5fbc0be --- /dev/null +++ b/week_8/Polymorphism/Person/Person.java @@ -0,0 +1,8 @@ +public class Person { + + static protected String name; + + public void aboutMe() { + System.out.println("My name is " + name); + } +} \ No newline at end of file diff --git a/week_8/Polymorphism/Person/Student.java b/week_8/Polymorphism/Person/Student.java new file mode 100644 index 0000000..62f93bd --- /dev/null +++ b/week_8/Polymorphism/Person/Student.java @@ -0,0 +1,8 @@ +public class Student extends Person { + + // Override method + public void aboutMe() { + System.out.println(name + " is a student studying computer science"); + } + +} \ No newline at end of file diff --git a/week_8/Polymorphism/Person/Teacher.java b/week_8/Polymorphism/Person/Teacher.java new file mode 100644 index 0000000..c4867e7 --- /dev/null +++ b/week_8/Polymorphism/Person/Teacher.java @@ -0,0 +1,8 @@ +public class Teacher extends Person { + + // Override method + public void aboutMe() { + System.out.println(name + " is a teacher by profession"); + } + +} \ No newline at end of file From 40aad4a832878b1de4b7cf651e1e11e67d70cf07 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:09:28 +0000 Subject: [PATCH 152/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Abstraction=20java?= =?UTF-8?q?=20file=20Add=20Abstraction=20java=20file=20for=20both=20abstra?= =?UTF-8?q?ct=5Fclass=20and=20interface?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Abstraction/abstract_class/App.java | 10 ++++++++++ week_8/Abstraction/abstract_class/Dog.java | 8 ++++++++ week_8/Abstraction/abstract_class/Pet.java | 10 ++++++++++ week_8/Abstraction/interface/App.java | 10 ++++++++++ week_8/Abstraction/interface/Cat.java | 12 ++++++++++++ week_8/Abstraction/interface/Pet.java | 6 ++++++ .../Polymorphism_1/App.java | 0 .../Polymorphism_2/App.java | 0 8 files changed, 56 insertions(+) create mode 100644 week_8/Abstraction/abstract_class/App.java create mode 100644 week_8/Abstraction/abstract_class/Dog.java create mode 100644 week_8/Abstraction/abstract_class/Pet.java create mode 100644 week_8/Abstraction/interface/App.java create mode 100644 week_8/Abstraction/interface/Cat.java create mode 100644 week_8/Abstraction/interface/Pet.java rename week_8/{example => Polymorphism_example}/Polymorphism_1/App.java (100%) rename week_8/{example => Polymorphism_example}/Polymorphism_2/App.java (100%) diff --git a/week_8/Abstraction/abstract_class/App.java b/week_8/Abstraction/abstract_class/App.java new file mode 100644 index 0000000..61badc7 --- /dev/null +++ b/week_8/Abstraction/abstract_class/App.java @@ -0,0 +1,10 @@ +public class App { + public static void main(String[] args) throws Exception { + + // Only objects from subclasses can be created. Creating objects from + // superclasses are not permitted. + Dog dalmatian = new Dog(); + + dalmatian.eat(); + } +} \ No newline at end of file diff --git a/week_8/Abstraction/abstract_class/Dog.java b/week_8/Abstraction/abstract_class/Dog.java new file mode 100644 index 0000000..5f43d4d --- /dev/null +++ b/week_8/Abstraction/abstract_class/Dog.java @@ -0,0 +1,8 @@ +public class Dog extends Pet { + + // Abstract method eat() is mandatory for all subclasses + public void eat() { + System.out.print("The dog is eating!"); + } + +} \ No newline at end of file diff --git a/week_8/Abstraction/abstract_class/Pet.java b/week_8/Abstraction/abstract_class/Pet.java new file mode 100644 index 0000000..151ec34 --- /dev/null +++ b/week_8/Abstraction/abstract_class/Pet.java @@ -0,0 +1,10 @@ +abstract class Pet { + + // abstract method + public abstract void eat(); + + // An abstract class can contain regular method + public void sleep() { + System.out.print("Zzzzzzzzzz"); + } +} \ No newline at end of file diff --git a/week_8/Abstraction/interface/App.java b/week_8/Abstraction/interface/App.java new file mode 100644 index 0000000..fc606b6 --- /dev/null +++ b/week_8/Abstraction/interface/App.java @@ -0,0 +1,10 @@ +public class App { + public static void main(String[] args) throws Exception { + + Cat myCat = new Cat(); + + myCat.eat(); + + myCat.sleep(); + } +} \ No newline at end of file diff --git a/week_8/Abstraction/interface/Cat.java b/week_8/Abstraction/interface/Cat.java new file mode 100644 index 0000000..a8bcec6 --- /dev/null +++ b/week_8/Abstraction/interface/Cat.java @@ -0,0 +1,12 @@ +public class Cat implements Pet { + + // The eat and sleep methods are mandatory in the Cat class + public void eat() { + + System.out.println("My cat is eating fish"); + } + + public void sleep() { + System.out.println("My cat is sleeping gently"); + } +} \ No newline at end of file diff --git a/week_8/Abstraction/interface/Pet.java b/week_8/Abstraction/interface/Pet.java new file mode 100644 index 0000000..afb8f17 --- /dev/null +++ b/week_8/Abstraction/interface/Pet.java @@ -0,0 +1,6 @@ +interface Pet { + + public void eat(); + + public void sleep(); +} \ No newline at end of file diff --git a/week_8/example/Polymorphism_1/App.java b/week_8/Polymorphism_example/Polymorphism_1/App.java similarity index 100% rename from week_8/example/Polymorphism_1/App.java rename to week_8/Polymorphism_example/Polymorphism_1/App.java diff --git a/week_8/example/Polymorphism_2/App.java b/week_8/Polymorphism_example/Polymorphism_2/App.java similarity index 100% rename from week_8/example/Polymorphism_2/App.java rename to week_8/Polymorphism_example/Polymorphism_2/App.java From 878821df2e5d570b7fffc3edbe70f375ac42bc2b Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:13:04 +0000 Subject: [PATCH 153/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Encapsulation=20Ja?= =?UTF-8?q?va=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Encapsulation/App.java | 15 +++++++++++++++ week_8/Encapsulation/Person.java | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 week_8/Encapsulation/App.java create mode 100644 week_8/Encapsulation/Person.java diff --git a/week_8/Encapsulation/App.java b/week_8/Encapsulation/App.java new file mode 100644 index 0000000..cf43fae --- /dev/null +++ b/week_8/Encapsulation/App.java @@ -0,0 +1,15 @@ +public class App { + public static void main(String[] args) throws Exception { + + Person Me = new Person(); + + // The name property cannot be accessed outside of the Person class. + // Me.name; + + Me.setName("Jay"); + + String myName = Me.getName(); + + System.out.println("My name is " + myName); + } +} \ No newline at end of file diff --git a/week_8/Encapsulation/Person.java b/week_8/Encapsulation/Person.java new file mode 100644 index 0000000..9b71ed8 --- /dev/null +++ b/week_8/Encapsulation/Person.java @@ -0,0 +1,19 @@ +public class Person { + + // Private variable + // Private variables are only accessible within the class where they are + // declared. They are not accessible outside of this class. + private String name; + + // get() method + public String getName() { + + return this.name; + } + + // set() method + public void setName(String newName) { + + this.name = newName; + } +} \ No newline at end of file From 577d4ec7de4d02d885d8b6d2a8e5e375209936ba Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:14:21 +0000 Subject: [PATCH 154/183] =?UTF-8?q?=F0=9F=94=A8=20Fix=20some=20string=20va?= =?UTF-8?q?lue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_8/Encapsulation/App.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week_8/Encapsulation/App.java b/week_8/Encapsulation/App.java index cf43fae..5849d53 100644 --- a/week_8/Encapsulation/App.java +++ b/week_8/Encapsulation/App.java @@ -6,7 +6,7 @@ public static void main(String[] args) throws Exception { // The name property cannot be accessed outside of the Person class. // Me.name; - Me.setName("Jay"); + Me.setName("Jay Arre"); String myName = Me.getName(); From 6ea94b84a5b046bc674a5e668cc92fbdaa478fb5 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:20:51 +0000 Subject: [PATCH 155/183] =?UTF-8?q?=F0=9F=93=93=20Add=20MouseEvents=20and?= =?UTF-8?q?=20Image=5Fas=5FBackground?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_10/Image_as_Background/App.java | 7 +++ week_10/Image_as_Background/MainMenu.java | 23 ++++++++ week_10/MouseEvents/App.java | 16 ++++++ week_10/MouseEvents/Frame.java | 67 +++++++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 week_10/Image_as_Background/App.java create mode 100644 week_10/Image_as_Background/MainMenu.java create mode 100644 week_10/MouseEvents/App.java create mode 100644 week_10/MouseEvents/Frame.java diff --git a/week_10/Image_as_Background/App.java b/week_10/Image_as_Background/App.java new file mode 100644 index 0000000..8430ecd --- /dev/null +++ b/week_10/Image_as_Background/App.java @@ -0,0 +1,7 @@ +public class App { + + public static void main(String args[]) { + new MainMenu(); + + } +} \ No newline at end of file diff --git a/week_10/Image_as_Background/MainMenu.java b/week_10/Image_as_Background/MainMenu.java new file mode 100644 index 0000000..20316c1 --- /dev/null +++ b/week_10/Image_as_Background/MainMenu.java @@ -0,0 +1,23 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +class MainMenu extends JFrame { + JButton b1; + JLabel l1; + + MainMenu() { + + setContentPane(new JLabel(new ImageIcon("snake.jpg"))); + setLayout(new FlowLayout()); + + b1 = new JButton("I am a button"); + + add(b1); + setSize(740, 420); + setTitle("Background Color for JFrame"); + setLocationRelativeTo(null); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setVisible(true); + } +} \ No newline at end of file diff --git a/week_10/MouseEvents/App.java b/week_10/MouseEvents/App.java new file mode 100644 index 0000000..b0b9dde --- /dev/null +++ b/week_10/MouseEvents/App.java @@ -0,0 +1,16 @@ +import javax.swing.JFrame; + +public class App { + public static void main(String[] args) throws Exception { + + Frame frame = new Frame(); + // Terminates the program when clicking the close button + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Sets the size of the frame/window + frame.setSize(300, 200); + + // Makes the window appear + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/week_10/MouseEvents/Frame.java b/week_10/MouseEvents/Frame.java new file mode 100644 index 0000000..c28ae14 --- /dev/null +++ b/week_10/MouseEvents/Frame.java @@ -0,0 +1,67 @@ +import java.awt.*; +import java.awt.event.*; +import java.awt.event.MouseEvent; +import javax.swing.*; + +public class Frame extends JFrame { + + private JPanel mousePanel; + private JLabel statusBar; + + Frame() { + + // Set window title + super("Title"); + + // JPanel Component + mousePanel = new JPanel(); + mousePanel.setBackground(Color.WHITE); + + // Add JPanel Component + add(mousePanel, BorderLayout.CENTER); + + // Add JLabel Component + statusBar = new JLabel(); + + // Add JPanel Component + add(statusBar, BorderLayout.SOUTH); + + // Add Event + mousePanel.addMouseListener(new EventHandler()); + mousePanel.addMouseMotionListener(new EventHandler()); + } + + // Event handler class + private class EventHandler implements MouseListener, MouseMotionListener { + + public void mouseClicked(MouseEvent event) { + statusBar.setText(String.format("Clicked at %d, %d", event.getX(), event.getY())); + } + + public void mousePressed(MouseEvent event) { + statusBar.setText("You pressed down the mouse!"); + } + + public void mouseReleased(MouseEvent event) { + statusBar.setText("You released the button!"); + } + + public void mouseEntered(MouseEvent event) { + statusBar.setText("You entered the area!"); + mousePanel.setBackground(Color.RED); + } + + public void mouseExited(MouseEvent event) { + statusBar.setText("The mouse has left the window"); + mousePanel.setBackground(Color.WHITE); + } + + public void mouseDragged(MouseEvent event) { + statusBar.setText("You are dragging the mouse"); + } + + public void mouseMoved(MouseEvent event) { + statusBar.setText("You moved the mouse"); + } + } +} \ No newline at end of file From 88d6104ec06708b285e96b3170720eb19ce8ee5f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:31:51 +0000 Subject: [PATCH 156/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Sample=20of=20even?= =?UTF-8?q?t-driven=20programming=20Add=20Snake=5Fwith=5Fmenus=20for=20thi?= =?UTF-8?q?s=20exercise?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_10/Snake_with_menus/App.java | 18 ++ week_10/Snake_with_menus/ColorMenu.java | 74 +++++++ week_10/Snake_with_menus/DifficultyMenu.java | 70 ++++++ week_10/Snake_with_menus/GameFrame.java | 16 ++ week_10/Snake_with_menus/GamePanel.java | 219 +++++++++++++++++++ week_10/Snake_with_menus/MainMenu.java | 45 ++++ week_10/Snake_with_menus/PlayerMenu.java | 72 ++++++ week_10/Snake_with_menus/TryAgain.java | 57 +++++ 8 files changed, 571 insertions(+) create mode 100644 week_10/Snake_with_menus/App.java create mode 100644 week_10/Snake_with_menus/ColorMenu.java create mode 100644 week_10/Snake_with_menus/DifficultyMenu.java create mode 100644 week_10/Snake_with_menus/GameFrame.java create mode 100644 week_10/Snake_with_menus/GamePanel.java create mode 100644 week_10/Snake_with_menus/MainMenu.java create mode 100644 week_10/Snake_with_menus/PlayerMenu.java create mode 100644 week_10/Snake_with_menus/TryAgain.java diff --git a/week_10/Snake_with_menus/App.java b/week_10/Snake_with_menus/App.java new file mode 100644 index 0000000..f8fe4bd --- /dev/null +++ b/week_10/Snake_with_menus/App.java @@ -0,0 +1,18 @@ +import java.awt.Color; + +public class App { + + public static void main(String[] args) { + + MainMenu mainMenu = new MainMenu(); + + mainMenu.setDefaultCloseOperation(mainMenu.EXIT_ON_CLOSE); + mainMenu.setSize(500, 500); + mainMenu.setVisible(true); + mainMenu.setLocationRelativeTo(null); + mainMenu.setResizable(false); + // background color of frame + mainMenu.getContentPane().setBackground(new Color(200, 20, 100)); + + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/ColorMenu.java b/week_10/Snake_with_menus/ColorMenu.java new file mode 100644 index 0000000..802b4a1 --- /dev/null +++ b/week_10/Snake_with_menus/ColorMenu.java @@ -0,0 +1,74 @@ +import java.awt.Color; +import java.awt.Font; +import java.awt.*; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +public class ColorMenu extends JFrame { + + JList list; + private String[] colorlist = { "BLUE", "WHITE", "MAGENTA", "YELLOW" }; + private Color[] colors = { Color.BLUE, Color.WHITE, Color.MAGENTA, Color.YELLOW }; + + ColorMenu() { + super("Snake Game"); + this.setLayout(new FlowLayout()); + + // JLabel component + JLabel label = new JLabel(); + label.setText("Choose your favorite color: "); + label.setFont(new Font("Arial", Font.BOLD, 30)); + + // Jlist component + list = new JList(colorlist); + list.setFont(new Font("Arial", Font.BOLD, 30)); + list.setVisibleRowCount(2); + + // Sets JList to selection one option at a time + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + // Add event + EventHandler handler = new EventHandler(); + list.addListSelectionListener(handler); + + // JScrollPane + JScrollPane scrollPane = new JScrollPane(list); + + // ADd components to frame + this.add(label); + this.add(scrollPane); + + // Close java program when closing window + this.setDefaultCloseOperation(EXIT_ON_CLOSE); + // dimension of frame + this.setSize(500, 500); + // makes frame appear + this.setVisible(true); + // set frame to center + this.setLocationRelativeTo(null); + // background color of frame + this.getContentPane().setBackground(new Color(200, 20, 100)); + } + + // Event handler + private class EventHandler implements ListSelectionListener { + + public void valueChanged(ListSelectionEvent event) { + + GamePanel gp = new GamePanel(); + gp.snakeColor = colors[list.getSelectedIndex()]; + + // goes to player menu + new PlayerMenu(); + + // closes color menu + dispose(); + } + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/DifficultyMenu.java b/week_10/Snake_with_menus/DifficultyMenu.java new file mode 100644 index 0000000..fcaf71f --- /dev/null +++ b/week_10/Snake_with_menus/DifficultyMenu.java @@ -0,0 +1,70 @@ +import javax.swing.JButton; +import javax.swing.JFrame; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class DifficultyMenu extends JFrame { + DifficultyMenu() { + super("Snake Game"); + this.setLayout(new FlowLayout()); + + JButton easyButton = new JButton(); + easyButton.setText("EASY"); + easyButton.setFont(new Font("Arial", Font.BOLD, 30)); + // Add event to easy button + EventHandler easyHandler = new EventHandler(200); + easyButton.addActionListener(easyHandler); + + JButton mediumButton = new JButton(); + mediumButton.setText("MEDIUM"); + mediumButton.setFont(new Font("Arial", Font.BOLD, 30)); + // Add event to easy button + EventHandler mediumHandler = new EventHandler(120); + mediumButton.addActionListener(mediumHandler); + + JButton hardButton = new JButton(); + hardButton.setText("HARD"); + hardButton.setFont(new Font("Arial", Font.BOLD, 30)); + // Add event to easy button + EventHandler hardHandler = new EventHandler(40); + hardButton.addActionListener(hardHandler); + + add(easyButton); + add(mediumButton); + add(hardButton); + + // Close java program when closing window + this.setDefaultCloseOperation(EXIT_ON_CLOSE); + // dimension of frame + this.setSize(500, 500); + // makes frame appear + this.setVisible(true); + // set frame to center + this.setLocationRelativeTo(null); + // background color of frame + this.getContentPane().setBackground(new Color(200, 20, 100)); + } + + private class EventHandler implements ActionListener { + + int snakeSpeed; + + // Constructor + EventHandler(int speed) { + this.snakeSpeed = speed; + } + + public void actionPerformed(ActionEvent event) { + GamePanel gp = new GamePanel(); + gp.DELAY = snakeSpeed; + + // Goes to colormenu frame + new ColorMenu(); + + // Closes difficulty menu frame + dispose(); + } + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/GameFrame.java b/week_10/Snake_with_menus/GameFrame.java new file mode 100644 index 0000000..a781abb --- /dev/null +++ b/week_10/Snake_with_menus/GameFrame.java @@ -0,0 +1,16 @@ +import javax.swing.JFrame; + +public class GameFrame extends JFrame { + + GameFrame() { + + this.add(new GamePanel()); + this.setTitle("Snake"); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setResizable(false); + this.pack(); + this.setVisible(true); + this.setLocationRelativeTo(null); + + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/GamePanel.java b/week_10/Snake_with_menus/GamePanel.java new file mode 100644 index 0000000..34bc9a2 --- /dev/null +++ b/week_10/Snake_with_menus/GamePanel.java @@ -0,0 +1,219 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.util.Random; + +public class GamePanel extends JPanel implements ActionListener { + + static final int SCREEN_WIDTH = 1300; + static final int SCREEN_HEIGHT = 750; + static final int UNIT_SIZE = 50; + static final int GAME_UNITS = (SCREEN_WIDTH * SCREEN_HEIGHT) / (UNIT_SIZE * UNIT_SIZE); + + static boolean gameEnd = false; + + // Snake Speed + static int DELAY; + + // Snake Color + static Color snakeColor; + + // Player name + static String playerName; + + final int x[] = new int[GAME_UNITS]; + final int y[] = new int[GAME_UNITS]; + int bodyParts = 6; + int applesEaten; + int appleX; + int appleY; + char direction = 'R'; + boolean running = false; + Timer timer; + Random random; + private Image apple; + + GamePanel() { + random = new Random(); + apple = new ImageIcon("apple.png").getImage(); + this.setPreferredSize(new Dimension(SCREEN_WIDTH, SCREEN_HEIGHT)); + this.setBackground(Color.black); + this.setFocusable(true); + this.addKeyListener(new MyKeyAdapter()); + startGame(); + } + + public void startGame() { + newApple(); + running = true; + timer = new Timer(DELAY, this); + timer.start(); + } + + public void paintComponent(Graphics g) { + super.paintComponent(g); + draw(g); + } + + public void draw(Graphics g) { + + Graphics2D g2d = (Graphics2D) g; + + if (running) { + g2d.setColor(Color.red); + // g2d.fillOval(appleX, appleY, UNIT_SIZE, UNIT_SIZE); + drawApple(g2d, appleX, appleY); + + for (int i = 0; i < bodyParts; i++) { + if (i == 0) { + g2d.setColor(snakeColor); + g.fillRect(x[i], y[i], UNIT_SIZE, UNIT_SIZE); + } else { + g2d.setColor(snakeColor); + g2d.fillRect(x[i], y[i], UNIT_SIZE, UNIT_SIZE); + } + } + g2d.setColor(Color.red); + g2d.setFont(new Font("Ink Free", Font.BOLD, 40)); + FontMetrics metrics = getFontMetrics(g2d.getFont()); + + g2d.drawString("Player: " + playerName, 0, g2d.getFont().getSize()); + + g2d.drawString("Score: " + applesEaten, (SCREEN_WIDTH - metrics.stringWidth("Score: " + applesEaten)) / 2, + g2d.getFont().getSize()); + } else { + gameOver(g2d); + } + + } + + public void newApple() { + appleX = random.nextInt((int) (SCREEN_WIDTH / UNIT_SIZE)) * UNIT_SIZE; + appleY = random.nextInt((int) (SCREEN_HEIGHT / UNIT_SIZE)) * UNIT_SIZE; + } + + private void drawApple(Graphics2D g2d, int x, int y) { + + g2d.drawImage(apple, x, y, this); + } + + public void move() { + for (int i = bodyParts; i > 0; i--) { + x[i] = x[i - 1]; + y[i] = y[i - 1]; + } + + switch (direction) { + case 'U': + y[0] = y[0] - UNIT_SIZE; + break; + case 'D': + y[0] = y[0] + UNIT_SIZE; + break; + case 'L': + x[0] = x[0] - UNIT_SIZE; + break; + case 'R': + x[0] = x[0] + UNIT_SIZE; + break; + } + + } + + public void checkApple() { + if ((x[0] == appleX) && (y[0] == appleY)) { + bodyParts++; + applesEaten++; + newApple(); + } + } + + public void checkCollisions() { + // checks if head collides with body + for (int i = bodyParts; i > 0; i--) { + if ((x[0] == x[i]) && (y[0] == y[i])) { + running = false; + } + } + // check if head touches left border + if (x[0] < 0) { + running = false; + } + // check if head touches right border + if (x[0] > SCREEN_WIDTH) { + running = false; + } + // check if head touches top border + if (y[0] < 0) { + running = false; + } + // check if head touches bottom border + if (y[0] > SCREEN_HEIGHT) { + running = false; + } + + if (!running) { + timer.stop(); + } + } + + public void gameOver(Graphics2D g) { + // Score + g.setColor(Color.red); + g.setFont(new Font("Ink Free", Font.BOLD, 40)); + FontMetrics metrics1 = getFontMetrics(g.getFont()); + g.drawString("Score: " + applesEaten, (SCREEN_WIDTH - metrics1.stringWidth("Score: " + applesEaten)) / 2, + g.getFont().getSize()); + // Game Over text + g.setColor(Color.red); + g.setFont(new Font("Ink Free", Font.BOLD, 75)); + FontMetrics metrics2 = getFontMetrics(g.getFont()); + g.drawString("Game Over", (SCREEN_WIDTH - metrics2.stringWidth("Game Over")) / 2, SCREEN_HEIGHT / 2); + + // Create object that refers to GameFrame + JFrame parent = (JFrame) this.getTopLevelAncestor(); + parent.dispose(); + + // Go to try again frame + new TryAgain(); + } + + @Override + public void actionPerformed(ActionEvent e) { + + if (running) { + move(); + checkApple(); + checkCollisions(); + } + repaint(); + } + + public class MyKeyAdapter extends KeyAdapter { + @Override + public void keyPressed(KeyEvent e) { + switch (e.getKeyCode()) { + case KeyEvent.VK_LEFT: + if (direction != 'R') { + direction = 'L'; + } + break; + case KeyEvent.VK_RIGHT: + if (direction != 'L') { + direction = 'R'; + } + break; + case KeyEvent.VK_UP: + if (direction != 'D') { + direction = 'U'; + } + break; + case KeyEvent.VK_DOWN: + if (direction != 'U') { + direction = 'D'; + } + break; + } + } + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/MainMenu.java b/week_10/Snake_with_menus/MainMenu.java new file mode 100644 index 0000000..a9898cd --- /dev/null +++ b/week_10/Snake_with_menus/MainMenu.java @@ -0,0 +1,45 @@ +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; + +import java.awt.*; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class MainMenu extends JFrame { + MainMenu() { + super("Snake Game"); + this.setLayout(new FlowLayout()); + + ImageIcon snakeIcon = new ImageIcon("rainbowcat.gif"); + JLabel label = new JLabel(); + label.setIcon(snakeIcon); + + JButton button = new JButton(); + button.setText("START GAME"); + button.setFont(new Font("Consolas", Font.BOLD, 25)); + + EventHandler handler = new EventHandler(); + button.addActionListener(handler); + + this.add(label); + this.add(button); + } + + // Event handler class + private class EventHandler implements ActionListener { + + public void actionPerformed(ActionEvent event) { + // JOptionPane.showMessageDialog(null, "HELLO ELIZER PONIO JR"); + + // Switches to difficulty menu + new DifficultyMenu(); + + // Closes main menu + dispose(); + } + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/PlayerMenu.java b/week_10/Snake_with_menus/PlayerMenu.java new file mode 100644 index 0000000..596c4e9 --- /dev/null +++ b/week_10/Snake_with_menus/PlayerMenu.java @@ -0,0 +1,72 @@ +import java.awt.Color; +import java.awt.event.KeyListener; +import java.awt.event.KeyEvent; +import java.awt.*; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JTextField; + +public class PlayerMenu extends JFrame { + + JTextField textField; + + PlayerMenu() { + super("Snake Game"); + this.setLayout(new FlowLayout()); + + // JLabel + JLabel label = new JLabel(); + label.setText("Enter player name: "); + label.setFont(new Font("Arial", Font.BOLD, 30)); + + // JTextField + textField = new JTextField(20); + // Adds event to textfield + EventHandler handler = new EventHandler(); + textField.addKeyListener(handler); + + // Add components to frame + this.add(label); + this.add(textField); + + // Close java program when closing window + this.setDefaultCloseOperation(EXIT_ON_CLOSE); + // dimension of frame + this.setSize(500, 500); + // makes frame appear + this.setVisible(true); + // set frame to center + this.setLocationRelativeTo(null); + // background color of frame + this.getContentPane().setBackground(new Color(200, 20, 100)); + } + + private class EventHandler implements KeyListener { + + public void keyPressed(KeyEvent event) { + + GamePanel gp = new GamePanel(); + + // If ENTER button is pressed, do this + if (event.getKeyCode() == KeyEvent.VK_ENTER) { + + gp.playerName = textField.getText(); + + // Close playermenu frame + dispose(); + + // Go to game frame + new GameFrame(); + } + } + + public void keyTyped(KeyEvent event) { + // + } + + public void keyReleased(KeyEvent event) { + // + } + } +} \ No newline at end of file diff --git a/week_10/Snake_with_menus/TryAgain.java b/week_10/Snake_with_menus/TryAgain.java new file mode 100644 index 0000000..85f0291 --- /dev/null +++ b/week_10/Snake_with_menus/TryAgain.java @@ -0,0 +1,57 @@ +import javax.swing.JButton; +import javax.swing.JFrame; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class TryAgain extends JFrame { + TryAgain() { + super("Snake Game"); + this.setLayout(new FlowLayout()); + + JButton tryAgainButton = new JButton(); + tryAgainButton.setText("TRY AGAIN"); + tryAgainButton.setFont(new Font("Arial", Font.BOLD, 30)); + // Add event to easy button + TryAgainEventHandler tryHandler = new TryAgainEventHandler(); + tryAgainButton.addActionListener(tryHandler); + + JButton exitButton = new JButton(); + exitButton.setText("EXIT"); + exitButton.setFont(new Font("Arial", Font.BOLD, 30)); + // Add event to easy button + ExitEventHandler exitHandler = new ExitEventHandler(); + exitButton.addActionListener(exitHandler); + + add(tryAgainButton); + add(exitButton); + + // Close java program when closing window + this.setDefaultCloseOperation(EXIT_ON_CLOSE); + // dimension of frame + this.setSize(500, 500); + // makes frame appear + this.setVisible(true); + // set frame to center + this.setLocationRelativeTo(null); + // background color of frame + this.getContentPane().setBackground(new Color(200, 20, 100)); + } + + private class TryAgainEventHandler implements ActionListener { + + public void actionPerformed(ActionEvent event) { + App myApp = new App(); + myApp.main(null); + dispose(); + } + } + + private class ExitEventHandler implements ActionListener { + + public void actionPerformed(ActionEvent event) { + dispose(); + } + } +} \ No newline at end of file From 01fdffb0b0788e151e66728a5843568d9ccd15f0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sun, 16 Jun 2024 04:38:09 +0800 Subject: [PATCH 157/183] =?UTF-8?q?=F0=9F=9A=80=20Add=20png,=20jpg=20and?= =?UTF-8?q?=20gif=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_10/Snake_with_menus/apple.png | Bin 0 -> 1959 bytes week_10/Snake_with_menus/rainbowcat.gif | Bin 0 -> 249361 bytes week_10/Snake_with_menus/snake.jpg | Bin 0 -> 38851 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 week_10/Snake_with_menus/apple.png create mode 100644 week_10/Snake_with_menus/rainbowcat.gif create mode 100644 week_10/Snake_with_menus/snake.jpg diff --git a/week_10/Snake_with_menus/apple.png b/week_10/Snake_with_menus/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e69ba1e2894ed12db03208e524ca27a70dbeb2 GIT binary patch literal 1959 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

    #$^;%mwQzB+Sj9i`(0xh`T4{?<4_i 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

    WI=Nd*KY~UKwszhCy=kp&fRh9dYM9LbYh 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 CQ))W^ literal 0 HcmV?d00001 diff --git a/week_10/Snake_with_menus/snake.jpg b/week_10/Snake_with_menus/snake.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0a03f4ceafbb8a42f9cf03c14f89be3b7affb5e GIT binary patch literal 38851 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

    d4R+6>3p6N$~WPEd! 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 BJYoO< literal 0 HcmV?d00001 From 5767962b5e604b2c04a74791774e419cc31010ca Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:42:02 +0000 Subject: [PATCH 158/183] =?UTF-8?q?=F0=9F=91=B7=20Rename=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {week_10 => week_x10}/Image_as_Background/App.java | 0 .../Image_as_Background/MainMenu.java | 0 {week_10 => week_x10}/MouseEvents/App.java | 0 {week_10 => week_x10}/MouseEvents/Frame.java | 0 {week_10 => week_x10}/Snake_with_menus/App.java | 0 .../Snake_with_menus/ColorMenu.java | 0 .../Snake_with_menus/DifficultyMenu.java | 0 .../Snake_with_menus/GameFrame.java | 0 .../Snake_with_menus/GamePanel.java | 0 .../Snake_with_menus/MainMenu.java | 0 .../Snake_with_menus/PlayerMenu.java | 0 .../Snake_with_menus/TryAgain.java | 0 {week_10 => week_x10}/Snake_with_menus/apple.png | Bin .../Snake_with_menus/rainbowcat.gif | Bin {week_10 => week_x10}/Snake_with_menus/snake.jpg | Bin 15 files changed, 0 insertions(+), 0 deletions(-) rename {week_10 => week_x10}/Image_as_Background/App.java (100%) rename {week_10 => week_x10}/Image_as_Background/MainMenu.java (100%) rename {week_10 => week_x10}/MouseEvents/App.java (100%) rename {week_10 => week_x10}/MouseEvents/Frame.java (100%) rename {week_10 => week_x10}/Snake_with_menus/App.java (100%) rename {week_10 => week_x10}/Snake_with_menus/ColorMenu.java (100%) rename {week_10 => week_x10}/Snake_with_menus/DifficultyMenu.java (100%) rename {week_10 => week_x10}/Snake_with_menus/GameFrame.java (100%) rename {week_10 => week_x10}/Snake_with_menus/GamePanel.java (100%) rename {week_10 => week_x10}/Snake_with_menus/MainMenu.java (100%) rename {week_10 => week_x10}/Snake_with_menus/PlayerMenu.java (100%) rename {week_10 => week_x10}/Snake_with_menus/TryAgain.java (100%) rename {week_10 => week_x10}/Snake_with_menus/apple.png (100%) rename {week_10 => week_x10}/Snake_with_menus/rainbowcat.gif (100%) rename {week_10 => week_x10}/Snake_with_menus/snake.jpg (100%) diff --git a/week_10/Image_as_Background/App.java b/week_x10/Image_as_Background/App.java similarity index 100% rename from week_10/Image_as_Background/App.java rename to week_x10/Image_as_Background/App.java diff --git a/week_10/Image_as_Background/MainMenu.java b/week_x10/Image_as_Background/MainMenu.java similarity index 100% rename from week_10/Image_as_Background/MainMenu.java rename to week_x10/Image_as_Background/MainMenu.java diff --git a/week_10/MouseEvents/App.java b/week_x10/MouseEvents/App.java similarity index 100% rename from week_10/MouseEvents/App.java rename to week_x10/MouseEvents/App.java diff --git a/week_10/MouseEvents/Frame.java b/week_x10/MouseEvents/Frame.java similarity index 100% rename from week_10/MouseEvents/Frame.java rename to week_x10/MouseEvents/Frame.java diff --git a/week_10/Snake_with_menus/App.java b/week_x10/Snake_with_menus/App.java similarity index 100% rename from week_10/Snake_with_menus/App.java rename to week_x10/Snake_with_menus/App.java diff --git a/week_10/Snake_with_menus/ColorMenu.java b/week_x10/Snake_with_menus/ColorMenu.java similarity index 100% rename from week_10/Snake_with_menus/ColorMenu.java rename to week_x10/Snake_with_menus/ColorMenu.java diff --git a/week_10/Snake_with_menus/DifficultyMenu.java b/week_x10/Snake_with_menus/DifficultyMenu.java similarity index 100% rename from week_10/Snake_with_menus/DifficultyMenu.java rename to week_x10/Snake_with_menus/DifficultyMenu.java diff --git a/week_10/Snake_with_menus/GameFrame.java b/week_x10/Snake_with_menus/GameFrame.java similarity index 100% rename from week_10/Snake_with_menus/GameFrame.java rename to week_x10/Snake_with_menus/GameFrame.java diff --git a/week_10/Snake_with_menus/GamePanel.java b/week_x10/Snake_with_menus/GamePanel.java similarity index 100% rename from week_10/Snake_with_menus/GamePanel.java rename to week_x10/Snake_with_menus/GamePanel.java diff --git a/week_10/Snake_with_menus/MainMenu.java b/week_x10/Snake_with_menus/MainMenu.java similarity index 100% rename from week_10/Snake_with_menus/MainMenu.java rename to week_x10/Snake_with_menus/MainMenu.java diff --git a/week_10/Snake_with_menus/PlayerMenu.java b/week_x10/Snake_with_menus/PlayerMenu.java similarity index 100% rename from week_10/Snake_with_menus/PlayerMenu.java rename to week_x10/Snake_with_menus/PlayerMenu.java diff --git a/week_10/Snake_with_menus/TryAgain.java b/week_x10/Snake_with_menus/TryAgain.java similarity index 100% rename from week_10/Snake_with_menus/TryAgain.java rename to week_x10/Snake_with_menus/TryAgain.java diff --git a/week_10/Snake_with_menus/apple.png b/week_x10/Snake_with_menus/apple.png similarity index 100% rename from week_10/Snake_with_menus/apple.png rename to week_x10/Snake_with_menus/apple.png diff --git a/week_10/Snake_with_menus/rainbowcat.gif b/week_x10/Snake_with_menus/rainbowcat.gif similarity index 100% rename from week_10/Snake_with_menus/rainbowcat.gif rename to week_x10/Snake_with_menus/rainbowcat.gif diff --git a/week_10/Snake_with_menus/snake.jpg b/week_x10/Snake_with_menus/snake.jpg similarity index 100% rename from week_10/Snake_with_menus/snake.jpg rename to week_x10/Snake_with_menus/snake.jpg From ad58ff589da3daefa7dab880b80a25ec99770056 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:04:10 +0800 Subject: [PATCH 159/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c7d2f6b..3bef743 100644 --- a/README.md +++ b/README.md @@ -235,10 +235,10 @@ To be follow - 💻 Long Quiz No. 2 ## [6.1.3] - 2024-06-08     -- ✨ Coming Soon   -- ✨ Coming Soon +- ✨ Coming Soon    +- ✨ Coming Soon   ### Activity -- 💻 Lab Lecture   +- 💻 Lab Lecture - Introduction to Swing Packages  ## [6.1.1] - 2024-06-15       - ✨ Coming Soon  From 650d0384f7cb8d41e6b0dc29463f4ef15e78f582 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:06:45 +0800 Subject: [PATCH 160/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3bef743..8584830 100644 --- a/README.md +++ b/README.md @@ -195,7 +195,7 @@ To be follow - ✨ Discussion regarding recursion  - ✨ Added Source code for recursion -### Activity +### Activity - 💻 45 Minutes  - 💻 Long Quiz @@ -232,11 +232,11 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2 +- 💻 Long Quiz No. 2   ## [6.1.3] - 2024-06-08     -- ✨ Coming Soon    -- ✨ Coming Soon   +- ✨ Add 2 Sample of JButton      +- ✨ Coming Soon    ### Activity - 💻 Lab Lecture - Introduction to Swing Packages  From f925bc4180c09b54c37785fa82c382ce42392fe0 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:08:06 +0800 Subject: [PATCH 161/183] =?UTF-8?q?=E2=9C=A8=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8584830..f87d1d6 100644 --- a/README.md +++ b/README.md @@ -235,7 +235,8 @@ To be follow - 💻 Long Quiz No. 2   ## [6.1.3] - 2024-06-08     -- ✨ Add 2 Sample of JButton      +- ✨ Add 2 Sample of JButton     +- ✨ Add Java file for JCheckBox      - ✨ Coming Soon    ### Activity - 💻 Lab Lecture - Introduction to Swing Packages  From c5e11e6a1f6599007c99bcf9f60c9f218777ab38 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:09:58 +0800 Subject: [PATCH 162/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f87d1d6..7dc5ee7 100644 --- a/README.md +++ b/README.md @@ -232,12 +232,18 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2   +- 💻 Long Quiz No. 2     ## [6.1.3] - 2024-06-08     -- ✨ Add 2 Sample of JButton     -- ✨ Add Java file for JCheckBox      -- ✨ Coming Soon    +- ✨ Add 2 Sample of JButton      +- ✨ Add Java file for JCheckBox    +- ✨ Add Java file for JComboBox        +- ✨ Coming Soon   +- ✨          +- ✨   +- ✨  +- ✨ +- ✨                        ### Activity - 💻 Lab Lecture - Introduction to Swing Packages  From f57e449791e057bc04900adfa96f83610662b42a Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:10:37 +0800 Subject: [PATCH 163/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7dc5ee7..2deb763 100644 --- a/README.md +++ b/README.md @@ -225,20 +225,20 @@ To be follow - 💻 Lab Class - 💻 Lab Activity 5 Object and Classes -## [5.1.2] - 2024-05-25          +## [5.1.2] - 2024-05-25           ### Added  - ✨ Added Polymorphism code example ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2     +- 💻 Long Quiz No. 2       ## [6.1.3] - 2024-06-08     - ✨ Add 2 Sample of JButton      - ✨ Add Java file for JCheckBox    - ✨ Add Java file for JComboBox        -- ✨ Coming Soon   +- ✨ Add Java file for JFrame   - ✨          - ✨   - ✨  From 2953f904fd98199986f96cec3464ddee616f531d Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:12:27 +0800 Subject: [PATCH 164/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2deb763..7f141b8 100644 --- a/README.md +++ b/README.md @@ -232,14 +232,14 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2       +- 💻 Long Quiz No. 2         -## [6.1.3] - 2024-06-08     +## [6.1.3] - 2024-06-08      - ✨ Add 2 Sample of JButton      - ✨ Add Java file for JCheckBox    - ✨ Add Java file for JComboBox        -- ✨ Add Java file for JFrame   -- ✨          +- ✨ Add Java file for JFrame    +- ✨ Add Java file for JLabel          - ✨   - ✨  - ✨ From 9ee2ab533d33f6d3fdcee2cd0ee68195cebe5766 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:15:53 +0800 Subject: [PATCH 165/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7f141b8..655d074 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ To be follow - ✨ Fixed Systax error - ✨ Fixed build structure -## [4.1.4] - 2024-05-04  +## [4.1.4] - 2024-05-04  - ✨ Discussion regarding recursion  - ✨ Added Source code for recursion @@ -232,7 +232,7 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2         +- 💻 Long Quiz No. 2          ## [6.1.3] - 2024-06-08      - ✨ Add 2 Sample of JButton      @@ -240,10 +240,10 @@ To be follow - ✨ Add Java file for JComboBox        - ✨ Add Java file for JFrame    - ✨ Add Java file for JLabel          -- ✨   +- ✨ Add JList Java file folder for Single & Multiple Selection   - ✨  - ✨ -- ✨                        +- ✨                         ### Activity - 💻 Lab Lecture - Introduction to Swing Packages  From 002f1aa6240b89d9f957fdc897ae66c78a4cea3d Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:16:59 +0800 Subject: [PATCH 166/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 655d074..bce5599 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2          +- 💻 Long Quiz No. 2            ## [6.1.3] - 2024-06-08      - ✨ Add 2 Sample of JButton      @@ -241,7 +241,7 @@ To be follow - ✨ Add Java file for JFrame    - ✨ Add Java file for JLabel          - ✨ Add JList Java file folder for Single & Multiple Selection   -- ✨  +- ✨ Add Java file for JPanel - ✨ - ✨                         ### Activity From d5748a3a56d83d8efef24ede658862d5a959ac72 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:18:58 +0800 Subject: [PATCH 167/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bce5599..170c645 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,7 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2            +- 💻 Long Quiz No. 2                 ## [6.1.3] - 2024-06-08      - ✨ Add 2 Sample of JButton      @@ -242,7 +242,7 @@ To be follow - ✨ Add Java file for JLabel          - ✨ Add JList Java file folder for Single & Multiple Selection   - ✨ Add Java file for JPanel -- ✨ +- ✨ Add Java file for JRadioButton - ✨                         ### Activity - 💻 Lab Lecture - Introduction to Swing Packages  From dfa1316454c029bc4e85c9e34558e1f83bfce3cf Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:22:53 +0800 Subject: [PATCH 168/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 170c645..3828026 100644 --- a/README.md +++ b/README.md @@ -238,12 +238,12 @@ To be follow - ✨ Add 2 Sample of JButton      - ✨ Add Java file for JCheckBox    - ✨ Add Java file for JComboBox        -- ✨ Add Java file for JFrame    +- ✨ Add Java file for JFrame     - ✨ Add Java file for JLabel          - ✨ Add JList Java file folder for Single & Multiple Selection   -- ✨ Add Java file for JPanel +- ✨ Add Java file for JPanel  - ✨ Add Java file for JRadioButton -- ✨                         +- ✨ Add 3 file folder for Layout: ( BorderLayout, FlowLayout and GridLayout )                         ### Activity - 💻 Lab Lecture - Introduction to Swing Packages  From b1104953e8f5f6e5ed32f18d078fe83d365de11e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:31:51 +0800 Subject: [PATCH 169/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3828026..400e39d 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ To be follow # 📫 Changelogs      ## [4.1.4] - 2024-04-6       -### Added  +### Added   - ✨ Uploaded the Course Syllabus - ✨ Added breakdown and documentation @@ -226,30 +226,34 @@ To be follow - 💻 Lab Activity 5 Object and Classes ## [5.1.2] - 2024-05-25           -### Added  +### Added     - ✨ Added Polymorphism code example ## [6.1.1] - 2024-06-01    ### Activity -- 💻 Long Quiz No. 2                 +- 💻 Long Quiz No. 2                  -## [6.1.3] - 2024-06-08      +## [6.1.10] - 2024-06-08 +### Added - ✨ Add 2 Sample of JButton      -- ✨ Add Java file for JCheckBox    -- ✨ Add Java file for JComboBox        +- ✨ Add Java file for JCheckBox     +- ✨ Add Java file for JComboBox         - ✨ Add Java file for JFrame     -- ✨ Add Java file for JLabel          -- ✨ Add JList Java file folder for Single & Multiple Selection   +- ✨ Add Java file for JLabel           +- ✨ Add JList Java file folder for Single & Multiple Selection    - ✨ Add Java file for JPanel  - ✨ Add Java file for JRadioButton - ✨ Add 3 file folder for Layout: ( BorderLayout, FlowLayout and GridLayout )                         -### Activity +### Activity  - 💻 Lab Lecture - Introduction to Swing Packages  -## [6.1.1] - 2024-06-15       -- ✨ Coming Soon  +## [6.1.1] - 2024-06-15 +### Added +- ✨ Add Java file for Image as Background        - ✨ Coming Soon +### Activity  +- 💻 Lab Lecture - Introduction to Swing Packages   From 0a166536aed10b427b042d6a1f56b952756f67b6 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:34:58 +0800 Subject: [PATCH 170/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 400e39d..7439e9f 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ - [FAQ](#faq)       - [Changelog](#changelogs)   -## [Introduction](#introduction) +## [Introduction](#introduction) This repository contains source code for a Java project that focuses on Intermediate concepts, codes and exercises. #### Course Description: @@ -213,7 +213,7 @@ To be follow - 💻 Lab Activity 4 ## [4.1.5] - 2024-05-18          -### Added  +### Added  - ✨ Add Object and Classes java file - ✨ Add Professor Jay example for object and classes java file @@ -244,20 +244,19 @@ To be follow - ✨ Add JList Java file folder for Single & Multiple Selection    - ✨ Add Java file for JPanel  - ✨ Add Java file for JRadioButton -- ✨ Add 3 file folder for Layout: ( BorderLayout, FlowLayout and GridLayout )                         +- ✨ Add 3 file folder for Layout: ( BorderLayout, FlowLayout and GridLayout )                          ### Activity  - 💻 Lab Lecture - Introduction to Swing Packages  ## [6.1.1] - 2024-06-15 ### Added - ✨ Add Java file for Image as Background        -- ✨ Coming Soon -### Activity  +- ✨ Add Java file for MouseEvents +- ✨ Add Java Application: Snake Game      +### Activity    - 💻 Lab Lecture - Introduction to Swing Packages   - - #### [Back to Table of Content](#introduction)     From 7becba8beb70328592931343a9be151b9b35fa1f Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:50:10 +0800 Subject: [PATCH 171/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7439e9f..5349dc2 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ To be follow - 💻 Lab Class - 💻 Lab Activity 5 Object and Classes -## [5.1.2] - 2024-05-25           +## [5.1.2] - 2024-05-25           ### Added     - ✨ Added Polymorphism code example @@ -248,15 +248,21 @@ To be follow ### Activity  - 💻 Lab Lecture - Introduction to Swing Packages  -## [6.1.1] - 2024-06-15 -### Added +## [6.1.1] - 2024-06-15    +### Added - ✨ Add Java file for Image as Background        - ✨ Add Java file for MouseEvents - ✨ Add Java Application: Snake Game      ### Activity    - 💻 Lab Lecture - Introduction to Swing Packages -  +## [6.1.1] - 2024-06-22      +### Added +- ✨ Coming Soon          +- ✨ Coming Soon +- ✨ Coming Soon      + +  #### [Back to Table of Content](#introduction)     From 4ac7ffb8a89742886ce874c55bdd9aaaa44dcfa2 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:30:13 +0000 Subject: [PATCH 172/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Multithreading=20f?= =?UTF-8?q?or=20extends=20and=20implements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extends and implements/App.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 week_y11/Multithreading/extends and implements/App.java diff --git a/week_y11/Multithreading/extends and implements/App.java b/week_y11/Multithreading/extends and implements/App.java new file mode 100644 index 0000000..af3f792 --- /dev/null +++ b/week_y11/Multithreading/extends and implements/App.java @@ -0,0 +1,26 @@ +public class App { + public static void main(String[] args) throws Exception { + + // Thread created using Thread class + MyThread thread1 = new MyThread(); + + // Thread created using Runnable Interface + MyRunnable runnable1 = new MyRunnable(); + Thread thread2 = new Thread(runnable1); + + // thread1.setDaemon(true); + // thread2.setDaemon(true); + + thread1.start(); + + // Will wait until thread1 dies + // thread1.join(); + + // Will wait until thread1 dies for a specified time in milliseconds + thread1.join(3000); + + thread2.start(); + + // System.out.println(1 / 0); + } +} \ No newline at end of file From 0f7c735697142195b26512cfc5414b459f9f5827 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:32:23 +0000 Subject: [PATCH 173/183] =?UTF-8?q?=F0=9F=93=93=20Add=20MyRunnable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extends and implements/MyRunnable.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 week_y11/Multithreading/extends and implements/MyRunnable.java diff --git a/week_y11/Multithreading/extends and implements/MyRunnable.java b/week_y11/Multithreading/extends and implements/MyRunnable.java new file mode 100644 index 0000000..046b20a --- /dev/null +++ b/week_y11/Multithreading/extends and implements/MyRunnable.java @@ -0,0 +1,20 @@ +public class MyRunnable implements Runnable { + + @Override + public void run() { + + for (int i = 0; i < 10; i++) { + System.out.println("Thread # 2: " + i); + + try { + Thread.sleep(1000); + } catch (Exception e) { + e.printStackTrace(); + } + + // System.out.println(1 / 0); + } + + System.out.println("Thread # 2 is finished :)"); + } +} \ No newline at end of file From be917a075098bdfa86d462aa6217c0dfd1f2ffc1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:33:50 +0000 Subject: [PATCH 174/183] =?UTF-8?q?=F0=9F=93=93=20Add=20MyThread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extends and implements/MyThread.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 week_y11/Multithreading/extends and implements/MyThread.java diff --git a/week_y11/Multithreading/extends and implements/MyThread.java b/week_y11/Multithreading/extends and implements/MyThread.java new file mode 100644 index 0000000..db2dfe3 --- /dev/null +++ b/week_y11/Multithreading/extends and implements/MyThread.java @@ -0,0 +1,18 @@ +public class MyThread extends Thread { + + @Override + public void run() { + + for (int i = 10; i > 0; i--) { + System.out.println("Thread # 1: " + i); + + try { + Thread.sleep(1000); + } catch (Exception e) { + e.printStackTrace(); + } + } + + System.out.println("Thread # 1 is finished :)"); + } +} \ No newline at end of file From 7410c956eb5a230651656e4d8332e846f86b487e Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:37:44 +0000 Subject: [PATCH 175/183] =?UTF-8?q?=F0=9F=93=93=20Add=20extends=20and=20im?= =?UTF-8?q?plements=20file=20for=20Multithreading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_y11/Multithreading/extends/App.java | 15 +++++++++++ week_y11/Multithreading/extends/MyThread.java | 22 ++++++++++++++++ week_y11/Multithreading/implements/App.java | 16 ++++++++++++ .../Multithreading/implements/MyThread.java | 25 +++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 week_y11/Multithreading/extends/App.java create mode 100644 week_y11/Multithreading/extends/MyThread.java create mode 100644 week_y11/Multithreading/implements/App.java create mode 100644 week_y11/Multithreading/implements/MyThread.java diff --git a/week_y11/Multithreading/extends/App.java b/week_y11/Multithreading/extends/App.java new file mode 100644 index 0000000..1764a95 --- /dev/null +++ b/week_y11/Multithreading/extends/App.java @@ -0,0 +1,15 @@ +public class App { + public static void main(String[] args) throws Exception { + + MyThread thread1 = new MyThread("YouTube"); + MyThread thread2 = new MyThread("Facebook"); + MyThread thread3 = new MyThread("Instagram"); + MyThread thread4 = new MyThread("TikTok"); + + // Start all threads at once + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + } +} \ No newline at end of file diff --git a/week_y11/Multithreading/extends/MyThread.java b/week_y11/Multithreading/extends/MyThread.java new file mode 100644 index 0000000..f162ef1 --- /dev/null +++ b/week_y11/Multithreading/extends/MyThread.java @@ -0,0 +1,22 @@ +import java.util.Random; + +public class MyThread extends Thread { + String name; + int time; + Random r = new Random(); + + public MyThread(String x) { + name = x; + time = r.nextInt(999); + } + + public void run() { + try { + System.out.printf("%s is loading for %d\n", name, time); + Thread.sleep(time); + System.out.printf("%s is done\n", name); + } catch (Exception e) { + // TODO: handle exception + } + } +} \ No newline at end of file diff --git a/week_y11/Multithreading/implements/App.java b/week_y11/Multithreading/implements/App.java new file mode 100644 index 0000000..2627aa9 --- /dev/null +++ b/week_y11/Multithreading/implements/App.java @@ -0,0 +1,16 @@ +public class App { + public static void main(String[] args) throws Exception { + + Thread thread1 = new Thread(new MyThread("YouTube")); + Thread thread2 = new Thread(new MyThread("Facebook")); + Thread thread3 = new Thread(new MyThread("Instagram")); + Thread thread4 = new Thread(new MyThread("TikTok")); + + // Start all threads at once + thread1.start(); + thread2.start(); + thread3.start(); + thread4.start(); + + } +} \ No newline at end of file diff --git a/week_y11/Multithreading/implements/MyThread.java b/week_y11/Multithreading/implements/MyThread.java new file mode 100644 index 0000000..aa2f2d1 --- /dev/null +++ b/week_y11/Multithreading/implements/MyThread.java @@ -0,0 +1,25 @@ +import java.util.Random; + +import java.util.*; + +public class MyThread implements Runnable { + + String name; + int time; + Random r = new Random(); + + public MyThread(String x) { + name = x; + time = r.nextInt(999); + } + + public void run() { + try { + System.out.printf("%s is loading for %d\n", name, time); + Thread.sleep(time); + System.out.printf("%s is done\n", name); + } catch (Exception e) { + // TODO: handle exception + } + } +} \ No newline at end of file From 9c1305b81fe4d4783f0089c9489cdec51fb40969 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:41:04 +0000 Subject: [PATCH 176/183] =?UTF-8?q?=F0=9F=93=93=20Add=20Threads?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_y11/Threads/App.java | 52 ++++++++++++++++++++++++++++++++++ week_y11/Threads/MyThread.java | 11 +++++++ 2 files changed, 63 insertions(+) create mode 100644 week_y11/Threads/App.java create mode 100644 week_y11/Threads/MyThread.java diff --git a/week_y11/Threads/App.java b/week_y11/Threads/App.java new file mode 100644 index 0000000..d9796ae --- /dev/null +++ b/week_y11/Threads/App.java @@ -0,0 +1,52 @@ +public class App { + public static void main(String[] args) throws InterruptedException { + + // Gets the active number of threads + System.out.println(Thread.activeCount()); + + // Change the name of the current thread + Thread.currentThread().setName("MAIN"); + + // Retrieve the name of the current thread + System.out.println(Thread.currentThread().getName()); + + // Set the priority level of a thread + Thread.currentThread().setPriority(10); + + // Get the priority level of a thread + System.out.println(Thread.currentThread().getPriority()); + + System.out.println(Thread.currentThread().isAlive()); + + for (int i = 1; i > 0; i--) { + if (i == 1) { + System.out.print("Loading"); + } + Thread.sleep(1000); + System.out.print("."); + } + + System.out.println(" Finished loading"); + + // Create new thread + MyThread thread2 = new MyThread(); + + thread2.setDaemon(true); + System.out.println(thread2.isDaemon()); + + // Starts the second thread + thread2.start(); + + System.out.println(thread2.isAlive()); + + thread2.setName("Second thread"); + + System.out.println(thread2.getName()); + + thread2.setPriority(1); + + System.out.println(thread2.getPriority()); + + System.out.println(Thread.activeCount()); + } +} \ No newline at end of file diff --git a/week_y11/Threads/MyThread.java b/week_y11/Threads/MyThread.java new file mode 100644 index 0000000..c4163e9 --- /dev/null +++ b/week_y11/Threads/MyThread.java @@ -0,0 +1,11 @@ +public class MyThread extends Thread { + + public void run() { + + if (this.isDaemon()) { + System.out.println("This daemon thread is running"); + } else { + System.out.println("This user thread is running"); + } + } +} \ No newline at end of file From 92f631823c2c766b9a717bac5226d01e0a4313f1 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:43:42 +0000 Subject: [PATCH 177/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20Documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5349dc2..9c9caf8 100644 --- a/README.md +++ b/README.md @@ -258,8 +258,8 @@ To be follow ## [6.1.1] - 2024-06-22      ### Added -- ✨ Coming Soon          -- ✨ Coming Soon +- ✨ Add Thread topic and source code          +- ✨ Add Multithreading with 3 sample Java file - ✨ Coming Soon        From 76031275ae4490d0eaebc14db592a88fa3b9963d Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 20 Jun 2024 00:03:03 +0800 Subject: [PATCH 178/183] =?UTF-8?q?=F0=9F=92=BB=20Update=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9c9caf8..327dfc4 100644 --- a/README.md +++ b/README.md @@ -233,7 +233,7 @@ To be follow ## [6.1.1] - 2024-06-01    ### Activity - 💻 Long Quiz No. 2                  - + ## [6.1.10] - 2024-06-08 ### Added - ✨ Add 2 Sample of JButton      @@ -256,11 +256,10 @@ To be follow ### Activity    - 💻 Lab Lecture - Introduction to Swing Packages -## [6.1.1] - 2024-06-22      +## [6.1.2] - 2024-06-22        ### Added - ✨ Add Thread topic and source code          -- ✨ Add Multithreading with 3 sample Java file -- ✨ Coming Soon      +- ✨ Add Multithreading with 3 sample Java file          #### [Back to Table of Content](#introduction)     From 819ad4e5162ebeaa05c64feba7a2f57faa7a8b84 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 20 Jun 2024 19:32:12 +0000 Subject: [PATCH 179/183] =?UTF-8?q?=F0=9F=93=93=20Add=20locks=20App.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_z12/locks/App.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 week_z12/locks/App.java diff --git a/week_z12/locks/App.java b/week_z12/locks/App.java new file mode 100644 index 0000000..e62ff4c --- /dev/null +++ b/week_z12/locks/App.java @@ -0,0 +1,15 @@ +public class App { + + public static void main(String[] args) throws InterruptedException { + char[] myArray = new char[20]; + + Thread thread1 = new MyThread(myArray, "HELLO"); + thread1.start(); + + Thread thread2 = new MyThread(myArray, "WORLD"); + thread2.start(); + + thread1.join(); + thread2.join(); + } +} \ No newline at end of file From 8cfcad24ff602c4463f170467d5a06498dd1c787 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 20 Jun 2024 19:33:49 +0000 Subject: [PATCH 180/183] =?UTF-8?q?=F0=9F=93=93=20Add=20locks=20MyThreads.?= =?UTF-8?q?java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_z12/locks/MyThreads.java | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 week_z12/locks/MyThreads.java diff --git a/week_z12/locks/MyThreads.java b/week_z12/locks/MyThreads.java new file mode 100644 index 0000000..05408b8 --- /dev/null +++ b/week_z12/locks/MyThreads.java @@ -0,0 +1,42 @@ +import java.util.concurrent.locks.ReentrantLock; +import java.util.concurrent.locks.Lock; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class MyThread extends Thread { + + private char[] array; + private String message; + private static Lock lock = new ReentrantLock(true); + + public MyThread(char[] array, String message) { + this.array = array; + this.message = message; + } + + @Override + public void run() { + pleaseLock(); + try { + System.out.println("Lock is being used by " + Thread.currentThread().getName()); + for (int i = 0; i < message.length(); i++) { + try { + array[i] = message.charAt(i); + Thread.sleep(50); + } catch (InterruptedException ex) { + Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex); + } + } + System.out.println(array); + } finally { + lock.unlock(); + System.out.println("Lock unlocked by " + Thread.currentThread().getName()); + } + + } + + private void pleaseLock() { + lock.lock(); + } + +} \ No newline at end of file From 9bbc5a87b5a974509f55cc7988cd0af0918d5227 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 20 Jun 2024 19:37:49 +0000 Subject: [PATCH 181/183] =?UTF-8?q?=F0=9F=93=93=20Add=20registration=20jav?= =?UTF-8?q?a=20file=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_z12/registration/App.java | 22 +++++++++++++ week_z12/registration/Registration.java | 40 ++++++++++++++++++++++++ week_z12/registration/StudentThread.java | 6 ++++ 3 files changed, 68 insertions(+) create mode 100644 week_z12/registration/App.java create mode 100644 week_z12/registration/Registration.java create mode 100644 week_z12/registration/StudentThread.java diff --git a/week_z12/registration/App.java b/week_z12/registration/App.java new file mode 100644 index 0000000..a02e66d --- /dev/null +++ b/week_z12/registration/App.java @@ -0,0 +1,22 @@ +public class App { + + public static void main(String[] args) throws Exception { + + Registration reg = new Registration(); + + // Thread 1 + StudentThread student1 = new StudentThread(reg, "Jay"); + // Thread 2 + StudentThread student2 = new StudentThread(reg, "Gab"); + // Thread 2 + StudentThread student3 = new StudentThread(reg, "Ani"); + + // Start thread 1 + student1.start(); + // Start thread 2 + student2.start(); + // Start thread 3 + student3.start(); + } + +} \ No newline at end of file diff --git a/week_z12/registration/Registration.java b/week_z12/registration/Registration.java new file mode 100644 index 0000000..8924cec --- /dev/null +++ b/week_z12/registration/Registration.java @@ -0,0 +1,40 @@ +public class Registration implements Runnable { + + private int totalSlotsAvailable = 2; + + public void run() { + + // Type Casting + StudentThread st = (StudentThread) Thread.currentThread(); + + boolean slotsReserved = this.registerSection(st.getName()); + + if (slotsReserved) { + System.out.println("Congratulations " + Thread.currentThread().getName() + + ", you are now registered in this section"); + } else { + System.out + .println("Sorry " + Thread.currentThread().getName() + ", the section is already full!"); + } + } + + public synchronized boolean registerSection(String name) { + + System.out.println( + "Welcome to NUIS! " + Thread.currentThread().getName() + + ", the number of slots available for this section is : " + + this.getTotalSlotsAvailable()); + + if (totalSlotsAvailable <= 0) { + return false; + } else { + totalSlotsAvailable = totalSlotsAvailable - 1; + + return true; + } + } + + private int getTotalSlotsAvailable() { + return totalSlotsAvailable; + } +} \ No newline at end of file diff --git a/week_z12/registration/StudentThread.java b/week_z12/registration/StudentThread.java new file mode 100644 index 0000000..4d1d005 --- /dev/null +++ b/week_z12/registration/StudentThread.java @@ -0,0 +1,6 @@ +public class StudentThread extends Thread { + + public StudentThread(Runnable target, String name) { + super(target, name); + } +} \ No newline at end of file From fcea70a200e98c9d2f3fdbbdb75102e590797e6c Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Thu, 20 Jun 2024 19:42:11 +0000 Subject: [PATCH 182/183] =?UTF-8?q?=F0=9F=93=93=20Add=20reservation=20and?= =?UTF-8?q?=20shared=5Farray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week_z12/reservation/App.java | 14 ++++++++ week_z12/reservation/BusReservation.java | 43 +++++++++++++++++++++++ week_z12/reservation/PassengerThread.java | 13 +++++++ week_z12/shared_array/App.java | 19 ++++++++++ week_z12/shared_array/MyThread.java | 30 ++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 week_z12/reservation/App.java create mode 100644 week_z12/reservation/BusReservation.java create mode 100644 week_z12/reservation/PassengerThread.java create mode 100644 week_z12/shared_array/App.java create mode 100644 week_z12/shared_array/MyThread.java diff --git a/week_z12/reservation/App.java b/week_z12/reservation/App.java new file mode 100644 index 0000000..e8d8bf7 --- /dev/null +++ b/week_z12/reservation/App.java @@ -0,0 +1,14 @@ +public class App { + + public static void main(String[] args) throws Exception { + + BusReservation br = new BusReservation(); + + PassengerThread pt1 = new PassengerThread(2, br, "Sam"); + PassengerThread pt2 = new PassengerThread(2, br, "Jack"); + + pt1.start(); + pt2.start(); + } + +} \ No newline at end of file diff --git a/week_z12/reservation/BusReservation.java b/week_z12/reservation/BusReservation.java new file mode 100644 index 0000000..e9f56f2 --- /dev/null +++ b/week_z12/reservation/BusReservation.java @@ -0,0 +1,43 @@ +public class BusReservation implements Runnable { + + private int totalSeatsAvailable = 2; + + public void run() { + + PassengerThread pt = (PassengerThread) Thread.currentThread(); + + boolean ticketsBooked = this.bookTickets(pt.getSeatsNeeded(), pt.getName()); + + if (ticketsBooked) { + System.out + .println( + "Congratulations " + Thread.currentThread().getName() + + ", the number of seats you have requested: " + + pt.getSeatsNeeded() + " are booked!"); + } else { + System.out + .println("Sorry " + Thread.currentThread().getName() + ", the number of seats you have requested: " + + pt.getSeatsNeeded() + " are not available!"); + } + } + + public synchronized boolean bookTickets(int seats, String name) { + + System.out.println( + "Welcome to Bus Company! " + Thread.currentThread().getName() + + ", the number of tickets available are: " + + this.getTotalSeatsAvailable()); + + if (seats > this.getTotalSeatsAvailable()) { + return false; + } else { + totalSeatsAvailable = totalSeatsAvailable - seats; + + return true; + } + } + + private int getTotalSeatsAvailable() { + return totalSeatsAvailable; + } +} \ No newline at end of file diff --git a/week_z12/reservation/PassengerThread.java b/week_z12/reservation/PassengerThread.java new file mode 100644 index 0000000..b00c82c --- /dev/null +++ b/week_z12/reservation/PassengerThread.java @@ -0,0 +1,13 @@ +public class PassengerThread extends Thread { + + private int seatsNeeded; + + public PassengerThread(int seats, Runnable target, String name) { + super(target, name); + this.seatsNeeded = seats; + } + + public int getSeatsNeeded() { + return seatsNeeded; + } +} \ No newline at end of file diff --git a/week_z12/shared_array/App.java b/week_z12/shared_array/App.java new file mode 100644 index 0000000..1729f46 --- /dev/null +++ b/week_z12/shared_array/App.java @@ -0,0 +1,19 @@ +import java.util.ArrayList; +import java.util.List; + +public class App { + + public static void main(String[] args) throws InterruptedException { + char[] myArray = new char[20]; + + Thread thread1 = new MyThread(myArray, "HELLO"); + thread1.start(); + + Thread thread2 = new MyThread(myArray, "WORLD"); + thread2.start(); + + thread1.join(); + thread2.join(); + } +} + diff --git a/week_z12/shared_array/MyThread.java b/week_z12/shared_array/MyThread.java new file mode 100644 index 0000000..53dfae6 --- /dev/null +++ b/week_z12/shared_array/MyThread.java @@ -0,0 +1,30 @@ +import java.util.logging.Level; +import java.util.logging.Logger; + +public class MyThread extends Thread { + + private char[] array; + private String message; + + public MyThread(char[] array, String message) { + this.array = array; + this.message = message; + } + + @Override + public void run() { + synchronized (array) { + System.out.println("Array is being used by " + Thread.currentThread().getName()); + for (int i = 0; i < message.length(); i++) { + try { + array[i] = message.charAt(i); + Thread.sleep(50); + } catch (InterruptedException ex) { + Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex); + } + } + System.out.println(array); + } + } + +} \ No newline at end of file From 13dcd012025abf9f728e0bb577889060c3a9cfb5 Mon Sep 17 00:00:00 2001 From: "Jay Arre P. Talosig" <35078433+flexycode@users.noreply.github.com> Date: Wed, 31 Jul 2024 02:42:24 +0800 Subject: [PATCH 183/183] =?UTF-8?q?=F0=9F=92=BB=20Show=20GPA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update README.md documentation --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 327dfc4..612f610 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ ### Professor: Jay D. Abaleta          ### No. of Units: 3 Units ### Prerequisite: [CCPRGG1L Fundamentals of Programming](https://github.com/flexycode/CCPRGG1L_FUNDAMENTALS_COM23P) +### GPA : 3.50 [Passed](https://www.youtube.com/watch?v=19fUYjhGy0c) # 📊 Table of Contents