From 8e2801ce0178919057fbb0e2b640ac43a362a963 Mon Sep 17 00:00:00 2001 From: Nils Dittberner Date: Sun, 22 Nov 2015 15:28:24 +0100 Subject: [PATCH] setFall gibt nun beim INSERT eine FallID zurueck. Aufruf voni createADT_A01 funktioniert noch nicht aus neuem Fall erstellen. --- .../mi/projmi6/controller/FallController.java | 6 ++++-- .../java/de/uniluebeck/mi/projmi6/db/DBHandler.java | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java index a463652..de8ca95 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java @@ -209,8 +209,10 @@ public class FallController { Fall fall = new Fall(); copyFieldDataIntoFall(fall); try { - DBHandler.setFall(fall, mainController.getCurrentMitarbeiter().getMitarbID()); - } catch (SQLException e) { + int newfallid = DBHandler.setFall(fall, mainController.getCurrentMitarbeiter().getMitarbID()); + fall.setFallID(newfallid); + HL7Sender.createMessageADT_A01(fall); + } catch (SQLException | HL7Exception | IOException e) { e.printStackTrace(); } } else { diff --git a/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java b/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java index 96af07a..ebd6e20 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java @@ -506,12 +506,12 @@ public class DBHandler { * @param isUpdate {@code true} wenn der Datensatz bereits existiert, sonst {@code false}. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ - public static void setFall(Fall fall, int mitarbid, boolean isUpdate) throws SQLException { + public static int setFall(Fall fall, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { statement = MySqlConnectionFactory.getConnection().prepareStatement(UPDATE_FALL); } else { - statement = MySqlConnectionFactory.getConnection().prepareStatement(INSERT_FALL); + statement = MySqlConnectionFactory.getConnection().prepareStatement(INSERT_FALL, Statement.RETURN_GENERATED_KEYS); } if (fall.getAufnahmeDatum() != null) { @@ -562,6 +562,16 @@ public class DBHandler { } statement.execute(); + + if (!isUpdate) { + ResultSet genkeys = statement.getGeneratedKeys(); + while (genkeys.next()) { + return genkeys.getInt(1); + } + return -1; // Sollte nie vorkommen. + } else { + return fall.getFallID(); + } } /** @@ -571,8 +581,8 @@ public class DBHandler { * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ - public static void setFall(Fall fall, int mitarbid) throws SQLException { - setFall(fall, mitarbid, false); + public static int setFall(Fall fall, int mitarbid) throws SQLException { + return setFall(fall, mitarbid, false); } private static Diagnose getDiagnose(int diagid, Fall fall) throws SQLException {