Skip to content

Feature/implement more dao's #64

Merged
merged 2 commits into from
Apr 13, 2026
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package ntnu.systemutvikling.team6.models;
package ntnu.systemutvikling.team6.models.registry;

import ntnu.systemutvikling.team6.models.Charity;

import java.util.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package ntnu.systemutvikling.team6.models;
package ntnu.systemutvikling.team6.models.registry;

import ntnu.systemutvikling.team6.models.Donation;

import java.util.*;

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@
public class User {
private static final PasswordHasher passwordHasher = new PasswordHasher();

private UUID id;
private final UUID id;
private String name;
private String email;
private String passwordHash;
private Role role;
private final Role role;
private Settings settings;
private Inbox inbox;

Expand Down Expand Up @@ -121,6 +121,10 @@ public String getEmail() {
return email;
}

public String getPasswordHash() {
return passwordHash;
}

public Role getRole() {
return role;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Loading