From 1a48b29023f6174ba6ccdad8f7b8023965012fe9 Mon Sep 17 00:00:00 2001 From: Roar Date: Tue, 7 Apr 2026 08:42:21 +0200 Subject: [PATCH] Updated DatabaseManager Added 4 new columns: description, logoURL, categories, and key_values to the create table method. Creates and calls a URLCharityScraper object on updating API values that populates these new columns using the URL for the charity given from the API. --- .../team6/database/DatabaseManager.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java index a4007a0..1095ef5 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseManager.java @@ -8,6 +8,7 @@ import ntnu.systemutvikling.team6.models.Donation; import ntnu.systemutvikling.team6.models.DonationRegistry; import ntnu.systemutvikling.team6.scraper.APICharityData; +import ntnu.systemutvikling.team6.scraper.URLCharityScraper; /** * Manages the Database with MySQL tables and JDBC. @@ -74,6 +75,10 @@ charity_name VARCHAR(255) NOT NULL, charity_link VARCHAR(255) NOT NULL, pre_approved TINYINT NOT NULL, status VARCHAR(255) NOT NULL, + description TEXT, + logoURL TEXT, + categories TEXT, + key_values TEXT, UNIQUE KEY unique_org_number (org_number) ) ENGINE=InnoDB; @@ -127,13 +132,17 @@ public void addAPIDataToTable(List charities) { conn.setAutoCommit(false); String sql_query = """ - INSERT INTO Charities (UUID_charities, org_number, charity_name, charity_link, pre_approved, status) - VALUES (?, ?, ?, ?, ?, ?) + INSERT INTO Charities (UUID_charities, org_number, charity_name, charity_link, pre_approved, status, description, logoURL, categories, key_values) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE charity_name = VALUES(charity_name), charity_link = VALUES(charity_link), pre_approved = VALUES(pre_approved), - status = VALUES(status) + status = VALUES(status), + description = VALUES(description), + logoURL = VALUES(logoURL), + categories = VALUES(categories), + key_values = VALUES(key_values) """; try (PreparedStatement ps = conn.prepareStatement(sql_query)) { @@ -143,12 +152,19 @@ INSERT INTO Charities (UUID_charities, org_number, charity_name, charity_link, p } else { ps.setString(1, charity.getUUID().toString()); } + // Scrapes description, logo, categories, and key values from IK + URLCharityScraper urlScraper = new URLCharityScraper(charity.getURL()); + urlScraper.scrapeCharityPage(); ps.setString(2, charity.getOrg_number().replaceAll("\\s", "")); ps.setString(3, charity.getName()); - ps.setString(4, charity.getDescription()); + ps.setString(4, charity.getURL()); ps.setBoolean(5, charity.getPreApproved()); // Description is the link ps.setString(6, charity.getStatus()); + ps.setString(7, urlScraper.getDescription()); + ps.setString(8, urlScraper.getLogoURL()); + ps.setString(9, urlScraper.getCategories()); + ps.setString(10, urlScraper.getKeyValues()); ps.addBatch(); }