Skip to content

Commit

Permalink
Fix: Renamed CharitySelect.java into CharityDAO, and dontation based …
Browse files Browse the repository at this point in the history
…select methods moved into DonationDAO.
  • Loading branch information
AdrianBalunan committed Apr 23, 2026
1 parent 7de8e67 commit 7bc1951
Show file tree
Hide file tree
Showing 12 changed files with 209 additions and 245 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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();

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

Expand Down Expand Up @@ -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<Feedback> feedbacks = charitySelect.getFeedbackforCharityUUID(charity.getUUID().toString());
displayFeedbacks(feedbacks);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -60,7 +56,7 @@ public void populateFields() {

// Messages
DatabaseConnection conn = new DatabaseConnection();
CharitySelect charitySelect = new CharitySelect(conn);
CharityDAO charitySelect = new CharityDAO(conn);
ArrayList<Feedback> feedbacks = charitySelect.getFeedbackforCharityUUID(authToken.isCharityUser().getUUID().toString());
displayFeedbacks(feedbacks);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ntnu.systemutvikling.team6.database.Readers;
package ntnu.systemutvikling.team6.database.DAO;

import java.sql.*;
import java.time.LocalDate;
Expand All @@ -21,7 +21,7 @@
*
* <p>All queries are executed against a MySQL database via a {@link DatabaseConnection}.
*/
public class CharitySelect {
public class CharityDAO {
private final DatabaseConnection connection;

/**
Expand All @@ -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;
}

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

/**
Expand All @@ -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}.
*
* <p>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.
Expand Down
Loading

0 comments on commit 7bc1951

Please sign in to comment.