-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor[wrapper]&feat[DbWrapper]: move wrapper classes to its own fo…
…lder, and add a class for database communication
- Loading branch information
Lucy Ciara Herud-Thomassen
authored and
Lucy Ciara Herud-Thomassen
committed
Mar 12, 2026
1 parent
1c56f3c
commit bdd2284
Showing
6 changed files
with
158 additions
and
65 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
113 changes: 113 additions & 0 deletions
113
src/main/java/edu/group5/app/control/wrapper/DbWrapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| package edu.group5.app.control.wrapper; | ||
|
|
||
| import java.math.BigDecimal; | ||
| import java.sql.Connection; | ||
| import java.sql.DriverManager; | ||
| import java.sql.PreparedStatement; | ||
| import java.sql.ResultSet; | ||
| import java.sql.SQLException; | ||
| import java.sql.Timestamp; | ||
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| public class DbWrapper { | ||
| protected Connection connection; | ||
| private static final String CONNECTION_TYPE = "jdbc:h2:"; | ||
| private static final String DB_SCRIPT = "INIT=RUNSCRIPT FROM 'classpath:"; | ||
| private String connectionString; | ||
|
|
||
| public DbWrapper(boolean test) { | ||
| if (test) { | ||
| this.connectionString = CONNECTION_TYPE + "mem:test;" + DB_SCRIPT + "test_init.sql'"; | ||
| } else { | ||
| this.connectionString = CONNECTION_TYPE + "file:./help-me-help;" + DB_SCRIPT + "init.sql'"; | ||
| } | ||
| } | ||
|
|
||
| public boolean connect() throws SQLException { | ||
| try { | ||
| this.connection = DriverManager.getConnection(this.connectionString); | ||
| } catch (SQLException SQLe) { | ||
| System.out.println(SQLe.getMessage()); | ||
| } | ||
| return connection.isValid(0); | ||
| } | ||
|
|
||
| public List<Object[]> importUser() throws SQLException { | ||
| PreparedStatement ps = this.connection.prepareStatement("SELECT * FROM user"); | ||
| ResultSet results = ps.executeQuery(); | ||
| List<Object[]> data = new ArrayList<Object[]>(); | ||
| while (results.next()) { | ||
| data.add( | ||
| new Object[] { | ||
| results.getInt("user_id"), | ||
| results.getString("role"), | ||
| results.getString("first_name"), | ||
| results.getString("last_name"), | ||
| results.getString("email"), | ||
| results.getString("password_hash") | ||
| }); | ||
| } | ||
| return data; | ||
| } | ||
|
|
||
| public int exportUser(List<Object[]> data) throws SQLException { | ||
| if (data == null) { | ||
| throw new IllegalArgumentException("data can't be null"); | ||
| } | ||
| if (data.get(0).length != 6) { | ||
| throw new IllegalArgumentException("data's arrays must have a length of 6"); | ||
| } | ||
| int rowsAffected = 0; | ||
| PreparedStatement ps = this.connection.prepareStatement( | ||
| "INSERT INTO user (user_id, role, first_name, last_name, email, password_hash) VALUES (?, ?, ?, ?, ?, ?)"); | ||
| for (Object[] row : data) { | ||
| ps.setInt(1, (int) row[0]); | ||
| for (int i = 1; i < row.length; i++) { | ||
| ps.setString(i + 1, (String) row[i]); | ||
| } | ||
| rowsAffected = ps.executeUpdate(); | ||
| } | ||
| return rowsAffected; | ||
| } | ||
|
|
||
| public List<Object[]> importDonations(int user_id) throws SQLException { | ||
| PreparedStatement ps = this.connection.prepareStatement("SELECT * FROM donations WHERE user_id = ?"); | ||
| ps.setInt(1, user_id); | ||
| ResultSet results = ps.executeQuery(); | ||
| List<Object[]> data = new ArrayList<Object[]>(); | ||
| while (results.next()) { | ||
| data.add( | ||
| new Object[] { | ||
| results.getInt(1), | ||
| results.getInt(2), | ||
| results.getInt(3), | ||
| results.getBigDecimal(4), | ||
| results.getTimestamp(5), | ||
| results.getString(6) | ||
| }); | ||
| } | ||
| return data; | ||
| } | ||
|
|
||
| public int exportDonations(List<Object[]> data) throws SQLException { | ||
| if (data == null) { | ||
| throw new IllegalArgumentException("data can't be null"); | ||
| } | ||
| if (data.get(0).length == 6) { | ||
| throw new IllegalArgumentException("data's arrays must have a length of 6"); | ||
| } | ||
| int rowsAffected = 0; | ||
| PreparedStatement ps = this.connection.prepareStatement( | ||
| "INSERT INTO donations (donation_id, user_id, organization_id, amount, dating, payment_method) VALUES (?, ?, ?, ?, ?, ?)"); | ||
| for (Object[] row : data) { | ||
| for (int i = 0; i < 3; i++) { | ||
| ps.setInt(i + 1, (int) row[i]); | ||
| } | ||
| ps.setBigDecimal(4, (BigDecimal) row[3]); | ||
| ps.setTimestamp(5, (Timestamp) row[4]); | ||
| rowsAffected = ps.executeUpdate(); | ||
| } | ||
| return rowsAffected; | ||
| } | ||
| } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters