diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java index 5beaf2e..e863cac 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/CharitySelect.java @@ -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); @@ -78,10 +82,12 @@ public CharityRegistry getCharitiesFromDB() { Set 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"), @@ -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"), @@ -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 = @@ -132,6 +147,7 @@ public CharityRegistry getCharitiesFromDB() { e.printStackTrace(); throw new RuntimeException("ERROR: Something went wrong during updating charities table."); } + return registry; }