From 7bc195134216c8169bd81d057b4b0043cdbfd8db Mon Sep 17 00:00:00 2001 From: AdrianBalunan Date: Thu, 23 Apr 2026 19:12:24 +0200 Subject: [PATCH] Fix: Renamed CharitySelect.java into CharityDAO, and dontation based select methods moved into DonationDAO. --- .../AvailableOrganizationController.java | 4 +- .../team6/controller/FrontpageController.java | 7 +- .../controller/GiveFeedbackController.java | 4 +- .../profileOrgInboxController.java | 8 +- .../profileOrgPaymentsController.java | 5 +- .../profileUserHistoryController.java | 5 +- .../team6/database/DAO/CategoryDAO.java | 2 +- .../CharityDAO.java} | 6 +- .../team6/database/DAO/DonationDAO.java | 181 +++++++++++++++ .../database/Readers/DonationSelect.java | 218 ------------------ .../team6/database/DatabaseSetupTest.java | 6 +- .../database/Readers/CharitySelectTest.java | 8 +- 12 files changed, 209 insertions(+), 245 deletions(-) rename helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/{Readers/CharitySelect.java => DAO/CharityDAO.java} (98%) delete mode 100644 helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java 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 b7d1444e..1621d8d8 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/AvailableOrganizationController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/AvailableOrganizationController.java @@ -11,7 +11,7 @@ import javafx.scene.layout.FlowPane; import ntnu.systemutvikling.team6.controller.components.*; import ntnu.systemutvikling.team6.database.DatabaseConnection; -import ntnu.systemutvikling.team6.database.Readers.CharitySelect; +import ntnu.systemutvikling.team6.database.DAO.CharityDAO; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.registry.CharityRegistry; @@ -49,7 +49,7 @@ protected void authTokenisSet(){ @FXML public void initialize() { DatabaseConnection conn = new DatabaseConnection(); - CharitySelect db = new CharitySelect(conn); + CharityDAO db = new CharityDAO(conn); CharityRegistry charities = db.getCharitiesFromDB(); allCharities = charities.getAllCharities(); 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 ff81ba7f..b8cfa320 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/FrontpageController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/FrontpageController.java @@ -14,9 +14,10 @@ import javafx.scene.control.Label; import javafx.scene.layout.FlowPane; import ntnu.systemutvikling.team6.controller.components.*; +import ntnu.systemutvikling.team6.database.DAO.DonationDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.database.DAO.CategoryDAO; -import ntnu.systemutvikling.team6.database.Readers.CharitySelect; +import ntnu.systemutvikling.team6.database.DAO.CharityDAO; import ntnu.systemutvikling.team6.database.Readers.DonationSelect; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.Donation; @@ -73,8 +74,8 @@ public void initialize() { private void loadPage(){ try { DatabaseConnection conn = new DatabaseConnection(); - CharitySelect cdb = new CharitySelect(conn); - DonationSelect ddb = new DonationSelect(conn); + CharityDAO cdb = new CharityDAO(conn); + DonationDAO ddb = new DonationDAO(conn); CategoryDAO categoryselect = new CategoryDAO(conn); CharityRegistry charities = cdb.getCharitiesFromDB(); DonationRegistry donations = ddb.getDonationFromDB(); diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/GiveFeedbackController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/GiveFeedbackController.java index 1870da00..9a720bf1 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/GiveFeedbackController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/GiveFeedbackController.java @@ -13,7 +13,7 @@ import ntnu.systemutvikling.team6.controller.components.*; import ntnu.systemutvikling.team6.database.DAO.FeedbackDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; -import ntnu.systemutvikling.team6.database.Readers.CharitySelect; +import ntnu.systemutvikling.team6.database.DAO.CharityDAO; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.Feedback; @@ -58,7 +58,7 @@ protected void authTokenisSet() { } private void populateFields(){ DatabaseConnection conn = new DatabaseConnection(); - CharitySelect charitySelect = new CharitySelect(conn); + CharityDAO charitySelect = new CharityDAO(conn); ArrayList feedbacks = charitySelect.getFeedbackforCharityUUID(charity.getUUID().toString()); displayFeedbacks(feedbacks); } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgInboxController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgInboxController.java index 40d85492..f924dfa6 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgInboxController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgInboxController.java @@ -14,17 +14,13 @@ import ntnu.systemutvikling.team6.controller.components.*; import ntnu.systemutvikling.team6.database.DAO.MessageDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; -import ntnu.systemutvikling.team6.database.Readers.CharitySelect; +import ntnu.systemutvikling.team6.database.DAO.CharityDAO; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.Feedback; -import ntnu.systemutvikling.team6.models.user.Inbox; import ntnu.systemutvikling.team6.models.user.Message; -import ntnu.systemutvikling.team6.models.user.User; import java.io.IOException; import java.util.ArrayList; -import java.util.Date; -import java.util.List; public class profileOrgInboxController extends BaseController { @FXML @@ -60,7 +56,7 @@ public void populateFields() { // Messages DatabaseConnection conn = new DatabaseConnection(); - CharitySelect charitySelect = new CharitySelect(conn); + CharityDAO charitySelect = new CharityDAO(conn); ArrayList feedbacks = charitySelect.getFeedbackforCharityUUID(authToken.isCharityUser().getUUID().toString()); displayFeedbacks(feedbacks); } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgPaymentsController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgPaymentsController.java index e1baa79f..120666e0 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgPaymentsController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileCharity/profileOrgPaymentsController.java @@ -10,6 +10,7 @@ import javafx.scene.layout.VBox; import javafx.stage.Stage; import ntnu.systemutvikling.team6.controller.components.*; +import ntnu.systemutvikling.team6.database.DAO.DonationDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.database.Readers.DonationSelect; import ntnu.systemutvikling.team6.models.Charity; @@ -51,8 +52,8 @@ public void populateFields() { // DonationHistory DatabaseConnection conn = new DatabaseConnection(); - DonationSelect donationSelect = new DonationSelect(conn); - DonationRegistry donationRegistry = donationSelect.getDonationForCharity(authToken.isCharityUser().getUUID().toString()); + DonationDAO donationDAO = new DonationDAO(conn); + DonationRegistry donationRegistry = donationDAO.getDonationForCharity(authToken.isCharityUser().getUUID().toString()); displayDonations(donationRegistry); } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserHistoryController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserHistoryController.java index 32b11a97..5208b670 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserHistoryController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserHistoryController.java @@ -11,6 +11,7 @@ import javafx.scene.layout.VBox; import javafx.stage.Stage; import ntnu.systemutvikling.team6.controller.components.*; +import ntnu.systemutvikling.team6.database.DAO.DonationDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.database.Readers.DonationSelect; import ntnu.systemutvikling.team6.models.Donation; @@ -57,8 +58,8 @@ public void populateFields() { // DonationHistory DatabaseConnection conn = new DatabaseConnection(); - DonationSelect donationSelect = new DonationSelect(conn); - DonationRegistry donationRegistry = donationSelect.getDonationForUser(authToken.getCurrentUser().getId().toString()); + DonationDAO donationDAO = new DonationDAO(conn); + DonationRegistry donationRegistry = donationDAO.getDonationForUser(authToken.getCurrentUser().getId().toString()); double ammount = donationRegistry.getAllDonations().stream().mapToDouble(d->d.getAmount()).sum(); totalAmmount.setText(String.valueOf(ammount)); displayDonations(donationRegistry); diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CategoryDAO.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CategoryDAO.java index ff7801bd..bd50602b 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CategoryDAO.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CategoryDAO.java @@ -17,7 +17,7 @@ public class CategoryDAO { private final DatabaseConnection connection; /** - *Constructs a new {@code CharitySelect} with the given database connection. + * Constructs a new {@code CategoryDAO} with the given database connection. * * @param connection the {@link DatabaseConnection} to use for executing queries; must not be * {@code null} diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityDAO.java similarity index 98% rename from helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java rename to helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityDAO.java index 3c810355..83a9b22a 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/CharityDAO.java @@ -1,4 +1,4 @@ -package ntnu.systemutvikling.team6.database.Readers; +package ntnu.systemutvikling.team6.database.DAO; import java.sql.*; import java.time.LocalDate; @@ -21,7 +21,7 @@ * *

All queries are executed against a MySQL database via a {@link DatabaseConnection}. */ -public class CharitySelect { +public class CharityDAO { private final DatabaseConnection connection; /** @@ -30,7 +30,7 @@ public class CharitySelect { * @param connection the {@link DatabaseConnection} to use for executing queries; must not be * {@code null} */ - public CharitySelect(DatabaseConnection connection) { + public CharityDAO(DatabaseConnection connection) { this.connection = connection; } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/DonationDAO.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/DonationDAO.java index dbcdf387..3e93b2ef 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/DonationDAO.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/DonationDAO.java @@ -5,6 +5,7 @@ import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.Donation; +import ntnu.systemutvikling.team6.models.registry.DonationRegistry; import ntnu.systemutvikling.team6.models.user.User; /** @@ -17,7 +18,187 @@ public class DonationDAO { public DonationDAO(DatabaseConnection connection) { this.connection = connection; } + /** + * Retrieves all donations from the database, each populated with its associated {@link Charity}. + * + *

The query performs an INNER JOIN between the {@code Donations} and {@code Charities} tables + * on the charity UUID foreign key. Donations without a matching charity are excluded from the + * result. + * + * @return a {@link DonationRegistry} containing all matched donations; never {@code null}, but + * may be empty if no rows are returned + * @throws RuntimeException if a {@link SQLException} occurs while executing the query + */ + public DonationRegistry getDonationFromDB() { + DonationRegistry registry = null; + Connection conn = null; + try { + conn = connection.getMySqlConnection(); + String sql_query = + """ + SELECT + d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, + c.UUID_charities, c.org_number, c.pre_approved, c.status, + u.UUID_User, u.user_name, u.user_email, u.user_password, u.role + FROM Donations d + INNER JOIN Charities c ON d.charity_id = c.UUID_charities + INNER JOIN User u ON d.user_id = u.UUID_user + """; + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery(sql_query); + + registry = new DonationRegistry(); + while (rs.next()) { + Charity charity = + new Charity( + rs.getString("UUID_charities"), + rs.getString("org_number"), + rs.getBoolean("pre_approved"), + rs.getString("status")); + + User user = + new User( + rs.getString("UUID_User"), + rs.getString("user_name"), + rs.getString("user_email"), + rs.getString("user_password"), + rs.getString("role")); + Donation donation = + new Donation( + rs.getString("UUID_Donations"), + rs.getDouble("amount"), + rs.getDate("date").toLocalDate(), + charity, + user, + rs.getBoolean("isAnonymous")); + registry.addDonation(donation); + } + } catch (SQLException e) { + e.printStackTrace(); + throw new RuntimeException("ERROR: Something went wrong during updating charities table."); + } + return registry; + } + public DonationRegistry getDonationForUser(String uuid) { + DonationRegistry registry = null; + Connection conn = null; + try { + conn = connection.getMySqlConnection(); + String sql_query = + """ + SELECT + d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, + c.UUID_charities, c.org_number, c.pre_approved, c.status, + cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB, + u.UUID_User, u.user_name, u.user_email, u.user_password, u.role + FROM Donations d + INNER JOIN Charities c ON d.charity_id = c.UUID_charities + INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities + INNER JOIN User u ON d.user_id = u.UUID_user + WHERE d.user_id = ? + """; + PreparedStatement stmt = conn.prepareStatement(sql_query); + stmt.setString(1, uuid); + ResultSet rs = stmt.executeQuery(); + + registry = new DonationRegistry(); + while (rs.next()) { + Charity charity = + new Charity( + rs.getString("UUID_charities"), + rs.getString("org_number"), + rs.getString("charity_name"), + rs.getString("charity_link"), + rs.getString("status"), + rs.getBoolean("pre_approved"), + rs.getString("description"), + rs.getString("logoURL"), + rs.getString("key_values"), + rs.getBytes("logoBLOB")); + User user = + new User( + rs.getString("UUID_User"), + rs.getString("user_name"), + rs.getString("user_email"), + rs.getString("user_password"), + rs.getString("role")); + Donation donation = + new Donation( + rs.getString("UUID_Donations"), + rs.getDouble("amount"), + rs.getDate("date").toLocalDate(), + charity, + user, + rs.getBoolean("isAnonymous")); + registry.addDonation(donation); + } + } catch (SQLException e) { + e.printStackTrace(); + throw new RuntimeException("ERROR: Something went wrong during updating charities table."); + } + return registry; + } + + public DonationRegistry getDonationForCharity(String uuid) { + DonationRegistry registry = null; + Connection conn = null; + try { + conn = connection.getMySqlConnection(); + String sql_query = + """ + SELECT + d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, + c.UUID_charities, c.org_number, c.pre_approved, c.status, + cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB, + u.UUID_User, u.user_name, u.user_email, u.user_password, u.role + FROM Donations d + INNER JOIN Charities c ON d.charity_id = c.UUID_charities + INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities + INNER JOIN User u ON d.user_id = u.UUID_user + WHERE c.UUID_charities = ? + """; + PreparedStatement stmt = conn.prepareStatement(sql_query); + stmt.setString(1, uuid); + ResultSet rs = stmt.executeQuery(); + + registry = new DonationRegistry(); + while (rs.next()) { + Charity charity = + new Charity( + rs.getString("UUID_charities"), + rs.getString("org_number"), + rs.getString("charity_name"), + rs.getString("charity_link"), + rs.getString("status"), + rs.getBoolean("pre_approved"), + rs.getString("description"), + rs.getString("logoURL"), + rs.getString("key_values"), + rs.getBytes("logoBLOB")); + User user = + new User( + rs.getString("UUID_User"), + rs.getString("user_name"), + rs.getString("user_email"), + rs.getString("user_password"), + rs.getString("role")); + Donation donation = + new Donation( + rs.getString("UUID_Donations"), + rs.getDouble("amount"), + rs.getDate("date").toLocalDate(), + charity, + user, + rs.getBoolean("isAnonymous")); + registry.addDonation(donation); + } + } catch (SQLException e) { + e.printStackTrace(); + throw new RuntimeException("ERROR: Something went wrong during updating charities table."); + } + return registry; + } /** * Gets the total ammount of donations for a given charity, and sends it to the database throught * MySQL. 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 deleted file mode 100644 index a577880d..00000000 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/DonationSelect.java +++ /dev/null @@ -1,218 +0,0 @@ -package ntnu.systemutvikling.team6.database.Readers; - -import java.sql.*; - -import ntnu.systemutvikling.team6.database.DatabaseConnection; -import ntnu.systemutvikling.team6.models.Charity; -import ntnu.systemutvikling.team6.models.Donation; -import ntnu.systemutvikling.team6.models.registry.DonationRegistry; -import ntnu.systemutvikling.team6.models.user.User; - -/** - * Data access class responsible for reading donation data from the database. - * - *

Retrieves donations along with their associated {@link Charity} by performing an INNER JOIN - * between the {@code Donations} and {@code Charities} tables. Only donations with a matching - * charity record are included. Donor ({@link User}) and {@code CharityVanity} details are - * intentionally excluded to keep this query lightweight — join those separately if richer data is - * needed. - * - *

Note: {@code CharityVanity} fields (name, link, description, logo) are NOT fetched here since - * they live in a separate table. The {@link Charity} objects returned will only contain the core - * fields present in the {@code Charities} table. - */ -public class DonationSelect { - - /** The database connection used for all queries in this class. */ - private final DatabaseConnection connection; - - /** - * Constructs a new {@code DonationSelect} with the given database connection. - * - * @param connection the {@link DatabaseConnection} to use for executing queries; must not be - * {@code null} - */ - public DonationSelect(DatabaseConnection connection) { - this.connection = connection; - } - - /** - * Retrieves all donations from the database, each populated with its associated {@link Charity}. - * - *

The query performs an INNER JOIN between the {@code Donations} and {@code Charities} tables - * on the charity UUID foreign key. Donations without a matching charity are excluded from the - * result. - * - * @return a {@link DonationRegistry} containing all matched donations; never {@code null}, but - * may be empty if no rows are returned - * @throws RuntimeException if a {@link SQLException} occurs while executing the query - */ - public DonationRegistry getDonationFromDB() { - DonationRegistry registry = null; - Connection conn = null; - try { - conn = connection.getMySqlConnection(); - String sql_query = - """ - SELECT - d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, - c.UUID_charities, c.org_number, c.pre_approved, c.status, - u.UUID_User, u.user_name, u.user_email, u.user_password, u.role - FROM Donations d - INNER JOIN Charities c ON d.charity_id = c.UUID_charities - INNER JOIN User u ON d.user_id = u.UUID_user - """; - Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery(sql_query); - - registry = new DonationRegistry(); - while (rs.next()) { - Charity charity = - new Charity( - rs.getString("UUID_charities"), - rs.getString("org_number"), - rs.getBoolean("pre_approved"), - rs.getString("status")); - - User user = - new User( - rs.getString("UUID_User"), - rs.getString("user_name"), - rs.getString("user_email"), - rs.getString("user_password"), - rs.getString("role")); - Donation donation = - new Donation( - rs.getString("UUID_Donations"), - rs.getDouble("amount"), - rs.getDate("date").toLocalDate(), - charity, - user, - rs.getBoolean("isAnonymous")); - registry.addDonation(donation); - } - } catch (SQLException e) { - e.printStackTrace(); - throw new RuntimeException("ERROR: Something went wrong during updating charities table."); - } - return registry; - } - public DonationRegistry getDonationForUser(String uuid) { - DonationRegistry registry = null; - Connection conn = null; - try { - conn = connection.getMySqlConnection(); - String sql_query = - """ - SELECT - d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, - c.UUID_charities, c.org_number, c.pre_approved, c.status, - cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB, - u.UUID_User, u.user_name, u.user_email, u.user_password, u.role - FROM Donations d - INNER JOIN Charities c ON d.charity_id = c.UUID_charities - INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities - INNER JOIN User u ON d.user_id = u.UUID_user - WHERE d.user_id = ? - """; - PreparedStatement stmt = conn.prepareStatement(sql_query); - stmt.setString(1, uuid); - ResultSet rs = stmt.executeQuery(); - - registry = new DonationRegistry(); - while (rs.next()) { - Charity charity = - new Charity( - rs.getString("UUID_charities"), - rs.getString("org_number"), - rs.getString("charity_name"), - rs.getString("charity_link"), - rs.getString("status"), - rs.getBoolean("pre_approved"), - rs.getString("description"), - rs.getString("logoURL"), - rs.getString("key_values"), - rs.getBytes("logoBLOB")); - User user = - new User( - rs.getString("UUID_User"), - rs.getString("user_name"), - rs.getString("user_email"), - rs.getString("user_password"), - rs.getString("role")); - Donation donation = - new Donation( - rs.getString("UUID_Donations"), - rs.getDouble("amount"), - rs.getDate("date").toLocalDate(), - charity, - user, - rs.getBoolean("isAnonymous")); - registry.addDonation(donation); - } - } catch (SQLException e) { - e.printStackTrace(); - throw new RuntimeException("ERROR: Something went wrong during updating charities table."); - } - return registry; - } - public DonationRegistry getDonationForCharity(String uuid) { - DonationRegistry registry = null; - Connection conn = null; - try { - conn = connection.getMySqlConnection(); - String sql_query = - """ - SELECT - d.UUID_Donations, d.amount, d.isAnonymous, d.date, d.charity_id, d.user_id, - c.UUID_charities, c.org_number, c.pre_approved, c.status, - cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB, - u.UUID_User, u.user_name, u.user_email, u.user_password, u.role - FROM Donations d - INNER JOIN Charities c ON d.charity_id = c.UUID_charities - INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities - INNER JOIN User u ON d.user_id = u.UUID_user - WHERE c.UUID_charities = ? - """; - PreparedStatement stmt = conn.prepareStatement(sql_query); - stmt.setString(1, uuid); - ResultSet rs = stmt.executeQuery(); - - registry = new DonationRegistry(); - while (rs.next()) { - Charity charity = - new Charity( - rs.getString("UUID_charities"), - rs.getString("org_number"), - rs.getString("charity_name"), - rs.getString("charity_link"), - rs.getString("status"), - rs.getBoolean("pre_approved"), - rs.getString("description"), - rs.getString("logoURL"), - rs.getString("key_values"), - rs.getBytes("logoBLOB")); - User user = - new User( - rs.getString("UUID_User"), - rs.getString("user_name"), - rs.getString("user_email"), - rs.getString("user_password"), - rs.getString("role")); - Donation donation = - new Donation( - rs.getString("UUID_Donations"), - rs.getDouble("amount"), - rs.getDate("date").toLocalDate(), - charity, - user, - rs.getBoolean("isAnonymous")); - registry.addDonation(donation); - } - } catch (SQLException e) { - e.printStackTrace(); - throw new RuntimeException("ERROR: Something went wrong during updating charities table."); - } - return registry; - } -} diff --git a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseSetupTest.java b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseSetupTest.java index 809d2518..3e1cd094 100644 --- a/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseSetupTest.java +++ b/helpmehelpapplication/src/test/java/ntnu/systemutvikling/team6/database/DatabaseSetupTest.java @@ -4,7 +4,7 @@ import java.sql.*; import java.util.List; -import ntnu.systemutvikling.team6.database.Readers.CharitySelect; +import ntnu.systemutvikling.team6.database.DAO.CharityDAO; import ntnu.systemutvikling.team6.database.Readers.DonationSelect; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.service.APIToDatabaseService; @@ -14,7 +14,7 @@ class DatabaseSetupTest { private DatabaseSetup dbManager; private APIToDatabaseService service; - private CharitySelect charitySelect; + private CharityDAO charitySelect; private DonationSelect donationSelect; @BeforeEach @@ -22,7 +22,7 @@ public void setUp() throws SQLException { DatabaseConnection conn = new DatabaseConnection(); this.dbManager = new DatabaseSetup(conn); this.service = new APIToDatabaseService(conn); - this.charitySelect = new CharitySelect(conn); + this.charitySelect = new CharityDAO(conn); this.donationSelect = new DonationSelect(conn); } 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 0a4c791d..e116a63a 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 @@ -7,6 +7,8 @@ import java.sql.*; import java.util.ArrayList; import java.util.UUID; + +import ntnu.systemutvikling.team6.database.DAO.CharityDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Charity; import ntnu.systemutvikling.team6.models.Feedback; @@ -19,7 +21,7 @@ import org.mockito.junit.jupiter.MockitoExtension; /** - * Unit tests for {@link CharitySelect}. + * Unit tests for {@link CharityDAO}. * *

Uses Mockito to mock {@link DatabaseConnection}, {@link Connection}, {@link Statement}, {@link * PreparedStatement}, and {@link ResultSet} so that no real database connection is required. @@ -33,11 +35,11 @@ class CharitySelectTest { @Mock private PreparedStatement mockPreparedStatement; @Mock private ResultSet mockResultSet; - private CharitySelect charitySelect; + private CharityDAO charitySelect; @BeforeEach void setUp() { - charitySelect = new CharitySelect(mockDatabaseConnection); + charitySelect = new CharityDAO(mockDatabaseConnection); } // -------------------------------------------------------------------------