#32: Refactor Database Usage, to be more consistent and understandable #33
35 changed files with 824 additions and 739 deletions
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="nursingHome.db" uuid="5a5b8be1-080b-4129-b89d-42f1ea832b90">
|
||||
<data-source source="LOCAL" name="Database" uuid="5a5b8be1-080b-4129-b89d-42f1ea832b90">
|
||||
<driver-ref>sqlite.xerial</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
||||
|
|
35
.idea/sqlDataSources.xml
Normal file
35
.idea/sqlDataSources.xml
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DdlMappings">
|
||||
<mapping uuid="6de31afe-6f51-4d57-ac29-b95200cc6a68" name="Database Mapping">
|
||||
<data-sources db="5a5b8be1-080b-4129-b89d-42f1ea832b90" ddl="82842a6c-e549-4bc0-9743-9bdb8b472dfc" />
|
||||
<scope>
|
||||
<node negative="1">
|
||||
<node kind="database" negative="1">
|
||||
<node kind="schema" negative="1" />
|
||||
</node>
|
||||
<node kind="schema" qname="main" />
|
||||
</node>
|
||||
</scope>
|
||||
</mapping>
|
||||
</component>
|
||||
<component name="SqlDataSourceStorage">
|
||||
<option name="dataSources">
|
||||
<list>
|
||||
<State>
|
||||
<option name="id" value="82842a6c-e549-4bc0-9743-9bdb8b472dfc" />
|
||||
<option name="name" value="NHPlus DDL" />
|
||||
<option name="dbmsName" value="SQLITE" />
|
||||
<option name="urls">
|
||||
<array>
|
||||
<option value="file://$PROJECT_DIR$/src/main/resources/de/hitec/nhplus/patient/database/Patient.sql" />
|
||||
<option value="file://$PROJECT_DIR$/src/main/resources/de/hitec/nhplus/treatment/database/Treatment.sql" />
|
||||
<option value="file://$PROJECT_DIR$/src/main/resources/de/hitec/nhplus/nurse/database/Nurse.sql" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="outLayout" value="File per object by schema.groovy" />
|
||||
</State>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
|
@ -1,8 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java/de/hitec/nhplus/patient/PatientDao.java" dialect="GenericSQL" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/java/de/hitec/nhplus/treatment/TreatmentDao.java" dialect="GenericSQL" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/java/de/hitec/nhplus/patient/database/PatientDao.java" dialect="GenericSQL" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java" dialect="GenericSQL" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/java/de/hitec/nhplus/treatment/database/NurseDao.java" dialect="GenericSQL" />
|
||||
<file url="PROJECT" dialect="SQLite" />
|
||||
</component>
|
||||
</project>
|
Binary file not shown.
|
@ -1,11 +1,17 @@
|
|||
package de.hitec.nhplus.datastorage;
|
||||
|
||||
import org.sqlite.SQLiteConfig;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.sqlite.SQLiteConfig;
|
||||
|
||||
/**
|
||||
* The {@link DaoFactory} allows a safe connection to the Database.
|
||||
*
|
||||
* @author Bernd Heidemann
|
||||
* @version 1.0
|
||||
*/
|
||||
public class ConnectionBuilder {
|
||||
|
||||
private static final String DB_NAME = "nursingHome.db";
|
||||
|
@ -13,6 +19,10 @@ public class ConnectionBuilder {
|
|||
|
||||
private static Connection connection;
|
||||
|
||||
/**
|
||||
* @return a Thread-safe {@link Connection} to the Database.
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
synchronized public static Connection getConnection() {
|
||||
try {
|
||||
if (ConnectionBuilder.connection == null) {
|
||||
|
@ -27,6 +37,11 @@ public class ConnectionBuilder {
|
|||
return ConnectionBuilder.connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the Connection to the Database.
|
||||
*
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
synchronized public static void closeConnection() {
|
||||
try {
|
||||
if (ConnectionBuilder.connection != null) {
|
||||
|
|
|
@ -3,14 +3,52 @@ package de.hitec.nhplus.datastorage;
|
|||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* {@link Dao} is the Abbreviation of Data-Access-Object.
|
||||
* This Interface has the Basic Methods which are needed on any DAO to work as expected.
|
||||
*
|
||||
* @param <T> The Model for which that DAO is implemented
|
||||
* @author Bernd Heidemann
|
||||
* @version 1.0
|
||||
* @implSpec The Implementations should be added to the {@link DaoFactory}
|
||||
*/
|
||||
public interface Dao<T> {
|
||||
/**
|
||||
* Create a Database Entry from a Model object.
|
||||
*
|
||||
* @param t the Model instance
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
void create(T t) throws SQLException;
|
||||
|
||||
/**
|
||||
* Read a Database Entry to a Model object.
|
||||
*
|
||||
* @param id of the Element in the Database
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
T read(int id) throws SQLException;
|
||||
|
||||
/**
|
||||
* Read all Database Entries to a {@link List} of Model objects.
|
||||
*
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
List<T> readAll() throws SQLException;
|
||||
|
||||
/**
|
||||
* Update the Database according to the Values of the Model object.
|
||||
*
|
||||
* @param t the Model instance.
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
void update(T t) throws SQLException;
|
||||
|
||||
void deleteById(int id) throws SQLException;
|
||||
/**
|
||||
* Delete a Database Entry.
|
||||
*
|
||||
* @param id of the Element in the Database.
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
void delete(int id) throws SQLException;
|
||||
}
|
||||
|
|
|
@ -1,31 +1,58 @@
|
|||
package de.hitec.nhplus.datastorage;
|
||||
|
||||
import de.hitec.nhplus.nurse.NurseDao;
|
||||
import de.hitec.nhplus.patient.PatientDao;
|
||||
import de.hitec.nhplus.treatment.TreatmentDao;
|
||||
import de.hitec.nhplus.nurse.database.NurseDao;
|
||||
import de.hitec.nhplus.patient.database.PatientDao;
|
||||
import de.hitec.nhplus.treatment.database.TreatmentDao;
|
||||
|
||||
/**
|
||||
* The {@link DaoFactory} is a Singleton({@link DaoFactory#getInstance}) which should be used to get {@link Dao}s.
|
||||
*
|
||||
* @author Bernd Heidemann
|
||||
* @version 1.0
|
||||
*/
|
||||
public class DaoFactory {
|
||||
|
||||
private static DaoFactory instance;
|
||||
|
||||
/**
|
||||
* A Private Constructor according to the Singleton Pattern.
|
||||
*
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
private DaoFactory() {
|
||||
}
|
||||
|
||||
public static DaoFactory getDaoFactory() {
|
||||
/**
|
||||
* @return {@link DaoFactory}, the Singleton Instance
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
public static DaoFactory getInstance() {
|
||||
if (DaoFactory.instance == null) {
|
||||
DaoFactory.instance = new DaoFactory();
|
||||
}
|
||||
return DaoFactory.instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a {@link TreatmentDao}
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
public TreatmentDao createTreatmentDao() {
|
||||
return new TreatmentDao(ConnectionBuilder.getConnection());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a {@link PatientDao}
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
public PatientDao createPatientDAO() {
|
||||
return new PatientDao(ConnectionBuilder.getConnection());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a {@link NurseDao}
|
||||
* @author Dominik Säume
|
||||
*/
|
||||
public NurseDao createNurseDAO() {
|
||||
return new NurseDao(ConnectionBuilder.getConnection());
|
||||
}
|
||||
|
|
|
@ -1,57 +1,101 @@
|
|||
package de.hitec.nhplus.datastorage;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* The {@link DaoImp} is a Generic Base Implementation of the {@link Dao},
|
||||
* which should fit most use cases.
|
||||
*
|
||||
* @param <T> The Model for which that DAO is implemented
|
||||
* @author Bernd Heidemann
|
||||
* @version 1.0
|
||||
* @implSpec The Implementations should be added to the {@link DaoFactory}
|
||||
*/
|
||||
public abstract class DaoImp<T> implements Dao<T> {
|
||||
protected final Connection connection;
|
||||
|
||||
/**
|
||||
* @param connection a Database Connection, which should be gotten from {@link ConnectionBuilder}
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
public DaoImp(Connection connection) {
|
||||
this.connection = connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new Database Entry from a Model object.
|
||||
*
|
||||
* @param t the Model instance
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
@Override
|
||||
public void create(T t) throws SQLException {
|
||||
getCreateStatement(t).executeUpdate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a Database Entry to a Model object.
|
||||
*
|
||||
* @param id of the Element in the Database
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
@Override
|
||||
public T read(int key) throws SQLException {
|
||||
public T read(int id) throws SQLException {
|
||||
T object = null;
|
||||
ResultSet result = getReadByIDStatement(key).executeQuery();
|
||||
ResultSet result = getReadByIDStatement(id).executeQuery();
|
||||
if (result.next()) {
|
||||
object = getInstanceFromResultSet(result);
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read all Database Entries to a {@link List} of Model objects.
|
||||
*
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
@Override
|
||||
public List<T> readAll() throws SQLException {
|
||||
return getListFromResultSet(getReadAllStatement().executeQuery());
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the Database according to the Values of the Model object.
|
||||
*
|
||||
* @param t the Model instance.
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
@Override
|
||||
public void update(T t) throws SQLException {
|
||||
getUpdateStatement(t).executeUpdate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a Database Entry.
|
||||
*
|
||||
* @param id of the Element in the Database.
|
||||
* @author Bernd Heidemann
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(int key) throws SQLException {
|
||||
getDeleteStatement(key).executeUpdate();
|
||||
public void delete(int id) throws SQLException {
|
||||
getDeleteStatement(id).executeUpdate();
|
||||
}
|
||||
|
||||
protected abstract T getInstanceFromResultSet(ResultSet set) throws SQLException;
|
||||
protected abstract T getInstanceFromResultSet(ResultSet result) throws SQLException;
|
||||
|
||||
protected abstract ArrayList<T> getListFromResultSet(ResultSet set) throws SQLException;
|
||||
protected abstract List<T> getListFromResultSet(ResultSet result) throws SQLException;
|
||||
|
||||
protected abstract PreparedStatement getCreateStatement(T t);
|
||||
protected abstract PreparedStatement getCreateStatement(T t) throws SQLException;
|
||||
|
||||
protected abstract PreparedStatement getReadByIDStatement(int key);
|
||||
protected abstract PreparedStatement getReadByIDStatement(int id) throws SQLException;
|
||||
|
||||
protected abstract PreparedStatement getReadAllStatement();
|
||||
protected abstract PreparedStatement getReadAllStatement() throws SQLException;
|
||||
|
||||
protected abstract PreparedStatement getUpdateStatement(T t);
|
||||
protected abstract PreparedStatement getUpdateStatement(T t) throws SQLException;
|
||||
|
||||
protected abstract PreparedStatement getDeleteStatement(int key);
|
||||
protected abstract PreparedStatement getDeleteStatement(int id) throws SQLException;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ import java.util.Map;
|
|||
|
||||
public interface Fixture<T>
|
||||
{
|
||||
void dropTable(Connection connection);
|
||||
void setupTable(Connection connection);
|
||||
void dropTable(Connection connection) throws SQLException;
|
||||
void setupTable(Connection connection) throws SQLException;
|
||||
Map<String, T> load() throws SQLException;
|
||||
}
|
||||
|
|
|
@ -1,40 +1,28 @@
|
|||
package de.hitec.nhplus.fixtures;
|
||||
|
||||
import de.hitec.nhplus.Main;
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.nurse.NurseDao;
|
||||
import de.hitec.nhplus.nurse.Nurse;
|
||||
import de.hitec.nhplus.nurse.database.NurseDao;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
public class NurseFixture implements Fixture<Nurse> {
|
||||
@Override
|
||||
public void dropTable(Connection connection) {
|
||||
try (Statement statement = connection.createStatement()) {
|
||||
statement.execute("DROP TABLE nurse");
|
||||
} catch (SQLException exception) {
|
||||
System.out.println(exception.getMessage());
|
||||
}
|
||||
public void dropTable(Connection connection) throws SQLException {
|
||||
connection.createStatement().execute("DROP TABLE nurse");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupTable(Connection connection) {
|
||||
final String SQL = "CREATE TABLE IF NOT EXISTS nurse (" +
|
||||
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
"firstname TEXT NOT NULL, " +
|
||||
"surname TEXT NOT NULL, " +
|
||||
"phoneNumber TEXT NOT NULL" +
|
||||
");";
|
||||
try (Statement statement = connection.createStatement()) {
|
||||
statement.execute(SQL);
|
||||
} catch (SQLException exception) {
|
||||
System.out.println(exception.getMessage());
|
||||
}
|
||||
public void setupTable(Connection connection) throws SQLException {
|
||||
final InputStream schema = Main.class.getResourceAsStream("/de/hitec/nhplus/nurse/database/Nurse.sql");
|
||||
assert schema != null;
|
||||
final String SQL = new Scanner(schema, StandardCharsets.UTF_8).useDelimiter("\\A").next();
|
||||
connection.createStatement().execute(SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -52,12 +40,12 @@ public class NurseFixture implements Fixture<Nurse> {
|
|||
"Armout",
|
||||
"9876543210"
|
||||
));
|
||||
NurseDao dao = DaoFactory.getDaoFactory().createNurseDAO();
|
||||
for(Nurse nurse : nurses){
|
||||
NurseDao dao = DaoFactory.getInstance().createNurseDAO();
|
||||
for (Nurse nurse : nurses) {
|
||||
dao.create(nurse);
|
||||
}
|
||||
Map<String, Nurse> nursesByName = new HashMap<>();
|
||||
for (Nurse nurse : dao.readAll()){
|
||||
for (Nurse nurse : dao.readAll()) {
|
||||
nursesByName.put(nurse.getFirstName(), nurse);
|
||||
}
|
||||
return nursesByName;
|
||||
|
|
|
@ -1,56 +1,35 @@
|
|||
package de.hitec.nhplus.fixtures;
|
||||
|
||||
import de.hitec.nhplus.Main;
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.patient.PatientDao;
|
||||
import de.hitec.nhplus.patient.Patient;
|
||||
import de.hitec.nhplus.patient.database.PatientDao;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalDate;
|
||||
|
||||
public class PatientFixture implements Fixture<Patient>
|
||||
{
|
||||
public class PatientFixture implements Fixture<Patient> {
|
||||
@Override
|
||||
public void dropTable(Connection connection)
|
||||
{
|
||||
try (Statement statement = connection.createStatement())
|
||||
{
|
||||
statement.execute("DROP TABLE patient");
|
||||
} catch (SQLException exception)
|
||||
{
|
||||
System.out.println(exception.getMessage());
|
||||
}
|
||||
public void dropTable(Connection connection) throws SQLException {
|
||||
connection.createStatement().execute("DROP TABLE patient");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupTable(Connection connection)
|
||||
{
|
||||
final String SQL = "CREATE TABLE IF NOT EXISTS patient (" +
|
||||
" id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
" firstname TEXT NOT NULL, " +
|
||||
" surname TEXT NOT NULL, " +
|
||||
" dateOfBirth TEXT NOT NULL, " +
|
||||
" carelevel TEXT NOT NULL, " +
|
||||
" roomnumber TEXT NOT NULL" +
|
||||
");";
|
||||
try (Statement statement = connection.createStatement())
|
||||
{
|
||||
statement.execute(SQL);
|
||||
} catch (SQLException exception)
|
||||
{
|
||||
System.out.println(exception.getMessage());
|
||||
}
|
||||
public void setupTable(Connection connection) throws SQLException {
|
||||
// @SuppressWarnings("checkstyle:LineLength")
|
||||
final InputStream schema = Main.class.getResourceAsStream("/de/hitec/nhplus/patient/database/Patient.sql");
|
||||
assert schema != null;
|
||||
final String SQL = new Scanner(schema, StandardCharsets.UTF_8).useDelimiter("\\A").next();
|
||||
connection.createStatement().execute(SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Patient> load() throws SQLException
|
||||
{
|
||||
public Map<String, Patient> load() throws SQLException {
|
||||
List<Patient> patients = new ArrayList<>();
|
||||
|
||||
patients.add(new Patient(
|
||||
|
@ -96,12 +75,12 @@ public class PatientFixture implements Fixture<Patient>
|
|||
"110"
|
||||
));
|
||||
|
||||
PatientDao dao = DaoFactory.getDaoFactory().createPatientDAO();
|
||||
for (Patient patient : patients){
|
||||
PatientDao dao = DaoFactory.getInstance().createPatientDAO();
|
||||
for (Patient patient : patients) {
|
||||
dao.create(patient);
|
||||
}
|
||||
Map<String, Patient> patientsByName = new HashMap<>();
|
||||
for (Patient patient : dao.readAll()){
|
||||
for (Patient patient : dao.readAll()) {
|
||||
patientsByName.put(patient.getFirstName(), patient);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,68 +1,42 @@
|
|||
package de.hitec.nhplus.fixtures;
|
||||
|
||||
import de.hitec.nhplus.Main;
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.treatment.TreatmentDao;
|
||||
import de.hitec.nhplus.patient.Patient;
|
||||
import de.hitec.nhplus.treatment.Treatment;
|
||||
import de.hitec.nhplus.treatment.database.TreatmentDao;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalDate;
|
||||
import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalTime;
|
||||
|
||||
public class TreatmentFixture implements Fixture<Treatment>
|
||||
{
|
||||
public class TreatmentFixture implements Fixture<Treatment> {
|
||||
private final Map<String, Patient> patientsByName;
|
||||
|
||||
public TreatmentFixture(Map<String, Patient> patientsByName)
|
||||
{
|
||||
public TreatmentFixture(Map<String, Patient> patientsByName) {
|
||||
this.patientsByName = patientsByName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropTable(Connection connection)
|
||||
{
|
||||
try (Statement statement = connection.createStatement())
|
||||
{
|
||||
statement.execute("DROP TABLE treatment");
|
||||
} catch (SQLException exception)
|
||||
{
|
||||
System.out.println(exception.getMessage());
|
||||
}
|
||||
public void dropTable(Connection connection) throws SQLException {
|
||||
connection.createStatement().execute("DROP TABLE treatment");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setupTable(Connection connection)
|
||||
{
|
||||
final String SQL = "CREATE TABLE IF NOT EXISTS treatment (" +
|
||||
" id INTEGER PRIMARY KEY AUTOINCREMENT, " +
|
||||
" patientId INTEGER NOT NULL, " +
|
||||
" treatment_date TEXT NOT NULL, " +
|
||||
" begin TEXT NOT NULL, " +
|
||||
" end TEXT NOT NULL, " +
|
||||
" description TEXT NOT NULL, " +
|
||||
" remark TEXT NOT NULL," +
|
||||
" FOREIGN KEY (patientId) REFERENCES patient (id) ON DELETE CASCADE " +
|
||||
");";
|
||||
|
||||
try (Statement statement = connection.createStatement())
|
||||
{
|
||||
statement.execute(SQL);
|
||||
} catch (SQLException exception)
|
||||
{
|
||||
System.out.println(exception.getMessage());
|
||||
}
|
||||
public void setupTable(Connection connection) throws SQLException {
|
||||
final InputStream schema = Main.class.getResourceAsStream("/de/hitec/nhplus/treatment/database/Treatment.sql");
|
||||
assert schema != null;
|
||||
final String SQL = new Scanner(schema, StandardCharsets.UTF_8).useDelimiter("\\A").next();
|
||||
connection.createStatement().execute(SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Treatment> load() throws SQLException
|
||||
{
|
||||
public Map<String, Treatment> load() throws SQLException {
|
||||
List<Treatment> treatments = new ArrayList<>();
|
||||
|
||||
Patient seppl = patientsByName.get("Seppl");
|
||||
|
@ -73,7 +47,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
|
||||
treatments.add(new Treatment(
|
||||
1,
|
||||
seppl.getId(),
|
||||
seppl,
|
||||
convertStringToLocalDate("2023-06-03"),
|
||||
convertStringToLocalTime("11:00"),
|
||||
convertStringToLocalTime("15:00"),
|
||||
|
@ -84,7 +58,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
));
|
||||
treatments.add(new Treatment(
|
||||
2,
|
||||
seppl.getId(),
|
||||
seppl,
|
||||
convertStringToLocalDate("2023-06-05"),
|
||||
convertStringToLocalTime("11:00"),
|
||||
convertStringToLocalTime("12:30"),
|
||||
|
@ -95,7 +69,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
));
|
||||
treatments.add(new Treatment(
|
||||
3,
|
||||
martina.getId(),
|
||||
martina,
|
||||
convertStringToLocalDate("2023-06-04"),
|
||||
convertStringToLocalTime("07:30"),
|
||||
convertStringToLocalTime("08:00"),
|
||||
|
@ -104,7 +78,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
));
|
||||
treatments.add(new Treatment(
|
||||
4,
|
||||
seppl.getId(),
|
||||
seppl,
|
||||
convertStringToLocalDate("2023-06-06"),
|
||||
convertStringToLocalTime("15:10"),
|
||||
convertStringToLocalTime("16:00"),
|
||||
|
@ -113,7 +87,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
);
|
||||
treatments.add(new Treatment(
|
||||
8,
|
||||
seppl.getId(),
|
||||
seppl,
|
||||
convertStringToLocalDate("2023-06-08"),
|
||||
convertStringToLocalTime("15:00"),
|
||||
convertStringToLocalTime("16:00"),
|
||||
|
@ -122,7 +96,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
);
|
||||
treatments.add(new Treatment(
|
||||
9,
|
||||
martina.getId(),
|
||||
martina,
|
||||
convertStringToLocalDate("2023-06-07"),
|
||||
convertStringToLocalTime("11:00"),
|
||||
convertStringToLocalTime("11:30"),
|
||||
|
@ -131,7 +105,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
);
|
||||
treatments.add(new Treatment(
|
||||
12,
|
||||
hans.getId(),
|
||||
hans,
|
||||
convertStringToLocalDate("2023-06-08"),
|
||||
convertStringToLocalTime("15:00"),
|
||||
convertStringToLocalTime("15:30"),
|
||||
|
@ -140,7 +114,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
);
|
||||
treatments.add(new Treatment(
|
||||
14,
|
||||
ahmet.getId(),
|
||||
ahmet,
|
||||
convertStringToLocalDate("2023-08-24"),
|
||||
convertStringToLocalTime("09:30"),
|
||||
convertStringToLocalTime("10:15"),
|
||||
|
@ -148,7 +122,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
"Lympfdrainage"));
|
||||
treatments.add(new Treatment(
|
||||
16,
|
||||
elisabeth.getId(),
|
||||
elisabeth,
|
||||
convertStringToLocalDate("2023-08-31"),
|
||||
convertStringToLocalTime("13:30"),
|
||||
convertStringToLocalTime("13:45"),
|
||||
|
@ -157,7 +131,7 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
);
|
||||
treatments.add(new Treatment(
|
||||
17,
|
||||
elisabeth.getId(),
|
||||
elisabeth,
|
||||
convertStringToLocalDate("2023-09-01"),
|
||||
convertStringToLocalTime("16:00"),
|
||||
convertStringToLocalTime("17:00"),
|
||||
|
@ -165,9 +139,9 @@ public class TreatmentFixture implements Fixture<Treatment>
|
|||
"Massage der Extremitäten zur Verbesserung der Durchblutung")
|
||||
);
|
||||
|
||||
TreatmentDao dao = DaoFactory.getDaoFactory().createTreatmentDao();
|
||||
TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao();
|
||||
Map<String, Treatment> treatmentsById = new HashMap<>();
|
||||
for (Treatment treatment : treatments){
|
||||
for (Treatment treatment : treatments) {
|
||||
dao.create(treatment);
|
||||
treatmentsById.put(String.valueOf(treatment.getId()), treatment);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import javafx.scene.layout.AnchorPane;
|
|||
import javafx.scene.layout.BorderPane;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public class MainWindowController {
|
||||
@FXML
|
||||
|
@ -40,7 +41,7 @@ public class MainWindowController {
|
|||
private void loadPatientPage() {
|
||||
try {
|
||||
BorderPane patientsPane = FXMLLoader.load(
|
||||
Main.class.getResource("/de/hitec/nhplus/patient/AllPatientView.fxml")
|
||||
Objects.requireNonNull(Main.class.getResource("/de/hitec/nhplus/patient/AllPatientView.fxml"))
|
||||
);
|
||||
patientPage.getChildren().setAll(patientsPane);
|
||||
AnchorPane.setTopAnchor(patientsPane, 0d);
|
||||
|
@ -55,7 +56,7 @@ public class MainWindowController {
|
|||
private void loadTreatmentsPage() {
|
||||
try {
|
||||
BorderPane treatmentsPane = FXMLLoader.load(
|
||||
Main.class.getResource("/de/hitec/nhplus/treatment/AllTreatmentView.fxml")
|
||||
Objects.requireNonNull(Main.class.getResource("/de/hitec/nhplus/treatment/AllTreatmentView.fxml"))
|
||||
);
|
||||
treatmentPage.getChildren().setAll(treatmentsPane);
|
||||
AnchorPane.setTopAnchor(treatmentsPane, 0d);
|
||||
|
@ -70,7 +71,7 @@ public class MainWindowController {
|
|||
private void loadNursePage() {
|
||||
try {
|
||||
BorderPane nursePane = FXMLLoader.load(
|
||||
Main.class.getResource("/de/hitec/nhplus/nurse/AllNurseView.fxml")
|
||||
Objects.requireNonNull(Main.class.getResource("/de/hitec/nhplus/nurse/AllNurseView.fxml"))
|
||||
);
|
||||
nursePage.getChildren().setAll(nursePane);
|
||||
AnchorPane.setTopAnchor(nursePane, 0d);
|
||||
|
|
|
@ -4,11 +4,11 @@ import javafx.beans.property.SimpleStringProperty;
|
|||
|
||||
public abstract class Person {
|
||||
private final SimpleStringProperty firstName;
|
||||
private final SimpleStringProperty surname;
|
||||
private final SimpleStringProperty surName;
|
||||
|
||||
public Person(String firstName, String surname) {
|
||||
public Person(String firstName, String surName) {
|
||||
this.firstName = new SimpleStringProperty(firstName);
|
||||
this.surname = new SimpleStringProperty(surname);
|
||||
this.surName = new SimpleStringProperty(surName);
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
|
@ -23,15 +23,15 @@ public abstract class Person {
|
|||
this.firstName.set(firstName);
|
||||
}
|
||||
|
||||
public String getSurname() {
|
||||
return surname.get();
|
||||
public String getSurName() {
|
||||
return surName.get();
|
||||
}
|
||||
|
||||
public SimpleStringProperty surnameProperty() {
|
||||
return surname;
|
||||
public SimpleStringProperty surNameProperty() {
|
||||
return surName;
|
||||
}
|
||||
|
||||
public void setSurname(String surname) {
|
||||
this.surname.set(surname);
|
||||
public void setSurName(String surName) {
|
||||
this.surName.set(surName);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package de.hitec.nhplus.nurse;
|
|||
import static de.hitec.nhplus.utils.Validator.*;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.nurse.database.NurseDao;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
|
@ -18,9 +19,9 @@ import java.sql.SQLException;
|
|||
|
||||
public class AllNurseController {
|
||||
@FXML
|
||||
public TextField textFieldSurname;
|
||||
public TextField textFieldSurName;
|
||||
@FXML
|
||||
public TextField textFieldFirstname;
|
||||
public TextField textFieldFirstName;
|
||||
@FXML
|
||||
public TextField textFieldPhoneNumber;
|
||||
@FXML
|
||||
|
@ -32,7 +33,7 @@ public class AllNurseController {
|
|||
@FXML
|
||||
private TableColumn<Nurse, String> columnFirstName;
|
||||
@FXML
|
||||
private TableColumn<Nurse, String> columnSurname;
|
||||
private TableColumn<Nurse, String> columnSurName;
|
||||
@FXML
|
||||
private TableColumn<Nurse, String> columnPhoneNumber;
|
||||
|
||||
|
@ -47,8 +48,8 @@ public class AllNurseController {
|
|||
this.columnFirstName.setCellValueFactory(new PropertyValueFactory<>("firstName"));
|
||||
this.columnFirstName.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
|
||||
this.columnSurname.setCellValueFactory(new PropertyValueFactory<>("surname"));
|
||||
this.columnSurname.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
this.columnSurName.setCellValueFactory(new PropertyValueFactory<>("surName"));
|
||||
this.columnSurName.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
|
||||
|
||||
this.columnPhoneNumber.setCellValueFactory(new PropertyValueFactory<>("phoneNumber"));
|
||||
|
@ -59,21 +60,21 @@ public class AllNurseController {
|
|||
this.buttonAdd.setDisable(true);
|
||||
ChangeListener<String> inputNewNurseValidationListener = (observableValue, oldText, newText)->
|
||||
{
|
||||
boolean isValid = isValidFirstName(this.textFieldFirstname.getText())
|
||||
&& isValidSurName(this.textFieldSurname.getText())
|
||||
boolean isValid = isValidFirstName(this.textFieldFirstName.getText())
|
||||
&& isValidSurName(this.textFieldSurName.getText())
|
||||
&& isValidPhoneNumber(this.textFieldPhoneNumber.getText());
|
||||
|
||||
AllNurseController.this.buttonAdd.setDisable(!isValid);
|
||||
};
|
||||
|
||||
this.textFieldFirstname.textProperty().addListener(inputNewNurseValidationListener);
|
||||
this.textFieldSurname.textProperty().addListener(inputNewNurseValidationListener);
|
||||
this.textFieldFirstName.textProperty().addListener(inputNewNurseValidationListener);
|
||||
this.textFieldSurName.textProperty().addListener(inputNewNurseValidationListener);
|
||||
this.textFieldPhoneNumber.textProperty().addListener(inputNewNurseValidationListener);
|
||||
}
|
||||
|
||||
private void readAllAndShowInTableView(){
|
||||
this.nurses.clear();
|
||||
this.dao = DaoFactory.getDaoFactory().createNurseDAO();
|
||||
this.dao = DaoFactory.getInstance().createNurseDAO();
|
||||
try {
|
||||
this.nurses.addAll(this.dao.readAll());
|
||||
}catch (SQLException exception){
|
||||
|
@ -82,8 +83,8 @@ public class AllNurseController {
|
|||
}
|
||||
@FXML
|
||||
public void handleAdd(){
|
||||
String surname=this.textFieldSurname.getText();
|
||||
String firstName=this.textFieldFirstname.getText();
|
||||
String surname=this.textFieldSurName.getText();
|
||||
String firstName=this.textFieldFirstName.getText();
|
||||
String phoneNumber=this.textFieldPhoneNumber.getText();
|
||||
try {
|
||||
this.dao.create(new Nurse(firstName, surname, phoneNumber));
|
||||
|
@ -96,8 +97,8 @@ public class AllNurseController {
|
|||
}
|
||||
|
||||
private void clearTextfields() {
|
||||
this.textFieldFirstname.clear();
|
||||
this.textFieldSurname.clear();
|
||||
this.textFieldFirstName.clear();
|
||||
this.textFieldSurName.clear();
|
||||
this.textFieldPhoneNumber.clear();
|
||||
}
|
||||
|
||||
|
|
|
@ -12,20 +12,20 @@ public class Nurse extends Person {
|
|||
|
||||
public Nurse(
|
||||
String firstName,
|
||||
String surname,
|
||||
String surName,
|
||||
String phoneNumber
|
||||
) {
|
||||
super(firstName, surname);
|
||||
super(firstName, surName);
|
||||
this.phoneNumber = new SimpleStringProperty(phoneNumber);
|
||||
}
|
||||
|
||||
public Nurse(
|
||||
int id,
|
||||
String firstName,
|
||||
String surname,
|
||||
String surName,
|
||||
String phoneNumber
|
||||
) {
|
||||
super(firstName, surname);
|
||||
super(firstName, surName);
|
||||
this.id = new SimpleIntegerProperty(id);
|
||||
this.phoneNumber = new SimpleStringProperty(phoneNumber);
|
||||
}
|
||||
|
@ -55,8 +55,8 @@ public class Nurse extends Person {
|
|||
return new StringJoiner(System.lineSeparator())
|
||||
.add("NURSE")
|
||||
.add("ID: " + this.getId())
|
||||
.add("Firstname: " + this.getFirstName())
|
||||
.add("Surname: " + this.getSurname())
|
||||
.add("FirstName: " + this.getFirstName())
|
||||
.add("SurName: " + this.getSurName())
|
||||
.add("PhoneNumber: " + this.getPhoneNumber())
|
||||
.toString();
|
||||
|
||||
|
|
|
@ -1,115 +0,0 @@
|
|||
package de.hitec.nhplus.nurse;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoImp;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class NurseDao extends DaoImp<Nurse> {
|
||||
public NurseDao(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getCreateStatement(Nurse nurse) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "INSERT INTO nurse (firstname, surname, phoneNumber)" +
|
||||
"VALUES (?, ?, ?)";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setString(1, nurse.getFirstName());
|
||||
preparedStatement.setString(2, nurse.getSurname());
|
||||
preparedStatement.setString(3, nurse.getPhoneNumber());
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadByIDStatement(int id) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "SELECT * FROM nurse WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, id);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Nurse getInstanceFromResultSet(ResultSet result) throws SQLException {
|
||||
return new Nurse(
|
||||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
result.getString(4)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadAllStatement() {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
final String SQL = "SELECT * FROM nurse";
|
||||
statement = this.connection.prepareStatement(SQL);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ArrayList<Nurse> getListFromResultSet(ResultSet result) throws SQLException {
|
||||
ArrayList<Nurse> list = new ArrayList<>();
|
||||
while (result.next()) {
|
||||
list.add(new Nurse(
|
||||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
result.getString(4)
|
||||
));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getUpdateStatement(Nurse nurse) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL =
|
||||
"UPDATE nurse SET " +
|
||||
"firstname = ?, " +
|
||||
"surname = ?, " +
|
||||
"phoneNumber = ?, " +
|
||||
"WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setString(1, nurse.getFirstName());
|
||||
preparedStatement.setString(2, nurse.getSurname());
|
||||
preparedStatement.setString(3, nurse.getPhoneNumber());
|
||||
preparedStatement.setInt(4, nurse.getId());
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getDeleteStatement(int id) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "DELETE FROM nurse WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, id);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
}
|
89
src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java
Normal file
89
src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java
Normal file
|
@ -0,0 +1,89 @@
|
|||
package de.hitec.nhplus.nurse.database;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoImp;
|
||||
import de.hitec.nhplus.nurse.Nurse;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class NurseDao extends DaoImp<Nurse> {
|
||||
public NurseDao(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getCreateStatement(Nurse nurse) throws SQLException {
|
||||
final String SQL = """
|
||||
INSERT INTO nurse
|
||||
(firstName, surName, phoneNumber)
|
||||
VALUES (?, ?, ?)
|
||||
""";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setString(1, nurse.getFirstName());
|
||||
statement.setString(2, nurse.getSurName());
|
||||
statement.setString(3, nurse.getPhoneNumber());
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadByIDStatement(int id) throws SQLException {
|
||||
final String SQL = "SELECT * FROM nurse WHERE id = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, id);
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Nurse getInstanceFromResultSet(ResultSet result) throws SQLException {
|
||||
return new Nurse(
|
||||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
result.getString(4)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadAllStatement() throws SQLException {
|
||||
final String SQL = "SELECT * FROM nurse";
|
||||
return this.connection.prepareStatement(SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Nurse> getListFromResultSet(ResultSet result) throws SQLException {
|
||||
ArrayList<Nurse> list = new ArrayList<>();
|
||||
while (result.next()) {
|
||||
list.add(getInstanceFromResultSet(result));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getUpdateStatement(Nurse nurse) throws SQLException {
|
||||
final String SQL = """
|
||||
UPDATE nurse SET
|
||||
firstName = ?,
|
||||
surName = ?,
|
||||
phoneNumber = ?
|
||||
WHERE id = ?
|
||||
""";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setString(1, nurse.getFirstName());
|
||||
statement.setString(2, nurse.getSurName());
|
||||
statement.setString(3, nurse.getPhoneNumber());
|
||||
statement.setInt(4, nurse.getId());
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getDeleteStatement(int id) throws SQLException {
|
||||
final String SQL = "DELETE FROM nurse WHERE id = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, id);
|
||||
return statement;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package de.hitec.nhplus.patient;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.patient.database.PatientDao;
|
||||
import de.hitec.nhplus.utils.DateConverter;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.collections.FXCollections;
|
||||
|
@ -27,7 +28,7 @@ public class AllPatientController {
|
|||
@FXML
|
||||
private TableColumn<Patient, String> columnFirstName;
|
||||
@FXML
|
||||
private TableColumn<Patient, String> columnSurname;
|
||||
private TableColumn<Patient, String> columnSurName;
|
||||
@FXML
|
||||
private TableColumn<Patient, String> columnDateOfBirth;
|
||||
@FXML
|
||||
|
@ -39,7 +40,7 @@ public class AllPatientController {
|
|||
@FXML
|
||||
private Button buttonAdd;
|
||||
@FXML
|
||||
private TextField textFieldSurname;
|
||||
private TextField textFieldSurName;
|
||||
@FXML
|
||||
private TextField textFieldFirstName;
|
||||
@FXML
|
||||
|
@ -60,8 +61,8 @@ public class AllPatientController {
|
|||
this.columnFirstName.setCellValueFactory(new PropertyValueFactory<>("firstName"));
|
||||
this.columnFirstName.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
|
||||
this.columnSurname.setCellValueFactory(new PropertyValueFactory<>("surname"));
|
||||
this.columnSurname.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
this.columnSurName.setCellValueFactory(new PropertyValueFactory<>("surName"));
|
||||
this.columnSurName.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
|
||||
this.columnDateOfBirth.setCellValueFactory(new PropertyValueFactory<>("dateOfBirth"));
|
||||
this.columnDateOfBirth.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
|
@ -88,7 +89,7 @@ public class AllPatientController {
|
|||
{
|
||||
boolean isValid = isValidDate(this.textFieldDateOfBirth.getText())
|
||||
&& isValidFirstName(this.textFieldFirstName.getText())
|
||||
&& isValidSurName(this.textFieldSurname.getText())
|
||||
&& isValidSurName(this.textFieldSurName.getText())
|
||||
&& isValidDate(this.textFieldDateOfBirth.getText())
|
||||
&& isValidCareLevel(this.textFieldCareLevel.getText())
|
||||
&& isValidRoomNumber(textFieldRoomNumber.getText());
|
||||
|
@ -96,7 +97,7 @@ public class AllPatientController {
|
|||
AllPatientController.this.buttonAdd.setDisable(!isValid);
|
||||
};
|
||||
|
||||
this.textFieldSurname.textProperty().addListener(inputNewPatientValidationListener);
|
||||
this.textFieldSurName.textProperty().addListener(inputNewPatientValidationListener);
|
||||
this.textFieldFirstName.textProperty().addListener(inputNewPatientValidationListener);
|
||||
this.textFieldDateOfBirth.textProperty().addListener(inputNewPatientValidationListener);
|
||||
this.textFieldCareLevel.textProperty().addListener(inputNewPatientValidationListener);
|
||||
|
@ -123,7 +124,7 @@ public class AllPatientController {
|
|||
event.getTableView().refresh();
|
||||
return;
|
||||
}
|
||||
event.getRowValue().setSurname(newSurName);
|
||||
event.getRowValue().setSurName(newSurName);
|
||||
this.doUpdate(event);
|
||||
}
|
||||
|
||||
|
@ -174,7 +175,7 @@ public class AllPatientController {
|
|||
|
||||
private void readAllAndShowInTableView() {
|
||||
this.patients.clear();
|
||||
this.dao = DaoFactory.getDaoFactory().createPatientDAO();
|
||||
this.dao = DaoFactory.getInstance().createPatientDAO();
|
||||
try {
|
||||
this.patients.addAll(this.dao.readAll());
|
||||
} catch (SQLException exception) {
|
||||
|
@ -187,7 +188,7 @@ public class AllPatientController {
|
|||
Patient selectedItem = this.tableView.getSelectionModel().getSelectedItem();
|
||||
if (selectedItem != null) {
|
||||
try {
|
||||
DaoFactory.getDaoFactory().createPatientDAO().deleteById(selectedItem.getId());
|
||||
DaoFactory.getInstance().createPatientDAO().delete(selectedItem.getId());
|
||||
this.tableView.getItems().remove(selectedItem);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
|
@ -197,7 +198,7 @@ public class AllPatientController {
|
|||
|
||||
@FXML
|
||||
public void handleAdd() {
|
||||
String surname = this.textFieldSurname.getText();
|
||||
String surname = this.textFieldSurName.getText();
|
||||
String firstName = this.textFieldFirstName.getText();
|
||||
String birthday = this.textFieldDateOfBirth.getText();
|
||||
LocalDate date = DateConverter.convertStringToLocalDate(birthday);
|
||||
|
@ -214,7 +215,7 @@ public class AllPatientController {
|
|||
|
||||
private void clearTextfields() {
|
||||
this.textFieldFirstName.clear();
|
||||
this.textFieldSurname.clear();
|
||||
this.textFieldSurName.clear();
|
||||
this.textFieldDateOfBirth.clear();
|
||||
this.textFieldCareLevel.clear();
|
||||
this.textFieldRoomNumber.clear();
|
||||
|
|
|
@ -20,12 +20,12 @@ public class Patient extends Person {
|
|||
|
||||
public Patient(
|
||||
String firstName,
|
||||
String surname,
|
||||
String surName,
|
||||
LocalDate dateOfBirth,
|
||||
String careLevel,
|
||||
String roomNumber
|
||||
) {
|
||||
super(firstName, surname);
|
||||
super(firstName, surName);
|
||||
this.dateOfBirth = new SimpleStringProperty(DateConverter.convertLocalDateToString(dateOfBirth));
|
||||
this.careLevel = new SimpleStringProperty(careLevel);
|
||||
this.roomNumber = new SimpleStringProperty(roomNumber);
|
||||
|
@ -34,12 +34,12 @@ public class Patient extends Person {
|
|||
public Patient(
|
||||
int id,
|
||||
String firstName,
|
||||
String surname,
|
||||
String surName,
|
||||
LocalDate dateOfBirth,
|
||||
String careLevel,
|
||||
String roomNumber
|
||||
) {
|
||||
super(firstName, surname);
|
||||
super(firstName, surName);
|
||||
this.id = new SimpleIntegerProperty(id);
|
||||
this.dateOfBirth = new SimpleStringProperty(DateConverter.convertLocalDateToString(dateOfBirth));
|
||||
this.careLevel = new SimpleStringProperty(careLevel);
|
||||
|
@ -103,8 +103,8 @@ public class Patient extends Person {
|
|||
return new StringJoiner(System.lineSeparator())
|
||||
.add("PATIENT")
|
||||
.add("ID: " + this.getId())
|
||||
.add("Firstname: " + this.getFirstName())
|
||||
.add("Surname: " + this.getSurname())
|
||||
.add("FirstName: " + this.getFirstName())
|
||||
.add("SurName: " + this.getSurName())
|
||||
.add("Birthday: " + this.getDateOfBirth())
|
||||
.add("Carelevel: " + this.getCareLevel())
|
||||
.add("RoomNumber: " + this.getRoomNumber())
|
||||
|
|
|
@ -1,125 +0,0 @@
|
|||
package de.hitec.nhplus.patient;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoImp;
|
||||
import de.hitec.nhplus.utils.DateConverter;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class PatientDao extends DaoImp<Patient> {
|
||||
|
||||
public PatientDao(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getCreateStatement(Patient patient) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "INSERT INTO patient (firstname, surname, dateOfBirth, carelevel, roomnumber) " +
|
||||
"VALUES (?, ?, ?, ?, ?)";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setString(1, patient.getFirstName());
|
||||
preparedStatement.setString(2, patient.getSurname());
|
||||
preparedStatement.setString(3, patient.getDateOfBirth());
|
||||
preparedStatement.setString(4, patient.getCareLevel());
|
||||
preparedStatement.setString(5, patient.getRoomNumber());
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadByIDStatement(int id) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "SELECT * FROM patient WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, id);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Patient getInstanceFromResultSet(ResultSet result) throws SQLException {
|
||||
return new Patient(
|
||||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
DateConverter.convertStringToLocalDate(result.getString(4)),
|
||||
result.getString(5),
|
||||
result.getString(6));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadAllStatement() {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
final String SQL = "SELECT * FROM patient";
|
||||
statement = this.connection.prepareStatement(SQL);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ArrayList<Patient> getListFromResultSet(ResultSet result) throws SQLException {
|
||||
ArrayList<Patient> list = new ArrayList<>();
|
||||
while (result.next()) {
|
||||
Patient patient = new Patient(
|
||||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
DateConverter.convertStringToLocalDate(result.getString(4)),
|
||||
result.getString(5),
|
||||
result.getString(6));
|
||||
list.add(patient);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getUpdateStatement(Patient patient) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL =
|
||||
"UPDATE patient SET " +
|
||||
"firstname = ?, " +
|
||||
"surname = ?, " +
|
||||
"dateOfBirth = ?, " +
|
||||
"carelevel = ?, " +
|
||||
"roomnumber = ?, " +
|
||||
"WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setString(1, patient.getFirstName());
|
||||
preparedStatement.setString(2, patient.getSurname());
|
||||
preparedStatement.setString(3, patient.getDateOfBirth());
|
||||
preparedStatement.setString(4, patient.getCareLevel());
|
||||
preparedStatement.setString(5, patient.getRoomNumber());
|
||||
preparedStatement.setInt(6, patient.getId());
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getDeleteStatement(int id) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "DELETE FROM patient WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, id);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
package de.hitec.nhplus.patient.database;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoImp;
|
||||
import de.hitec.nhplus.patient.Patient;
|
||||
import de.hitec.nhplus.utils.DateConverter;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PatientDao extends DaoImp<Patient> {
|
||||
|
||||
public PatientDao(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getCreateStatement(Patient patient) throws SQLException {
|
||||
final String SQL = """
|
||||
INSERT INTO patient
|
||||
(firstName, surName, dateOfBirth, careLevel, roomNumber)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
""";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setString(1, patient.getFirstName());
|
||||
statement.setString(2, patient.getSurName());
|
||||
statement.setString(3, patient.getDateOfBirth());
|
||||
statement.setString(4, patient.getCareLevel());
|
||||
statement.setString(5, patient.getRoomNumber());
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadByIDStatement(int id) throws SQLException {
|
||||
final String SQL = "SELECT * FROM patient WHERE id = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, id);
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Patient getInstanceFromResultSet(ResultSet result) throws SQLException {
|
||||
return new Patient(
|
||||
result.getInt(1),
|
||||
result.getString(2),
|
||||
result.getString(3),
|
||||
DateConverter.convertStringToLocalDate(result.getString(4)),
|
||||
result.getString(5),
|
||||
result.getString(6));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadAllStatement() throws SQLException {
|
||||
final String SQL = "SELECT * FROM patient";
|
||||
return this.connection.prepareStatement(SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Patient> getListFromResultSet(ResultSet result) throws SQLException {
|
||||
ArrayList<Patient> list = new ArrayList<>();
|
||||
while (result.next()) {
|
||||
list.add(getInstanceFromResultSet(result));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getUpdateStatement(Patient patient) throws SQLException {
|
||||
final String SQL = """
|
||||
UPDATE patient SET
|
||||
firstName = ?,
|
||||
surName = ?,
|
||||
dateOfBirth = ?,
|
||||
careLevel = ?,
|
||||
roomNumber = ?,
|
||||
WHERE id = ?
|
||||
""";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setString(1, patient.getFirstName());
|
||||
statement.setString(2, patient.getSurName());
|
||||
statement.setString(3, patient.getDateOfBirth());
|
||||
statement.setString(4, patient.getCareLevel());
|
||||
statement.setString(5, patient.getRoomNumber());
|
||||
statement.setInt(6, patient.getId());
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getDeleteStatement(int id) throws SQLException {
|
||||
final String SQL = "DELETE FROM patient WHERE id = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, id);
|
||||
return statement;
|
||||
}
|
||||
}
|
|
@ -3,7 +3,9 @@ package de.hitec.nhplus.treatment;
|
|||
import de.hitec.nhplus.Main;
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.patient.Patient;
|
||||
import de.hitec.nhplus.patient.PatientDao;
|
||||
import de.hitec.nhplus.patient.database.PatientDao;
|
||||
import de.hitec.nhplus.treatment.database.TreatmentDao;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
|
@ -27,7 +29,7 @@ public class AllTreatmentController {
|
|||
private TableColumn<Treatment, Integer> columnId;
|
||||
|
||||
@FXML
|
||||
private TableColumn<Treatment, Integer> columnPatientId;
|
||||
private TableColumn<Treatment, String> columnPatientName;
|
||||
|
||||
@FXML
|
||||
private TableColumn<Treatment, String> columnDate;
|
||||
|
@ -58,7 +60,12 @@ public class AllTreatmentController {
|
|||
comboBoxPatientSelection.getSelectionModel().select(0);
|
||||
|
||||
this.columnId.setCellValueFactory(new PropertyValueFactory<>("id"));
|
||||
this.columnPatientId.setCellValueFactory(new PropertyValueFactory<>("patientId"));
|
||||
this.columnPatientName.setCellValueFactory(
|
||||
cellData -> {
|
||||
Patient patient = cellData.getValue().getPatient();
|
||||
return new SimpleStringProperty(patient.getSurName() + ", " + patient.getFirstName());
|
||||
}
|
||||
);
|
||||
this.columnDate.setCellValueFactory(new PropertyValueFactory<>("date"));
|
||||
this.columnBegin.setCellValueFactory(new PropertyValueFactory<>("begin"));
|
||||
this.columnEnd.setCellValueFactory(new PropertyValueFactory<>("end"));
|
||||
|
@ -78,7 +85,7 @@ public class AllTreatmentController {
|
|||
|
||||
public void readAllAndShowInTableView() {
|
||||
comboBoxPatientSelection.getSelectionModel().select(0);
|
||||
this.dao = DaoFactory.getDaoFactory().createTreatmentDao();
|
||||
this.dao = DaoFactory.getInstance().createTreatmentDao();
|
||||
try {
|
||||
this.treatments.setAll(dao.readAll());
|
||||
} catch (SQLException exception) {
|
||||
|
@ -87,12 +94,12 @@ public class AllTreatmentController {
|
|||
}
|
||||
|
||||
private void createComboBoxData() {
|
||||
PatientDao dao = DaoFactory.getDaoFactory().createPatientDAO();
|
||||
PatientDao dao = DaoFactory.getInstance().createPatientDAO();
|
||||
try {
|
||||
patientList = (ArrayList<Patient>) dao.readAll();
|
||||
this.patientSelection.add("alle");
|
||||
for (Patient patient : patientList) {
|
||||
this.patientSelection.add(patient.getSurname());
|
||||
this.patientSelection.add(patient.getSurName());
|
||||
}
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
|
@ -104,7 +111,7 @@ public class AllTreatmentController {
|
|||
public void handleComboBox() {
|
||||
String selectedPatient = this.comboBoxPatientSelection.getSelectionModel().getSelectedItem();
|
||||
this.treatments.clear();
|
||||
this.dao = DaoFactory.getDaoFactory().createTreatmentDao();
|
||||
this.dao = DaoFactory.getInstance().createTreatmentDao();
|
||||
|
||||
if (selectedPatient.equals("alle")) {
|
||||
try {
|
||||
|
@ -126,7 +133,7 @@ public class AllTreatmentController {
|
|||
|
||||
private Patient searchInList(String surname) {
|
||||
for (Patient patient : this.patientList) {
|
||||
if (patient.getSurname().equals(surname)) {
|
||||
if (patient.getSurName().equals(surname)) {
|
||||
return patient;
|
||||
}
|
||||
}
|
||||
|
@ -137,9 +144,9 @@ public class AllTreatmentController {
|
|||
public void handleDelete() {
|
||||
int index = this.tableView.getSelectionModel().getSelectedIndex();
|
||||
Treatment t = this.treatments.remove(index);
|
||||
TreatmentDao dao = DaoFactory.getDaoFactory().createTreatmentDao();
|
||||
TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao();
|
||||
try {
|
||||
dao.deleteById(t.getId());
|
||||
dao.delete(t.getId());
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
|
@ -209,12 +216,12 @@ public class AllTreatmentController {
|
|||
Stage stage = new Stage();
|
||||
|
||||
TreatmentModalController controller = loader.getController();
|
||||
PatientDao pDao = DaoFactory.getDaoFactory().createPatientDAO();
|
||||
PatientDao pDao = DaoFactory.getInstance().createPatientDAO();
|
||||
controller.initialize(
|
||||
this,
|
||||
stage,
|
||||
treatment,
|
||||
pDao.read(treatment.getPatientId())
|
||||
pDao.read(treatment.getPatient().getId())
|
||||
);
|
||||
|
||||
stage.setScene(scene);
|
||||
|
@ -228,7 +235,7 @@ public class AllTreatmentController {
|
|||
}
|
||||
|
||||
public void createTreatment(Treatment treatment) {
|
||||
TreatmentDao dao = DaoFactory.getDaoFactory().createTreatmentDao();
|
||||
TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao();
|
||||
try {
|
||||
dao.create(treatment);
|
||||
} catch (SQLException exception) {
|
||||
|
@ -237,7 +244,7 @@ public class AllTreatmentController {
|
|||
}
|
||||
|
||||
public void updateTreatment(Treatment treatment) {
|
||||
TreatmentDao dao = DaoFactory.getDaoFactory().createTreatmentDao();
|
||||
TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao();
|
||||
try {
|
||||
dao.update(treatment);
|
||||
} catch (SQLException exception) {
|
||||
|
|
|
@ -1,94 +1,122 @@
|
|||
package de.hitec.nhplus.treatment;
|
||||
|
||||
import de.hitec.nhplus.patient.Patient;
|
||||
import de.hitec.nhplus.utils.DateConverter;
|
||||
import javafx.beans.property.SimpleIntegerProperty;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
public class Treatment {
|
||||
private int id;
|
||||
private final int patientId;
|
||||
private LocalDate date;
|
||||
private LocalTime begin;
|
||||
private LocalTime end;
|
||||
private String description;
|
||||
private String remarks;
|
||||
private SimpleIntegerProperty id;
|
||||
private final SimpleObjectProperty<Patient> patient;
|
||||
private final SimpleObjectProperty<LocalDate> date;
|
||||
private final SimpleObjectProperty<LocalTime> begin;
|
||||
private final SimpleObjectProperty<LocalTime> end;
|
||||
private final SimpleStringProperty description;
|
||||
private final SimpleStringProperty remarks;
|
||||
|
||||
public Treatment(int patientId, LocalDate date, LocalTime begin,
|
||||
public Treatment(Patient patient, LocalDate date, LocalTime begin,
|
||||
LocalTime end, String description, String remarks) {
|
||||
this.patientId = patientId;
|
||||
this.date = date;
|
||||
this.begin = begin;
|
||||
this.end = end;
|
||||
this.description = description;
|
||||
this.remarks = remarks;
|
||||
this.patient = new SimpleObjectProperty<>(patient);
|
||||
this.date = new SimpleObjectProperty<>(date);
|
||||
this.begin = new SimpleObjectProperty<>(begin);
|
||||
this.end = new SimpleObjectProperty<>(end);
|
||||
this.description = new SimpleStringProperty(description);
|
||||
this.remarks = new SimpleStringProperty(remarks);
|
||||
}
|
||||
|
||||
public Treatment(int id, int patientId, LocalDate date, LocalTime begin,
|
||||
public Treatment(int id, Patient patient, LocalDate date, LocalTime begin,
|
||||
LocalTime end, String description, String remarks) {
|
||||
this.id = id;
|
||||
this.patientId = patientId;
|
||||
this.date = date;
|
||||
this.begin = begin;
|
||||
this.end = end;
|
||||
this.description = description;
|
||||
this.remarks = remarks;
|
||||
this.id = new SimpleIntegerProperty(id);
|
||||
this.patient = new SimpleObjectProperty<>(patient);
|
||||
this.date = new SimpleObjectProperty<>(date);
|
||||
this.begin = new SimpleObjectProperty<>(begin);
|
||||
this.end = new SimpleObjectProperty<>(end);
|
||||
this.description = new SimpleStringProperty(description);
|
||||
this.remarks = new SimpleStringProperty(remarks);
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
return id.getValue();
|
||||
}
|
||||
|
||||
public int getPatientId() {
|
||||
return this.patientId;
|
||||
public Patient getPatient() {
|
||||
return patient.getValue();
|
||||
}
|
||||
|
||||
public String getDate() {
|
||||
return date.toString();
|
||||
return date.getValue().toString();
|
||||
}
|
||||
|
||||
public String getBegin() {
|
||||
return begin.toString();
|
||||
return begin.getValue().toString();
|
||||
}
|
||||
|
||||
public String getEnd() {
|
||||
return end.toString();
|
||||
return end.getValue().toString();
|
||||
}
|
||||
|
||||
public void setDate(String date) {
|
||||
this.date = DateConverter.convertStringToLocalDate(date);
|
||||
this.date.set(DateConverter.convertStringToLocalDate(date));
|
||||
}
|
||||
|
||||
public void setBegin(LocalTime begin) {
|
||||
this.begin = begin;
|
||||
this.begin.set(begin);
|
||||
}
|
||||
|
||||
public void setEnd(LocalTime end) {
|
||||
this.end = end;
|
||||
this.end.set(end);
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
return description.getValue();
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
this.description.set(description);
|
||||
}
|
||||
|
||||
public String getRemarks() {
|
||||
return remarks.getValue();
|
||||
}
|
||||
|
||||
public SimpleObjectProperty<Patient> patientProperty() {
|
||||
return patient;
|
||||
}
|
||||
|
||||
public SimpleObjectProperty<LocalDate> dateProperty() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public SimpleObjectProperty<LocalTime> beginProperty() {
|
||||
return begin;
|
||||
}
|
||||
|
||||
public SimpleObjectProperty<LocalTime> endProperty() {
|
||||
return end;
|
||||
}
|
||||
|
||||
public SimpleStringProperty descriptionProperty() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public SimpleStringProperty remarksProperty() {
|
||||
return remarks;
|
||||
}
|
||||
|
||||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
this.remarks.set(remarks);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return new StringJoiner(System.lineSeparator())
|
||||
.add("TREATMENT")
|
||||
.add("ID: " + this.getId())
|
||||
.add("PatientID: " + this.getPatientId())
|
||||
.add("Patient: " + this.getPatient().getSurName() + ", " + this.getPatient().getFirstName())
|
||||
.add("Date: " + this.getDate())
|
||||
.add("Begin: " + this.getBegin())
|
||||
.add("End: " + this.getEnd())
|
||||
|
|
|
@ -1,151 +0,0 @@
|
|||
package de.hitec.nhplus.treatment;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoImp;
|
||||
import de.hitec.nhplus.utils.DateConverter;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TreatmentDao extends DaoImp<Treatment> {
|
||||
|
||||
public TreatmentDao(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getCreateStatement(Treatment treatment) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "INSERT INTO treatment (patientId, treatment_date, begin, end, description, remark) " +
|
||||
"VALUES (?, ?, ?, ?, ?, ?)";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, treatment.getPatientId());
|
||||
preparedStatement.setString(2, treatment.getDate());
|
||||
preparedStatement.setString(3, treatment.getBegin());
|
||||
preparedStatement.setString(4, treatment.getEnd());
|
||||
preparedStatement.setString(5, treatment.getDescription());
|
||||
preparedStatement.setString(6, treatment.getRemarks());
|
||||
} 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 Treatment getInstanceFromResultSet(ResultSet result) throws SQLException {
|
||||
return new Treatment(
|
||||
result.getInt(1),
|
||||
result.getInt(2),
|
||||
DateConverter.convertStringToLocalDate(result.getString(3)),
|
||||
DateConverter.convertStringToLocalTime(result.getString(4)),
|
||||
DateConverter.convertStringToLocalTime(result.getString(5)),
|
||||
result.getString(6),
|
||||
result.getString(7)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadAllStatement() {
|
||||
PreparedStatement statement = null;
|
||||
try {
|
||||
final String SQL = "SELECT * FROM treatment";
|
||||
statement = this.connection.prepareStatement(SQL);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ArrayList<Treatment> getListFromResultSet(ResultSet result) throws SQLException {
|
||||
ArrayList<Treatment> list = new ArrayList<>();
|
||||
while (result.next()) {
|
||||
Treatment treatment = new Treatment(
|
||||
result.getInt(1),
|
||||
result.getInt(2),
|
||||
DateConverter.convertStringToLocalDate(result.getString(3)),
|
||||
DateConverter.convertStringToLocalTime(result.getString(4)),
|
||||
DateConverter.convertStringToLocalTime(result.getString(5)),
|
||||
result.getString(6),
|
||||
result.getString(7)
|
||||
);
|
||||
list.add(treatment);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private PreparedStatement getReadAllTreatmentsOfOnePatientByPid(int patientId) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL = "SELECT * FROM treatment WHERE patientId = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, patientId);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
public List<Treatment> readTreatmentsByPid(int patientId) throws SQLException {
|
||||
ResultSet result = getReadAllTreatmentsOfOnePatientByPid(patientId).executeQuery();
|
||||
return getListFromResultSet(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getUpdateStatement(Treatment treatment) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL =
|
||||
"UPDATE treatment SET " +
|
||||
"patientId = ?, " +
|
||||
"treatment_date = ?, " +
|
||||
"begin = ?, " +
|
||||
"end = ?, " +
|
||||
"description = ?, " +
|
||||
"remark = ? " +
|
||||
"WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, treatment.getPatientId());
|
||||
preparedStatement.setString(2, treatment.getDate());
|
||||
preparedStatement.setString(3, treatment.getBegin());
|
||||
preparedStatement.setString(4, treatment.getEnd());
|
||||
preparedStatement.setString(5, treatment.getDescription());
|
||||
preparedStatement.setString(6, treatment.getRemarks());
|
||||
preparedStatement.setInt(7, treatment.getId());
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getDeleteStatement(int id) {
|
||||
PreparedStatement preparedStatement = null;
|
||||
try {
|
||||
final String SQL =
|
||||
"DELETE FROM treatment WHERE id = ?";
|
||||
preparedStatement = this.connection.prepareStatement(SQL);
|
||||
preparedStatement.setInt(1, id);
|
||||
} catch (SQLException exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
return preparedStatement;
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@ public class TreatmentModalController {
|
|||
@FXML
|
||||
private Label labelFirstName;
|
||||
@FXML
|
||||
private Label labelSurname;
|
||||
private Label labelSurName;
|
||||
@FXML
|
||||
private TextField textFieldBegin;
|
||||
@FXML
|
||||
|
@ -44,7 +44,7 @@ public class TreatmentModalController {
|
|||
isNewTreatment = true;
|
||||
LocalTime currentTime = LocalTime.now();
|
||||
this.treatment = new Treatment(
|
||||
patient.getId(),
|
||||
patient,
|
||||
LocalDate.now(),
|
||||
LocalTime.of(currentTime.getHour(), currentTime.getMinute()),
|
||||
LocalTime.of(currentTime.getHour(), currentTime.getMinute()),
|
||||
|
@ -99,7 +99,7 @@ public class TreatmentModalController {
|
|||
|
||||
private void showData() {
|
||||
this.labelFirstName.setText(patient.getFirstName());
|
||||
this.labelSurname.setText(patient.getSurname());
|
||||
this.labelSurName.setText(patient.getSurName());
|
||||
LocalDate date = DateConverter.convertStringToLocalDate(treatment.getDate());
|
||||
this.datePicker.setValue(date);
|
||||
this.textFieldBegin.setText(this.treatment.getBegin());
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
package de.hitec.nhplus.treatment.database;
|
||||
|
||||
import de.hitec.nhplus.datastorage.DaoFactory;
|
||||
import de.hitec.nhplus.datastorage.DaoImp;
|
||||
import de.hitec.nhplus.treatment.Treatment;
|
||||
import de.hitec.nhplus.utils.DateConverter;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TreatmentDao extends DaoImp<Treatment> {
|
||||
|
||||
public TreatmentDao(Connection connection) {
|
||||
super(connection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getCreateStatement(Treatment treatment) throws SQLException {
|
||||
final String SQL = """
|
||||
INSERT INTO treatment
|
||||
(patientId, date, begin, end, description, remark)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
""";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, treatment.getPatient().getId());
|
||||
statement.setString(2, treatment.getDate());
|
||||
statement.setString(3, treatment.getBegin());
|
||||
statement.setString(4, treatment.getEnd());
|
||||
statement.setString(5, treatment.getDescription());
|
||||
statement.setString(6, treatment.getRemarks());
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadByIDStatement(int id) throws SQLException {
|
||||
final String SQL = "SELECT * FROM treatment WHERE id = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, id);
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Treatment getInstanceFromResultSet(ResultSet result) throws SQLException {
|
||||
return new Treatment(
|
||||
result.getInt(1),
|
||||
DaoFactory.getInstance().createPatientDAO().read(result.getInt(2)),
|
||||
DateConverter.convertStringToLocalDate(result.getString(3)),
|
||||
DateConverter.convertStringToLocalTime(result.getString(4)),
|
||||
DateConverter.convertStringToLocalTime(result.getString(5)),
|
||||
result.getString(6),
|
||||
result.getString(7)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getReadAllStatement() throws SQLException {
|
||||
final String SQL = "SELECT * FROM treatment";
|
||||
return this.connection.prepareStatement(SQL);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Treatment> getListFromResultSet(ResultSet result) throws SQLException {
|
||||
ArrayList<Treatment> list = new ArrayList<>();
|
||||
while (result.next()) {
|
||||
list.add(getInstanceFromResultSet(result));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private PreparedStatement getReadAllTreatmentsOfOnePatientByPid(int patientId) throws SQLException {
|
||||
final String SQL = "SELECT * FROM treatment WHERE patientId = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, patientId);
|
||||
return statement;
|
||||
}
|
||||
|
||||
public List<Treatment> readTreatmentsByPid(int patientId) throws SQLException {
|
||||
ResultSet result = getReadAllTreatmentsOfOnePatientByPid(patientId).executeQuery();
|
||||
return getListFromResultSet(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getUpdateStatement(Treatment treatment) throws SQLException {
|
||||
final String SQL = """
|
||||
UPDATE treatment SET
|
||||
patientId = ?,
|
||||
date = ?,
|
||||
begin = ?,
|
||||
end = ?,
|
||||
description = ?,
|
||||
remark = ?
|
||||
WHERE id = ?
|
||||
""";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, treatment.getPatient().getId());
|
||||
statement.setString(2, treatment.getDate());
|
||||
statement.setString(3, treatment.getBegin());
|
||||
statement.setString(4, treatment.getEnd());
|
||||
statement.setString(5, treatment.getDescription());
|
||||
statement.setString(6, treatment.getRemarks());
|
||||
statement.setInt(7, treatment.getId());
|
||||
return statement;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PreparedStatement getDeleteStatement(int id) throws SQLException {
|
||||
final String SQL =
|
||||
"DELETE FROM treatment WHERE id = ?";
|
||||
PreparedStatement statement = this.connection.prepareStatement(SQL);
|
||||
statement.setInt(1, id);
|
||||
return statement;
|
||||
}
|
||||
}
|
|
@ -11,11 +11,17 @@ module de.hitec.nhplus {
|
|||
opens de.hitec.nhplus.main to javafx.base, javafx.fxml;
|
||||
|
||||
exports de.hitec.nhplus.patient;
|
||||
exports de.hitec.nhplus.patient.database;
|
||||
opens de.hitec.nhplus.patient.database to javafx.base, javafx.fxml;
|
||||
opens de.hitec.nhplus.patient to javafx.base, javafx.fxml;
|
||||
|
||||
exports de.hitec.nhplus.treatment;
|
||||
exports de.hitec.nhplus.treatment.database;
|
||||
opens de.hitec.nhplus.treatment to javafx.base, javafx.fxml;
|
||||
opens de.hitec.nhplus.treatment.database to javafx.base, javafx.fxml;
|
||||
|
||||
exports de.hitec.nhplus.nurse;
|
||||
exports de.hitec.nhplus.nurse.database;
|
||||
opens de.hitec.nhplus.nurse to javafx.base, javafx.fxml;
|
||||
opens de.hitec.nhplus.nurse.database to javafx.base, javafx.fxml;
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
text="ID"
|
||||
/>
|
||||
<TableColumn
|
||||
fx:id="columnSurname"
|
||||
fx:id="columnSurName"
|
||||
minWidth="140.0"
|
||||
text="Nachname"
|
||||
/>
|
||||
|
@ -51,12 +51,12 @@
|
|||
<Insets right="8.0"/>
|
||||
</padding>
|
||||
<TextField
|
||||
fx:id="textFieldSurname"
|
||||
fx:id="textFieldSurName"
|
||||
prefWidth="200.0"
|
||||
promptText="Nachname"
|
||||
/>
|
||||
<TextField
|
||||
fx:id="textFieldFirstname"
|
||||
fx:id="textFieldFirstName"
|
||||
prefWidth="200.0"
|
||||
promptText="Vorname"
|
||||
/>
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
CREATE TABLE nurse
|
||||
(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
firstName TEXT NOT NULL,
|
||||
surName TEXT NOT NULL,
|
||||
phoneNumber TEXT NOT NULL
|
||||
)
|
|
@ -23,7 +23,7 @@
|
|||
text="ID"
|
||||
/>
|
||||
<TableColumn
|
||||
fx:id="columnSurname"
|
||||
fx:id="columnSurName"
|
||||
minWidth="140.0"
|
||||
onEditCommit="#handleOnEditSurname"
|
||||
text="Nachname"
|
||||
|
@ -90,7 +90,7 @@
|
|||
GridPane.rowIndex="0"
|
||||
GridPane.columnIndex="1"
|
||||
prefWidth="200.0"
|
||||
fx:id="textFieldSurname"
|
||||
fx:id="textFieldSurName"
|
||||
promptText="Nachname"
|
||||
/>
|
||||
<TextField
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
CREATE TABLE patient
|
||||
(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
firstName TEXT NOT NULL,
|
||||
surName TEXT NOT NULL,
|
||||
dateOfBirth TEXT NOT NULL,
|
||||
careLevel TEXT NOT NULL,
|
||||
roomNumber TEXT NOT NULL
|
||||
);
|
|
@ -24,9 +24,9 @@
|
|||
text="ID"
|
||||
/>
|
||||
<TableColumn
|
||||
fx:id="columnPatientId"
|
||||
minWidth="40.0"
|
||||
text="PatientID"
|
||||
fx:id="columnPatientName"
|
||||
minWidth="80.0"
|
||||
text="Patient"
|
||||
/>
|
||||
<TableColumn
|
||||
fx:id="columnDate"
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
GridPane.rowIndex="0"
|
||||
GridPane.columnIndex="4"
|
||||
prefWidth="200"
|
||||
fx:id="labelSurname"
|
||||
fx:id="labelSurName"
|
||||
text="Nachname"
|
||||
/>
|
||||
<!-- Row 2 -->
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
CREATE TABLE treatment
|
||||
(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
patientId INTEGER NOT NULL,
|
||||
date TEXT NOT NULL,
|
||||
begin TEXT NOT NULL,
|
||||
end TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
remark TEXT NOT NULL,
|
||||
FOREIGN KEY (patientId) REFERENCES patient (id) ON DELETE CASCADE
|
||||
)
|
Loading…
Reference in a new issue