diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/DAO/UserDAO.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/DAO/UserDAO.java new file mode 100644 index 0000000..f1ce4aa --- /dev/null +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/DAO/UserDAO.java @@ -0,0 +1,83 @@ +package ntnu.systemutvikling.team6.DAO; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import ntnu.systemutvikling.team6.database.DatabaseConnection; +import ntnu.systemutvikling.team6.models.user.User; + +/** + * This class is responsible for sending concurrent information about the user to the User + * database, and user settings to the settings database. + * + * @author Robin Strand Prestmo + */ +public class UserDAO { + + private static final DatabaseConnection connection = new DatabaseConnection(); + + /** + * Gets the user and settings information and sends it to the database through MySQL. + * + * @param user the user to be saved in the database. + * @throws RuntimeException if a database error occurs during the operation + */ + public static void registerUser(User user) { + + String userSql = + """ + INSERT INTO User ( + UUID_User, + user_displayname, + user_name, + user_email, + user_password, + role + ) + VALUES (?, ?, ?, ?, ?, ?) + """; + + String settingsSql = + """ + INSERT INTO Settings ( + User_UUID_User, + isAnonymous, + language, + lightmode + ) + VALUES (?, ?, ?, ?) + """; + + try (Connection conn = connection.getMySqlConnection()) { + + conn.setAutoCommit(false); + + try (PreparedStatement psUser = conn.prepareStatement(userSql)) { + + psUser.setString(1, user.getId().toString()); + psUser.setString(2, user.getName()); // display name + psUser.setString(3, user.getName()); // username + psUser.setString(4, user.getEmail()); + psUser.setString(5, user.getPasswordHash()); + psUser.setString(6, user.getRole().name()); + + psUser.executeUpdate(); + } + + try (PreparedStatement psSettings = conn.prepareStatement(settingsSql)) { + + psSettings.setString(1, user.getId().toString()); + psSettings.setBoolean(2, user.getSettings().isAnonymous()); + psSettings.setString(3, user.getSettings().getLanguage().name()); + psSettings.setBoolean(4, user.getSettings().isLightMode()); + + psSettings.executeUpdate(); + } + + conn.commit(); + + } catch (SQLException e) { + throw new RuntimeException("Failed to insert user into database", e); + } + } +} diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java index b910eb3..fc3588d 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java @@ -8,7 +8,7 @@ import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.database.DatabaseSetup; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.scraper.APICharityScraper; import ntnu.systemutvikling.team6.service.APIToDatabaseService; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/AvailableOrganizationController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/AvailableOrganizationController.java index f29ee61..47a36eb 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/AvailableOrganizationController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/AvailableOrganizationController.java @@ -12,7 +12,7 @@ import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.database.Readers.CharitySelect; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; /** * This controller represents the available organization page, where the user can search for a diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/FrontpageController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/FrontpageController.java index 7fa2b6c..3dc7f4c 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/FrontpageController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/FrontpageController.java @@ -16,9 +16,9 @@ import ntnu.systemutvikling.team6.database.Readers.CharitySelect; import ntnu.systemutvikling.team6.database.Readers.DonationSelect; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.models.Donation; -import ntnu.systemutvikling.team6.models.DonationRegistry; +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; /** * Landing page's controller. This is the first page the user sees when they open the application. diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java index 6276bdf..4f6d3ae 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java @@ -4,9 +4,9 @@ import java.util.*; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.models.Donation; -import ntnu.systemutvikling.team6.models.DonationRegistry; +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; import ntnu.systemutvikling.team6.scraper.APICharityData; import ntnu.systemutvikling.team6.scraper.LogoDownloader; import ntnu.systemutvikling.team6.scraper.URLCharityScraper; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java index 4c9ffb1..cdcee40 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.models.Feedback; import ntnu.systemutvikling.team6.models.user.User; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java index 26690ab..5990fc3 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java @@ -7,7 +7,7 @@ import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.Donation; -import ntnu.systemutvikling.team6.models.DonationRegistry; +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; /** * Data access class responsible for reading donation data from the database. diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java index ce41742..5f302f0 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java @@ -4,7 +4,7 @@ import java.time.LocalDate; import java.util.UUID; import ntnu.systemutvikling.team6.database.DatabaseConnection; -import ntnu.systemutvikling.team6.models.UserRegistry; +import ntnu.systemutvikling.team6.models.registry.UserRegistry; import ntnu.systemutvikling.team6.models.user.*; import ntnu.systemutvikling.team6.security.PasswordHasher; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/CharityRegistry.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/CharityRegistry.java similarity index 93% rename from helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/CharityRegistry.java rename to helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/CharityRegistry.java index 962b833..8f6660a 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/CharityRegistry.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/CharityRegistry.java @@ -1,4 +1,6 @@ -package ntnu.systemutvikling.team6.models; +package ntnu.systemutvikling.team6.models.registry; + +import ntnu.systemutvikling.team6.models.Charity; import java.util.*; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/DonationRegistry.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/DonationRegistry.java similarity index 90% rename from helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/DonationRegistry.java rename to helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/DonationRegistry.java index b06009d..f5b237d 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/DonationRegistry.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/DonationRegistry.java @@ -1,4 +1,6 @@ -package ntnu.systemutvikling.team6.models; +package ntnu.systemutvikling.team6.models.registry; + +import ntnu.systemutvikling.team6.models.Donation; import java.util.*; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/UserRegistry.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/UserRegistry.java similarity index 94% rename from helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/UserRegistry.java rename to helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/UserRegistry.java index 454fc11..7aa85fb 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/UserRegistry.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/registry/UserRegistry.java @@ -1,4 +1,4 @@ -package ntnu.systemutvikling.team6.models; +package ntnu.systemutvikling.team6.models.registry; import java.util.*; import ntnu.systemutvikling.team6.models.user.User; diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/scraper/APICharityScraper.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/scraper/APICharityScraper.java index ac920ac..389106f 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/scraper/APICharityScraper.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/scraper/APICharityScraper.java @@ -7,7 +7,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; /** * Fetches JSON information from the IK API and parses the JSON into a list of {@link diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseManagerTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseManagerTest.java index 8b8ac6e..c64399f 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseManagerTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseManagerTest.java @@ -6,7 +6,7 @@ import java.util.ArrayList; import java.util.List; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.scraper.LogoDownloader; import org.junit.jupiter.api.*; diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/CharitySelectTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/CharitySelectTest.java index 7e4bad0..dd31136 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/CharitySelectTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/CharitySelectTest.java @@ -8,7 +8,7 @@ import java.util.ArrayList; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.models.Feedback; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java index 5c3545c..9a62987 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/DonationSelectTest.java @@ -8,7 +8,7 @@ import java.time.LocalDate; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Donation; -import ntnu.systemutvikling.team6.models.DonationRegistry; +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/UserSelectTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/UserSelectTest.java index 5394fa1..08b5004 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/UserSelectTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/Readers/UserSelectTest.java @@ -7,7 +7,7 @@ import java.sql.*; import java.util.UUID; import ntnu.systemutvikling.team6.database.DatabaseConnection; -import ntnu.systemutvikling.team6.models.UserRegistry; +import ntnu.systemutvikling.team6.models.registry.UserRegistry; import ntnu.systemutvikling.team6.models.user.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/CharityRegistryTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/CharityRegistryTest.java index f60568b..3c81e06 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/CharityRegistryTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/CharityRegistryTest.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Optional; import java.util.UUID; + +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java index 924ca4f..d358d3b 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/models/DonationRegistryTest.java @@ -7,6 +7,8 @@ import java.util.List; import java.util.Optional; import java.util.UUID; + +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; import ntnu.systemutvikling.team6.models.user.Settings; import ntnu.systemutvikling.team6.models.user.User; import org.junit.jupiter.api.BeforeEach; diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/scraper/APICharityScraperTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/scraper/APICharityScraperTest.java index 1ab7413..ad5e4a8 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/scraper/APICharityScraperTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/scraper/APICharityScraperTest.java @@ -9,7 +9,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.CharityRegistry; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import org.junit.jupiter.api.Test; class APICharityScraperTest {