From ab6892bddda5a8d342470ecb794541947012ef80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20S=C3=A4ume?= Date: Sun, 5 May 2024 11:17:03 +0200 Subject: [PATCH] #22: Setup MedicationDao MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dominik Säume --- .../hitec/nhplus/medication/Ingredient.java | 15 +- .../nhplus/medication/MedicationDao.java | 157 ++++++++++++++++++ 2 files changed, 159 insertions(+), 13 deletions(-) create mode 100644 src/main/java/de/hitec/nhplus/medication/MedicationDao.java diff --git a/src/main/java/de/hitec/nhplus/medication/Ingredient.java b/src/main/java/de/hitec/nhplus/medication/Ingredient.java index 0ddca5a..626e3c0 100644 --- a/src/main/java/de/hitec/nhplus/medication/Ingredient.java +++ b/src/main/java/de/hitec/nhplus/medication/Ingredient.java @@ -1,25 +1,14 @@ package de.hitec.nhplus.medication; -import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleStringProperty; public class Ingredient { - private SimpleIntegerProperty id; - private SimpleStringProperty name; + private final SimpleStringProperty name; - public Ingredient(int id, String name) { - this.id = new SimpleIntegerProperty(id); + public Ingredient(String name) { this.name = new SimpleStringProperty(name); } - public int getId() { - return id.get(); - } - - public SimpleIntegerProperty idProperty() { - return id; - } - public String getName() { return name.get(); } diff --git a/src/main/java/de/hitec/nhplus/medication/MedicationDao.java b/src/main/java/de/hitec/nhplus/medication/MedicationDao.java new file mode 100644 index 0000000..1c27561 --- /dev/null +++ b/src/main/java/de/hitec/nhplus/medication/MedicationDao.java @@ -0,0 +1,157 @@ +package de.hitec.nhplus.medication; + +import de.hitec.nhplus.datastorage.DaoImp; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.StringJoiner; + +public class MedicationDao extends DaoImp { + public MedicationDao(Connection connection) { + super(connection); + } + + + @Override + protected PreparedStatement getCreateStatement(Medication medication) { + PreparedStatement preparedStatement = null; + try { + StringJoiner SQL = new StringJoiner(";"); + SQL.add( + "INSERT INTO medication " + + "(name, manufacturer, possibleSideEffects, administrationMethod, currentMethod) " + + "VALUES (?, ?, ?, ?, ?);" + ); + final ObservableList ingredients = medication.getIngredients(); + for (int i = 0; i < ingredients.size(); i++) { + SQL.add( + "INSERT INTO medication_ingredient (medicationId, ingredient) " + + "VALUES (?, ?)" + ); + } + preparedStatement = this.connection.prepareStatement(SQL.toString()); + preparedStatement.setString(1, medication.getName()); + preparedStatement.setString(2, medication.getManufacturer()); + preparedStatement.setString(3, medication.getPossibleSideEffects()); + preparedStatement.setString(4, medication.getAdministrationMethod()); + preparedStatement.setInt(5, medication.getCurrentStock()); + for (int i = 0; i < ingredients.size(); i++) { + preparedStatement.setInt(6 + i * 2, medication.getId()); + preparedStatement.setString(7 + i * 2, ingredients.get(i).getName()); + } + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } + + @Override + protected PreparedStatement getReadByIDStatement(int id) { + PreparedStatement preparedStatement = null; + try { + final String SQL = "SELECT * FROM treatment WHERE id = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setInt(1, id); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } + + @Override + protected Medication getInstanceFromResultSet(ResultSet result) throws SQLException { + Medication medication = new Medication( + result.getInt(1), + result.getString(2), + result.getString(3), + FXCollections.observableArrayList(), + result.getString(4), + result.getString(5), + result.getInt(6) + ); + PreparedStatement preparedStatement = null; + try { + final String SQL = "SELECT * FROM medication_ingredient WHERE id = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setInt(1, medication.getId()); + ResultSet ingredientResults = preparedStatement.executeQuery(); + while (result.next()) { + medication + .getIngredients() + .add(new Ingredient( + ingredientResults.getString(2) + )) + ; + } + } catch (SQLException exception) { + exception.printStackTrace(); + } + return medication; + } + + @Override + protected PreparedStatement getReadAllStatement() { + PreparedStatement statement = null; + try { + final String SQL = "SELECT * FROM medication"; + statement = this.connection.prepareStatement(SQL); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return statement; + } + + @Override + protected ArrayList getListFromResultSet(ResultSet result) throws SQLException { + ArrayList list = new ArrayList<>(); + while (result.next()) { + list.add(getInstanceFromResultSet(result)); + } + return list; + } + + @Override + protected PreparedStatement getUpdateStatement(Medication medication) { + PreparedStatement preparedStatement = null; + try { + final String SQL = + "UPDATE medication SET " + + "name = ?, " + + "manufacturer = ?, " + + "possibleSideEffects = ?, " + + "administrationMethod = ?, " + + "currentStock = ? " + + "WHERE id = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setString(1, medication.getName()); + preparedStatement.setString(2, medication.getManufacturer()); + preparedStatement.setString(3, medication.getPossibleSideEffects()); + preparedStatement.setString(4, medication.getAdministrationMethod()); + preparedStatement.setInt(5, medication.getCurrentStock()); + preparedStatement.setInt(6, medication.getId()); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } + + @Override + protected PreparedStatement getDeleteStatement(int id) { + PreparedStatement preparedStatement = null; + try { + final String SQL = + "DELETE FROM medication WHERE id = ?; DELETE FROM medication_ingredient WHERE id = ?"; + preparedStatement = this.connection.prepareStatement(SQL); + preparedStatement.setInt(1, id); + preparedStatement.setInt(2, id); + } catch (SQLException exception) { + exception.printStackTrace(); + } + return preparedStatement; + } +}