package de.uniluebeck.mi.projmi6.db; import de.uniluebeck.mi.projmi6.model.*; import java.sql.*; import java.util.ArrayList; import java.util.List; /** * Handler fuer alle DB Interaktionen. */ public class DBHandler { private static final String SELECT_ALL_PATIENTS = "SELECT * FROM `patient`"; private static final String SELECT_PATIENT_BY_ID = "SELECT * FROM `patient` WHERE `id` = ?"; private static final String UPDATE_PATIENT = "UPDATE `patient`" + "SET `CAVE`=?," + "`Vorname`=?," + "`Geburtsname`=?," + "`Nachname`=?," + "`Geburtsdatum`=?," + "`Geschlecht`=?," + "`Familienstand`=?," + "`Strasse`=?," + "`Hausnummer`=?," + "`PLZ`=?," + "`Ort`=?," + "`Telefon`=?," + "`KassenID`=?," + "`Versichertennummer`=?," + "`LetzterBearbeiter`=? " + "WHERE `ID`=?"; private static final String INSERT_PATIENT = "INSERT INTO `patient`" + "(`CAVE`," + "`Vorname`," + "`Geburtsname`," + "`Nachname`," + "`Geburtsdatum`," + "`Geschlecht`," + "`Familienstand`," + "`Strasse`," + "`Hausnummer`," + "`PLZ`," + "`Ort`," + "`Telefon`," + "`KassenID`," + "`Versichertennummer`," + "`LetzterBearbeiter`," + "`Ersteller`)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; private static final String SELECT_ALL_STATIONEN = "SELECT * FROM `stammstation`"; private static final String SELECT_FAELLE_BY_PATID = "SELECT * FROM `fall` WHERE `patientid` = ?"; private static final String INSERT_FALL = "INSERT INTO `fall`" + "(`Aufnahmedatum`," + "`Entlassungsdatum`," + "`Vorstelldatum`," + "`EinweisenderArzt`," + "`Fallart`," + "`Selbsteinweisung`," + "`Hauptdiagnose`," + "`Versichertennummer`," + "`KassenID`," + "`storniert`," + "`LetzterBearbeiter`," + "`PatientID`," + "`Ersteller`)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; private static final String UPDATE_FALL = "UPDATE `fall`" + "SET `Aufnahmedatum`=?," + "`Entlassungsdatum`=?," + "`Vorstelldatum`=?," + "`EinweisenderArzt`=?," + "Fallart=?," + "`Selbsteinweisung`=?," + "Hauptdiagnose=?," + "`Versichertennummer`=?," + "KassenID=?," + "`storniert`=?," + "LetzterBearbeiter=? " + "WHERE `FallID`=?"; private static final String SELECT_DIAGNOSE_BY_ID = "SELECT * FROM `diagnose` WHERE `diagid` = ?"; private static final String SELECT_ALL_ICD10CODES = "SELECT * FROM `stammicd10`"; private static final String SELECT_ALL_OPSCODES = "SELECT * FROM `stammops`"; private static final String SELECT_ICD10CODE_BY_ID = "SELECT * FROM `stammicd10` WHERE `icd10code` = ? AND `version` = ?"; private static final String SELECT_OPSCODE_BY_ID = "SELECT * FROM `stammops` WHERE `opscode` = ? AND `version` = ?"; private static final String SELECT_ALL_MITARBEITER = "SELECT * FROM `mitarbeiter`"; private static final String SELECT_UNTERS_BY_FALLID = "SELECT * FROM `untersuchung` WHERE `fallid` = ?"; private static final String INSERT_UNTERSUCHUNG = "INSERT INTO `untersuchung`" + "(`DurchfuehrenderArzt`," + "`FallID`," + "`OPSCode`," + "`OPSVersion`," + "`storniert`," + "`Untersuchungsdatum`," + "`LetzterBearbeiter`," + "`Ersteller`)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; private static final String UPDATE_UNTERSUCHUNG = "UPDATE `untersuchung`" + "SET `DurchfuehrenderArzt`=?," + "`FallID`=?," + "`OPSCode`=?," + "`OPSVersion`=?," + "`storniert`=?," + "`Untersuchundatum`=?" + "`LetzterBearbeiter` " + "WHERE `UnterID`=?"; private static final String SELECT_MITARBEITER_BY_ID = "SELECT * FROM `mitarbeiter` WHERE `mitarbid` = ?"; private static final String SELECT_DIAGNOSE_BY_FALLID = "SELECT * FROM `diagnose` WHERE `fallid` = ?"; private static final String SELECT_ALL_KASSEN = "SELECT * FROM `kasse`"; private static final String SELECT_KASSE_BY_KASSENID = "SELECT * FROM `kasse` WHERE `kasse`.`KassenID` = ?"; private static final String SELECT_STATHIST_BY_STATION = "SELECT * FROM `stationshistorie` WHERE `stationshistorie`.`Station` = ?"; /** * Gibt alle {@link Patient} aus der DB zurueck. * * @return Liste aller {@link Patient}. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ public static List getAllPatients() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_PATIENTS); List patients = new ArrayList<>(); while (rs.next()) { patients.add(getPatient(rs)); } return patients; } /** * Extrahiert ein Objekt {@link Patient} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Patient} * @throws SQLException */ private static Patient getPatient(ResultSet rs) throws SQLException { Patient patient = new Patient(); patient.setPatID(rs.getInt("id")); patient.setGeburtsname(rs.getString("geburtsname")); patient.setVorname(rs.getString("vorname")); patient.setNachname(rs.getString("nachname")); if (rs.getDate("geburtsdatum") != null) { patient.setGeburtsdatum(rs.getDate("geburtsdatum").toLocalDate()); } patient.setCave(rs.getString("cave")); patient.setStrasse(rs.getString("strasse")); patient.setHausnummer(rs.getString("hausnummer")); patient.setPlz(rs.getString("plz")); patient.setOrt(rs.getString("ort")); patient.setTelefon(rs.getString("telefon")); if (rs.getString("familienstand") != null) { patient.setFamilienstand(Patient.Familienstand.parseChar(rs.getString("familienstand").charAt(0))); } if (rs.getString("geschlecht") != null) { patient.setGeschlecht(Patient.Geschlecht.parseChar(rs.getString("geschlecht").charAt(0))); } patient.setVersichertennummer(rs.getString("versichertennummer")); patient.setKassenID(rs.getInt("kassenid")); setVersionInformation(patient, rs); return patient; } // TODO: Never used. public static Patient getPatient(int id) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_PATIENT_BY_ID); ResultSet rs; statement.setInt(1, id); rs = statement.executeQuery(); return getPatient(rs); } /** * Fuehrt {@code INSERT} bei einem neuen Datensatz und {@code UPDATE} bei einem existierenden Datensatz aus. * * @param patient zu verarbeitender Datensatz. * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. * @param isUpdate {@code true} wenn der Datensatz bereits existiert, sonst {@code false}. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ public static void setPatient(Patient patient, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_PATIENT); } else { statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_PATIENT); } statement.setString(1, patient.getCave()); // CAVE statement.setString(2, patient.getVorname()); // Vorname statement.setString(3, patient.getGeburtsname()); // Geburtsname statement.setString(4, patient.getNachname()); // Nachname statement.setDate(5, Date.valueOf(patient.getGeburtsdatum())); // Geburtsdatum if (patient.getGeschlecht() != null) { statement.setString(6, String.valueOf(patient.getGeschlecht().id())); // Geschlecht } else { statement.setString(6, String.valueOf(Patient.Geschlecht.OTHER.id())); } if (patient.getFamilienstand() != null) { statement.setString(7, String.valueOf(patient.getFamilienstand().id()));// Familienstand } else { statement.setString(7, String.valueOf(Patient.Familienstand.LEDIG.id())); } statement.setString(8, patient.getStrasse()); // Strasse statement.setString(9, patient.getHausnummer()); // Hausnummer statement.setString(10, patient.getPlz()); // PLZ statement.setString(11, patient.getOrt()); // Ort statement.setString(12, patient.getTelefon()); // Telefon statement.setInt(13, patient.getKassenID()); // KassenID statement.setString(14, patient.getVersichertennummer()); // Versichertennummer statement.setInt(15, mitarbid); // LetzterBearbeiter if (!isUpdate) { statement.setInt(16, mitarbid); // Ersteller } else { statement.setInt(16, patient.getPatID()); // PatID (WHERE) } statement.execute(); } public static List getAllStationen() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_STATIONEN); List stationen = new ArrayList<>(); while (rs.next()) { stationen.add(getStation(rs)); } return stationen; } /** * Extrahiert ein Objekt {@link Station} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Station} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static Station getStation(ResultSet rs) throws SQLException { Station station = new Station(); station.setStation(rs.getString("station")); station.setBezeichnung(rs.getString("bezeichnung")); station.setBezeichnungLang(rs.getString("bezeichnunglang")); station.setStationstyp(rs.getInt("stationstyp")); return station; } public static List getStationsHistorieByStation(String station) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_STATHIST_BY_STATION); statement.setString(1, station); ResultSet rs = statement.executeQuery(); List historie = new ArrayList<>(); while (rs.next()) { historie.add(getStationsHistorie(rs)); } return historie; } private static StationsHistorie getStationsHistorie(ResultSet rs) throws SQLException { StationsHistorie hist = new StationsHistorie(); hist.setStatHistID(rs.getInt("stathistid")); if (rs.getTimestamp("aufnahmedatum") != null) { hist.setAufnahmeDatum(rs.getTimestamp("aufnahmedatum").toLocalDateTime()); } if (rs.getTimestamp("entlassungsdatum") != null) { hist.setEntlassungsDatum(rs.getTimestamp("entlassungsdatum").toLocalDateTime()); } // TODO: Muss das jeweils das Objekt sein? // hist.setFall(null); // hist.setStation(null); return hist; } public static List getFaelleByPatID(int id) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_FAELLE_BY_PATID); statement.setInt(1, id); ResultSet rs = statement.executeQuery(); List faelle = new ArrayList<>(); while (rs.next()) { faelle.add(getFall(rs)); } return faelle; } /** * Extrahiert ein Objekt {@link Fall} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Fall} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static Fall getFall(ResultSet rs) throws SQLException { Fall fall = new Fall(); fall.setFallID(rs.getInt("fallid")); if (rs.getTimestamp("aufnahmedatum") != null) { fall.setAufnahmeDatum(rs.getTimestamp("aufnahmedatum").toLocalDateTime()); } if (rs.getTimestamp("entlassungsdatum") != null) { fall.setEntlassungsDatum(rs.getTimestamp("entlassungsdatum").toLocalDateTime()); } if (rs.getInt("hauptdiagnose") != 0) { fall.setHauptDiagnose(getDiagnose(rs.getInt("hauptdiagnose"), fall)); } if (rs.getString("versichertennummer") != null) { fall.setVersichertenNummer(rs.getString("versichertennummer")); } if (rs.getInt("kassenid") != 0) { fall.setKasse(getKasse(rs.getInt("kassenid"))); } fall.setFallArt(FallArt.parseString(rs.getString("fallart"))); return fall; } /** * Fuehrt {@code INSERT} bei einem neuen Datensatz und {@code UPDATE} bei einem existierenden Datensatz aus. * * @param fall zu verarbeitender Datensatz. * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. * @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 { PreparedStatement statement; if (isUpdate) { statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_FALL); } else { statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_FALL); } if (fall.getAufnahmeDatum() != null) { statement.setTimestamp(1, Timestamp.valueOf(fall.getAufnahmeDatum())); // Aufnahmedatum } else { statement.setTimestamp(1, null); } if (fall.getEntlassungsDatum() != null) { statement.setTimestamp(2, Timestamp.valueOf(fall.getEntlassungsDatum())); // Entlassungsdatum } else { statement.setTimestamp(2, null); } if (fall.getVorstellDatum() != null) { statement.setTimestamp(3, Timestamp.valueOf(fall.getVorstellDatum())); // Vorstelldatum } else { statement.setTimestamp(3, null); } if (fall.getEinweisenderArzt() != null) { statement.setInt(4, fall.getEinweisenderArzt().getMitarbID()); // EinweisenderArzt } else { statement.setTimestamp(4, null); } if (fall.getFallArt() != null) { statement.setString(5, fall.getFallArt().id()); // Fallart } else { statement.setString(5, null); } statement.setBoolean(6, fall.getSelbsteinweisung()); // Selbsteinweisung if (fall.getHauptDiagnose() != null) { statement.setInt(7, fall.getHauptDiagnose().getDiagID()); // Hauptdiagnose } else { statement.setTimestamp(7, null); } statement.setString(8, fall.getVersichertenNummer()); // Versichertennummer if (fall.getKasse() != null) { statement.setInt(9, fall.getKasse().getKassenID()); // KassenID } else { statement.setTimestamp(9, null); } statement.setBoolean(10, fall.getStorniert()); // storniert statement.setInt(11, mitarbid); // Letzter Bearbeiter if (!isUpdate) { statement.setInt(12, fall.getPatient().getPatID()); // PatientID statement.setInt(13, mitarbid); // Ersteller } if (isUpdate) { statement.setInt(12, fall.getFallID()); } statement.execute(); } /** * Fuehrt {@code INSERT} eines neuen Datensatz durch. * @param fall zu verarbeitender Datensatz. * @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); } private static Diagnose getDiagnose(int diagid, Fall fall) throws SQLException { Diagnose diagnose = getDiagnose(diagid); diagnose.setFall(fall); return diagnose; } private static Diagnose getDiagnose(int id) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_ID); statement.setInt(1, id); ResultSet rs = statement.executeQuery(); rs.next(); // TODO return getDiagnose(rs); } /** * Extrahiert ein Objekt {@link Diagnose} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Diagnose} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static Diagnose getDiagnose(ResultSet rs) throws SQLException { Diagnose diagnose = new Diagnose(); diagnose.setFreiText(rs.getString("freitext")); diagnose.setArzt(new Mitarbeiter(rs.getInt("arzt"))); diagnose.setDiagArt(DiagArt.parseInt(rs.getInt("diagart"))); setVersionInformation(diagnose, rs); diagnose.setIcd10code(getIcd10Code(rs.getString("icd10code"), rs.getInt("icd10version"))); return diagnose; } private static void setVersionInformation(Version version, ResultSet rs) throws SQLException { version.setErsteller(rs.getInt("ersteller")); if (rs.getTimestamp("erstelldatum") != null) { version.setErstellDatumZeit(rs.getTimestamp("erstelldatum").toLocalDateTime()); } version.setBearbeiter(rs.getInt("letzterbearbeiter")); if (rs.getTimestamp("letztesbearbeitungsdatum") != null) { version.setBearbeitetDatumZeit(rs.getTimestamp("letztesbearbeitungsdatum").toLocalDateTime()); } } public static List getAllIcd10Codes() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_ICD10CODES); List icd10codes = new ArrayList<>(); while (rs.next()) { icd10codes.add(getIcd10Code(rs)); } return icd10codes; } private static Icd10Code getIcd10Code(String code, int version) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_ICD10CODE_BY_ID); ResultSet rs; statement.setString(1, code); statement.setInt(2, version); rs = statement.executeQuery(); rs.next(); // TODO return getIcd10Code(rs); } /** * Extrahiert ein Objekt {@link Icd10Code} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Icd10Code} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static Icd10Code getIcd10Code(ResultSet rs) throws SQLException { String code = rs.getString("icd10code"); String text = rs.getString("text"); int version = rs.getInt("version"); return new Icd10Code(code, text, version); } public static List getAllOpsCodes() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_OPSCODES); List opscodes = new ArrayList<>(); while (rs.next()) { opscodes.add(getOpsCode(rs)); } return opscodes; } private static OpsCode getOpsCode(String code, int version) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_OPSCODE_BY_ID); ResultSet rs; statement.setString(1, code); statement.setInt(2, version); rs = statement.executeQuery(); rs.next(); // TODO return getOpsCode(rs); } /** * Extrahiert ein Objekt {@link OpsCode} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link OpsCode} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static OpsCode getOpsCode(ResultSet rs) throws SQLException { String code = rs.getString("opscode"); String text = rs.getString("text"); int version = rs.getInt("version"); return new OpsCode(code, text, version); } public static List getAllMitarbeiter() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_MITARBEITER); List mitarbeiters = new ArrayList<>(); while (rs.next()) { mitarbeiters.add(getMitarbeiter(rs)); } return mitarbeiters; } private static Mitarbeiter getMitarbeiter(int id) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_MITARBEITER_BY_ID); ResultSet rs; statement.setInt(1, id); rs = statement.executeQuery(); rs.next(); // TODO return getMitarbeiter(rs); } /** * Extrahiert ein Objekt {@link Mitarbeiter} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Mitarbeiter} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static Mitarbeiter getMitarbeiter(ResultSet rs) throws SQLException { Mitarbeiter mitarbeiter = new Mitarbeiter(rs.getInt("mitarbid")); mitarbeiter.setTitel(rs.getString("titel")); mitarbeiter.setVorname(rs.getString("vorname")); mitarbeiter.setNachname(rs.getString("nachname")); mitarbeiter.setEinweisenderArzt(rs.getString("einweisenderarzt")); return mitarbeiter; } /** * Gibt gibt alle {@link Untersuchung} zu einem {@link Fall} aus. * * @param fall Parent {@link Fall} * @return Liste aller {@link Untersuchung} zu einem {@link Fall}. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ public static List getUntersuchungByFall(Fall fall) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID); statement.setInt(1, fall.getFallID()); ResultSet rs = statement.executeQuery(); List untersuchungen = new ArrayList<>(); while (rs.next()) { untersuchungen.add(getUntersuchung(rs, fall)); } return untersuchungen; } private static Untersuchung getUntersuchung(ResultSet rs, Fall fall) throws SQLException { Untersuchung untersuchung = new Untersuchung(); untersuchung.setUntersID(rs.getInt("untersid")); untersuchung.setFall(fall); untersuchung.setDurchfuehrenderArzt(getMitarbeiter(rs.getInt("durchfuehrenderarzt"))); untersuchung.setUntersuchungsdatum(rs.getTimestamp("untersuchungsdatum").toLocalDateTime()); untersuchung.setOpscode(getOpsCode(rs.getString("opscode"), rs.getInt("opsversion"))); setVersionInformation(untersuchung, rs); return untersuchung; } /** * Fuehrt {@code INSERT} bei einem neuen Datensatz und {@code UPDATE} bei einem existierenden Datensatz aus. * * @param untersuchung zu verarbeitender Datensatz. * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. * @param isUpdate {@code true} wenn der Datensatz bereits existiert, sonst {@code false}. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ public static void setUntersuchung(Untersuchung untersuchung, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_UNTERSUCHUNG); } else { statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_UNTERSUCHUNG); } statement.setInt(1, untersuchung.getDurchfuehrenderArzt().getMitarbID()); // DurchfuehrenderArzt statement.setInt(2, untersuchung.getFall().getFallID()); // FallID statement.setString(3, untersuchung.getOpscode().getOpsCode()); // OPSCode statement.setInt(4, untersuchung.getOpscode().getVersion()); // OPSVersion statement.setBoolean(5, untersuchung.getStorniert()); // storniert statement.setTimestamp(6, Timestamp.valueOf(untersuchung.getUntersuchungsdatum())); // Untersuchungsdatum statement.setInt(7, mitarbid); // Letzter Bearbeiter if (!isUpdate) { statement.setInt(8, mitarbid); // Ersteller } statement.execute(); } public static List getDiagnosenByFall(Fall fall) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID); statement.setInt(1, fall.getFallID()); ResultSet rs = statement.executeQuery(); List diagnosen = new ArrayList<>(); while (rs.next()) { diagnosen.add(getDiagnose(rs.getInt("diagid"), fall)); } return diagnosen; } public static List getAllKassen() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_KASSEN); List kassen = new ArrayList<>(); while (rs.next()) { kassen.add(getKasse(rs)); } return kassen; } private static Kasse getKasse(int kassenid) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_KASSE_BY_KASSENID); statement.setInt(1, kassenid); ResultSet rs = statement.executeQuery(); rs.next(); // TODO return getKasse(rs); } /** * Extrahiert ein Objekt {@link Kasse} aus einem gegebenen {@link ResultSet}. * * @param rs ResultSet from Database Query. * @return {@link Kasse} * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ private static Kasse getKasse(ResultSet rs) throws SQLException { Kasse kasse = new Kasse(); kasse.setKassenID(rs.getInt("kassenid")); kasse.setName(rs.getString("name")); kasse.setAdresse(rs.getString("adresse")); kasse.setPrivat(rs.getBoolean("privat")); setVersionInformation(kasse, rs); return kasse; } }