Skip to content

Commit

Permalink
Updated CharitySelect
Browse files Browse the repository at this point in the history
Added sql queries for getting category information for each charity.
  • Loading branch information
roaraf committed Apr 18, 2026
1 parent 838c429 commit fa4a687
Showing 1 changed file with 31 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,23 +52,27 @@ public CharitySelect(DatabaseConnection connection) {
public CharityRegistry getCharitiesFromDB() {
CharityRegistry registry = null;
Connection conn = null;

try {
conn = connection.getMySqlConnection();

String sql_query =
"""
SELECT
c.UUID_charities, c.org_number, c.pre_approved, c.status,
f.UUID_feedback, f.feedback_comment, f.feedback_date, f.isAnonymous, f.charity_id, f.user_id,
cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB,
u.UUID_user, u.user_displayname, u.user_name, u.user_email, u.user_password, u.role,
cat.category
FROM Charities c
LEFT JOIN Feedback f ON f.charity_id = c.UUID_charities
LEFT JOIN User u ON f.user_id = u.UUID_user
LEFT JOIN Charity_Categories cc ON cc.Charities_UUID_charities = c.UUID_charities
LEFT JOIN Categories cat ON cat.category_id = cc.Categories_category_id
INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities;
""";
SELECT
c.UUID_charities, c.org_number, c.pre_approved, c.status,
f.UUID_feedback, f.feedback_comment, f.feedback_date, f.isAnonymous, f.charity_id, f.user_id,
cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB,
u.UUID_user, u.user_displayname, u.user_name, u.user_email, u.user_password, u.role,
cat.category
FROM Charities c
LEFT JOIN Feedback f ON f.charity_id = c.UUID_charities
LEFT JOIN User u ON f.user_id = u.UUID_user
LEFT JOIN Charity_Categories cc ON cc.Charities_UUID_charities = c.UUID_charities
LEFT JOIN Categories cat ON cat.category_id = cc.Categories_category_id
INNER JOIN CharityVanity cv ON cv.UUID_charity = c.UUID_charities
ORDER BY c.UUID_charities;
""";

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql_query);

Expand All @@ -78,10 +82,12 @@ public CharityRegistry getCharitiesFromDB() {
Set<String> seenFeedbackIds = new HashSet<>();

registry = new CharityRegistry();

while (rs.next()) {
String currentId = rs.getString("UUID_charities");

if (lastCharity == null || !currentId.equals(lastCharity)) {

currentCharity =
new Charity(
rs.getString("UUID_charities"),
Expand All @@ -94,19 +100,27 @@ public CharityRegistry getCharitiesFromDB() {
rs.getString("logoURL"),
rs.getString("key_values"),
rs.getBytes("logoBLOB"));

registry.addCharity(currentCharity);
lastCharity = currentId;
seenFeedbackIds.clear();
}

String categoryName = rs.getString("category");
if (categoryName != null & !currentCharity.getCategory().contains(categoryName)) {
currentCharity.getCategory().add(categoryName);

if (categoryName != null) {
categoryName = categoryName.toLowerCase().trim();

if (!categoryName.isEmpty() && !currentCharity.getCategory().contains(categoryName)) {
currentCharity.getCategory().add(categoryName);
}
}

String feedbackId = rs.getString("UUID_feedback");

if (feedbackId != null && !seenFeedbackIds.contains(feedbackId)) {
seenFeedbackIds.add(feedbackId);

User userWithMinimalSettingsAndInbox =
new User(
rs.getString("UUID_User"),
Expand All @@ -115,6 +129,7 @@ public CharityRegistry getCharitiesFromDB() {
rs.getString("user_email"),
rs.getString("user_password"),
rs.getString("role"));

userWithMinimalSettingsAndInbox.setSettings(new Settings(false, Language.ENGLISH, false));

Feedback feedback =
Expand All @@ -132,6 +147,7 @@ public CharityRegistry getCharitiesFromDB() {
e.printStackTrace();
throw new RuntimeException("ERROR: Something went wrong during updating charities table.");
}

return registry;
}

Expand Down

0 comments on commit fa4a687

Please sign in to comment.