Skip to content

Commit

Permalink
Merge pull request #64 from cathrkri/feature/implement-more-DAO's
Browse files Browse the repository at this point in the history
Feature/implement more dao's
  • Loading branch information
robinsp authored Apr 13, 2026
2 parents 09fcd3f + 402bc90 commit 20031eb
Show file tree
Hide file tree
Showing 20 changed files with 115 additions and 20 deletions.
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

0 comments on commit 20031eb

Please sign in to comment.