From ca04a55017a079b4bdf46d04be065a8db9dd3406 Mon Sep 17 00:00:00 2001 From: AdrianBalunan Date: Mon, 13 Apr 2026 15:06:59 +0200 Subject: [PATCH] Fix: Update APIToDatabaseService.addAPIDataToTable method to match inn the previous DatabaseManager file --- .../team6/service/APIToDatabaseService.java | 85 ++++++++++++------- 1 file changed, 54 insertions(+), 31 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java index 1c4efc8..85ab942 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java @@ -36,39 +36,59 @@ public APIToDatabaseService(DatabaseConnection connection) { */ public void addAPIDataToTable(List charities) { Connection conn = null; - int charityCounter = 0; + // Everything charity related except categories try { conn = connection.getMySqlConnection(); conn.setAutoCommit(false); String sql_query = - """ - INSERT INTO Charities (UUID_charities, org_number, charity_name, charity_description, charity_link, pre_approved, status) - VALUES (?, ?, ?, ?, ?, ?, ?) - ON DUPLICATE KEY UPDATE - charity_name = VALUES(charity_name), - charity_link = VALUES(charity_link), - pre_approved = VALUES(pre_approved), - status = VALUES(status) - """; + """ + INSERT INTO Charities (UUID_charities, org_number, pre_approved, status) + VALUES (?, ?, ?, ?) + ON DUPLICATE KEY UPDATE + pre_approved = VALUES(pre_approved), + status = VALUES(status); + + INSERT INTO CharityVanity (UUID_charity, charity_name, charity_link, description, logoURL, key_values, logoBlob) + VALUES (?, ?, ?, ?, ?, ?, ?,) + ON DUPLICATE KEY UPDATE + charity_name = VALUES(charity_name), + charity_link = VALUES(charity_link), + description = VALUES(description), + logoURL = VALUES(logoURL), + key_values = VALUES(key_values), + logoBlob = VALUES(logoBlob); + """; try (PreparedStatement ps = conn.prepareStatement(sql_query)) { for (Charity charity : charities) { if (charity.getUUID() == null) { ps.setString(1, UUID.randomUUID().toString()); + ps.setString(5, UUID.randomUUID().toString()); + } else { ps.setString(1, charity.getUUID().toString()); - } + ps.setString(5, charity.getUUID().toString()); + } + // Charity ps.setString(2, charity.getOrg_number().replaceAll("\\s", "")); - ps.setString(3, charity.getName()); - ps.setString(4, "Blank until webscraber works"); - ps.setString(5, charity.getDescription()); - ps.setBoolean(6, charity.getPreApproved()); // Description is the link - ps.setString(7, charity.getStatus()); + ps.setBoolean(3, charity.getPreApproved()); + ps.setString(4, charity.getStatus()); + + // CharityVanity + ps.setString(6, charity.getName()); + ps.setString(7, charity.getURL()); + ps.setString(8, charity.getDescription()); + ps.setString(9, charity.getLogoURL()); + ps.setString(10, charity.getKeyValues()); + ps.setBytes(11, charity.getLogoBlob()); ps.addBatch(); } ps.executeBatch(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); } // -- Intergerty Check: @@ -97,21 +117,24 @@ org_number VARCHAR(255) PRIMARY KEY String deleteSql = """ - DELETE FROM Charities c - WHERE NOT EXISTS ( - SELECT 1 FROM temp_api_charities t - WHERE t.org_number = c.org_number - ) - AND NOT EXISTS ( - SELECT 1 FROM Donations d WHERE d.charity_id = c.UUID_charities - ) - AND NOT EXISTS ( - SELECT 1 FROM Feedback f WHERE f.charity_id = c.UUID_charities - ) - AND NOT EXISTS ( - SELECT 1 FROM CharityUsers cu WHERE cu.Charities_UUID_charities = c.UUID_charities - ); - """; + DELETE FROM Charities c + WHERE NOT EXISTS ( + SELECT 1 FROM temp_api_charities t + WHERE t.org_number = c.org_number + ) + AND NOT EXISTS ( + SELECT 1 FROM Donations d WHERE d.charity_id = c.UUID_charities + ) + AND NOT EXISTS ( + SELECT 1 FROM Feedback f WHERE f.charity_id = c.UUID_charities + ) + AND NOT EXISTS ( + SELECT 1 FROM CharityVantiy cv WHERE cv.UUID_charity = c.UUID_charities + ) + AND NOT EXISTS ( + SELECT 1 FROM CharityUsers cu WHERE cu.Charities_UUID_charities = c.UUID_charities + ); + """; try (PreparedStatement ps = conn.prepareStatement(deleteSql)) { ps.executeUpdate();