From 60deef4d4132d2a271c3f8dac8478aac52a4b274 Mon Sep 17 00:00:00 2001 From: AdrianBalunan Date: Mon, 13 Apr 2026 13:48:24 +0200 Subject: [PATCH] Fix: Expanded database to uphold new scraper data --- docs/SqlDatabase/ER-DiagramFile.mwb | Bin 16584 -> 17956 bytes docs/SqlDatabase/ER-DiagramFile.mwb.bak | Bin 16534 -> 17956 bytes .../systemutvikling/team6/HmHApplication.java | 1 + .../team6/database/DatabaseSetup.java | 38 +++++++++++------- .../team6/service/APIToDatabaseService.java | 30 ++++++++------ 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/docs/SqlDatabase/ER-DiagramFile.mwb b/docs/SqlDatabase/ER-DiagramFile.mwb index ee90f5e991fd3956fff04df78f71d50ef4d0ed35..15edab11cde238403e4280d28454b3e62fa96431 100644 GIT binary patch literal 17956 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 a<$^?Xi<2`_a}$fL6cP)P5_3xP61e~vooqw^ literal 16584 zcmZ|119W6j*DV^`wr$(C?NscFZL?!^Y}@JBcG7VN9e3QZUi$m~JI1^3zI$q%vClYr zuc|%Hu9|zzwdN`nd2k2}5HJuJ5PzFU10t7)n>H>GkdZ&&ASfUpAm&bH?hY1?ZcGlI z046U7`wM>?SA5>|i^pe7q&_EfQ0#}&qD^$2*Js7Fse{t;U)0c&W#(<26`gCV8r`2C zi6s>BT#`p%F$!?osF>!H-q8|Zk2&zWd9N9tPh3QTuWHjrL#My%=N90f-h_=lHjSZr zB(K&->~C)T`0yXG0{s&Xi1QH3-VZx68HAYXm}2{cKHtx_1K%J1^p!WyS&fu@o~~al ziL&|x{KWAW&F_0_x0?I7E#=n3np+HtG%-luQ&t}OX^=g0eT?)s!i5;8lRrq^0v zgfF!eYud-{9N`MEhBb)%uD%MSOL75O2zsh_uTSZ#NFD-hg(w=A;hKd8ERWx<}3_>E*3?7Im~5d*wE8T0Jb({+LV z-7jjj@AhV|xpMD%Uemh(>A6)ux&i?-I zp~lpW&&<{FfBN3kzV{Igcm{gOW3#6L`rlBGZ!%18?iHQXW`o_Au8e+MG%+fY3P`Fm z2^-E_&5mj6J2KVP&Ez}z`SO=NfAi43%dw6uIK;y_gelm7DuChWN2Tq^;J~>L8Ztdr zy8%sZcc@(aKCm8pv+`zKjLkJ$z$06)KR{a^;suF-3a3H`sbVnvph8B#nJzlY)h@Qb z6QnZhRCe6De&w+7G6-S!G3ZEq*nTRBlMvH4Q#LhqrF8YMnA_P_%$ZDKJ@aFY|6s?R z|EQXIL3`UlwD!@>%<=wv!`(cj7)TN+8F&Pm%p3twi|2$>TPu8~9(IUb@)hTEKG9)& zAWUJN(5ZZC1n6>gIDKjGvUm8$I!Sr0=rz9bXTq);Lh8Qp)CsmD9$VjsUOlB=srAI! znTr;JoB`uix6RT8@y=K*r+$Qb%O6{|T!ZcT$mbXRS`T1qQRL3!tQ2={6OHg(;CGo; z%lp=zm6En}pd|~mRuRnfq;o+hR)HTxO|DgxVE9⩔*=) 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 diff --git a/docs/SqlDatabase/ER-DiagramFile.mwb.bak b/docs/SqlDatabase/ER-DiagramFile.mwb.bak index 64d953370ece8645f76d027e2fe074078cb0a310..c348da3377ca3f9ea9ba8f951980e6f160421148 100644 GIT binary patch literal 17956 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 a<$^?Xi<2`_a}$fL6cP)P5_3xP61f1;hipOs literal 16534 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 diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java index fc3588d..a4818f3 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/HmHApplication.java @@ -49,6 +49,7 @@ public void init() { try { HttpClient https = HttpClient.newHttpClient(); APICharityScraper scraper = new APICharityScraper(https); + DatabaseConnection conn = new DatabaseConnection(); APIToDatabaseService db = new APIToDatabaseService(conn); diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java index 62de2e8..4000b25 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DatabaseSetup.java @@ -57,18 +57,14 @@ public void createTables() { -- ----------------------------------------------------- -- Table `HelpMeHelp`.`Charities` -- ----------------------------------------------------- - CREATE TABLE IF NOT EXISTS `apbaluna`.`Charities` ( - `UUID_charities` CHAR(36) NOT NULL, - `org_number` VARCHAR(255) NOT NULL, - `charity_name` VARCHAR(255) NOT NULL, - `charity_description` VARCHAR(255) NOT NULL, - `charity_link` VARCHAR(255) NOT NULL, - `pre_approved` TINYINT NOT NULL, - `status` VARCHAR(255) NOT NULL, - PRIMARY KEY (`UUID_charities`), - UNIQUE INDEX `org_number_UNIQUE` (`org_number` ASC) VISIBLE) - ENGINE = InnoDB; - + CREATE TABLE IF NOT EXISTS `apbaluna`.`Charities` ( + `UUID_charities` CHAR(36) NOT NULL, + `org_number` VARCHAR(255) NOT NULL, + `pre_approved` TINYINT NOT NULL, + `status` VARCHAR(255) NOT NULL, + PRIMARY KEY (`UUID_charities`), + UNIQUE INDEX `org_number_UNIQUE` (`org_number` ASC) VISIBLE) + ENGINE = InnoDB; """; String donationsTable = """ @@ -118,14 +114,14 @@ PRIMARY KEY (`UUID_User`)) -- Table `apbaluna`.`Settings` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `apbaluna`.`Settings` ( - `User_UUID_User` CHAR(36) NOT NULL, + `UUID_user` CHAR(36) NOT NULL, `isAnonymous` TINYINT NOT NULL, `language` VARCHAR(45) NOT NULL, `lightmode` TINYINT NOT NULL, PRIMARY KEY (`User_UUID_User`), - INDEX `fk_Settings_User1_idx` (`User_UUID_User` ASC) VISIBLE, + INDEX `fk_Settings_User1_idx` (`UUID_user` ASC) VISIBLE, CONSTRAINT `fk_Settings_User1` - FOREIGN KEY (`User_UUID_User`) + FOREIGN KEY (`UUID_user`) REFERENCES `apbaluna`.`User` (`UUID_User`) ON DELETE NO ACTION ON UPDATE NO ACTION) @@ -253,6 +249,17 @@ FOREIGN KEY (`User_UUID_User`) ON UPDATE NO ACTION) ENGINE = InnoDB; """; + String charityVanityTable = + """ + CREATE TABLE IF NOT EXISTS `apbaluna`.`Charities` ( + `UUID_charities` CHAR(36) NOT NULL, + `org_number` VARCHAR(255) NOT NULL, + `pre_approved` TINYINT NOT NULL, + `status` VARCHAR(255) NOT NULL, + PRIMARY KEY (`UUID_charities`), + UNIQUE INDEX `org_number_UNIQUE` (`org_number` ASC) VISIBLE) + ENGINE = InnoDB; + """; try (Connection conn = connection.getMySqlConnection(); Statement s = conn.createStatement()) { @@ -266,6 +273,7 @@ FOREIGN KEY (`User_UUID_User`) s.execute(categoriesTable); s.execute(charityCategoriesTable); s.execute(charityUserTable); + s.execute(charityVanityTable); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("Error creating table."); 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 ac7b918..1c4efc8 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/service/APIToDatabaseService.java @@ -12,7 +12,7 @@ public class APIToDatabaseService { private final DatabaseConnection connection; /** - * Contractor for DatabaseManager. It uses a DatabaseConnection object that contains a connection + * Contractor for APIToDatabaseService. It uses a DatabaseConnection object that contains a connection * credentials. * * @param connection @@ -23,29 +23,33 @@ public APIToDatabaseService(DatabaseConnection connection) { /** * This method is used to verify the integrity of the data in the {@code charities} table and to - * update it based on the data retrieved from the IK API. The param charities are retrieved from + * update it based on the data retrieved from the IK API and the charity's URL. + * The param charities are retrieved from * the IK API through the APICharityData class. Called in initialize method in * HmHApplication.java, which is the main class of the application, to ensure that the data is up - * to date when the application starts. Uses a a temp table to ensure that the data in the - * database is consistent with the data from the API. + * to date when the application starts. Uses a temp table to ensure that the data in the database + * is consistent with the data from the API. + *

Uses a URLScraper object to get data not contained in the API, and static methods from + * LogoDownloader to get the charity's logo as a blob.

* - * @param charities + * @param charities a list of {@code Charity} objects to add to the database */ public void addAPIDataToTable(List charities) { Connection conn = null; + int charityCounter = 0; 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, 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) + """; try (PreparedStatement ps = conn.prepareStatement(sql_query)) { for (Charity charity : charities) {