#18: Fix Medicaiton DAO
This commit is contained in:
parent
6908e8129b
commit
391239d028
3 changed files with 22 additions and 12 deletions
|
@ -67,7 +67,6 @@ public class MedicationFixture implements Fixture<Medication> {
|
|||
Ingredient warfarinnatrium = new Ingredient("Warfarinnatrium");
|
||||
|
||||
medications.add(new Medication(
|
||||
1,
|
||||
"Metformin",
|
||||
"AstraZeneca",
|
||||
List.of(
|
||||
|
@ -81,7 +80,6 @@ public class MedicationFixture implements Fixture<Medication> {
|
|||
100
|
||||
));
|
||||
medications.add(new Medication(
|
||||
2,
|
||||
"Lisinopril",
|
||||
"Teva Pharmaceuticals",
|
||||
List.of(
|
||||
|
@ -95,7 +93,6 @@ public class MedicationFixture implements Fixture<Medication> {
|
|||
150
|
||||
));
|
||||
medications.add(new Medication(
|
||||
3,
|
||||
"Simvastatin",
|
||||
"Mylan",
|
||||
List.of(
|
||||
|
@ -109,7 +106,6 @@ public class MedicationFixture implements Fixture<Medication> {
|
|||
80
|
||||
));
|
||||
medications.add(new Medication(
|
||||
4,
|
||||
"Enoxaparin",
|
||||
"Sanofi",
|
||||
List.of(
|
||||
|
@ -122,7 +118,6 @@ public class MedicationFixture implements Fixture<Medication> {
|
|||
120
|
||||
));
|
||||
medications.add(new Medication(
|
||||
5,
|
||||
"Levothyroxin",
|
||||
"Sandoz",
|
||||
List.of(
|
||||
|
@ -136,7 +131,6 @@ public class MedicationFixture implements Fixture<Medication> {
|
|||
90
|
||||
));
|
||||
medications.add(new Medication(
|
||||
6,
|
||||
"Warfarin",
|
||||
"Apotex Inc.",
|
||||
List.of(
|
||||
|
|
|
@ -17,7 +17,7 @@ public class Ingredient {
|
|||
}
|
||||
|
||||
public String getName() {
|
||||
return name.get();
|
||||
return name.getValue();
|
||||
}
|
||||
|
||||
public SimpleStringProperty nameProperty() {
|
||||
|
|
|
@ -29,6 +29,7 @@ public class MedicationDao implements Dao<Medication> {
|
|||
|
||||
@Override
|
||||
public void create(Medication medication) throws SQLException {
|
||||
connection.setAutoCommit(false); //Switch to Manual Commit, to do an SQL Transaction
|
||||
final String medicationSQL = """
|
||||
INSERT INTO medication
|
||||
(name, manufacturer, possibleSideEffects, administrationMethod, currentStock)
|
||||
|
@ -42,6 +43,15 @@ public class MedicationDao implements Dao<Medication> {
|
|||
medicationStatement.setInt(5, medication.getCurrentStock());
|
||||
medicationStatement.execute();
|
||||
|
||||
ResultSet generatedKeys = connection.createStatement().executeQuery("SELECT last_insert_rowid()");
|
||||
connection.commit(); //Finish SQL Transaction
|
||||
connection.setAutoCommit(true); //Switch back Mode
|
||||
|
||||
if (!generatedKeys.next()) {
|
||||
return;
|
||||
}
|
||||
int newId = generatedKeys.getInt(1);
|
||||
|
||||
final String ingredientSQL = """
|
||||
INSERT INTO medication_ingredient
|
||||
(id, name)
|
||||
|
@ -49,7 +59,7 @@ public class MedicationDao implements Dao<Medication> {
|
|||
""";
|
||||
for (Ingredient ingredient : medication.getIngredients()) {
|
||||
PreparedStatement ingredientStatement = this.connection.prepareStatement(ingredientSQL);
|
||||
ingredientStatement.setInt(1, medication.getId());
|
||||
ingredientStatement.setInt(1, newId);
|
||||
ingredientStatement.setString(2, ingredient.getName());
|
||||
ingredientStatement.execute();
|
||||
}
|
||||
|
@ -90,20 +100,26 @@ public class MedicationDao implements Dao<Medication> {
|
|||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
List.of(),
|
||||
new ArrayList<>(),
|
||||
result.getString(4),
|
||||
result.getString(5),
|
||||
result.getInt(6)
|
||||
);
|
||||
medications.add(medication);
|
||||
lastMedicationId = currentMedicationId;
|
||||
continue;
|
||||
}
|
||||
List<Ingredient> ingredients = ingredientMap.computeIfAbsent(currentMedicationId, k -> new ArrayList<>());
|
||||
ingredients.add(new Ingredient(result.getString(7)));
|
||||
String ingredientName = result.getString(7);
|
||||
if(ingredientName == null){
|
||||
continue;
|
||||
}
|
||||
ingredients.add(new Ingredient(ingredientName));
|
||||
lastMedicationId = currentMedicationId;
|
||||
}
|
||||
for (Medication medication : medications) {
|
||||
List<Ingredient> ingredients = ingredientMap.get(medication.getId());
|
||||
if(ingredients.isEmpty()){
|
||||
continue;
|
||||
}
|
||||
medication.setIngredients(ingredientMap.get(medication.getId()));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue