From c2857de8ee44439380e2ae2eb933ab0f564a22ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20S=C3=A4ume?= Date: Wed, 15 May 2024 10:17:08 +0200 Subject: [PATCH] NOTICKET: Javaodc & Cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Dominik Säume --- src/main/java/de/hitec/nhplus/Main.java | 27 ++- .../nhplus/datastorage/ConnectionBuilder.java | 8 +- .../java/de/hitec/nhplus/datastorage/Dao.java | 29 +-- .../hitec/nhplus/datastorage/DaoFactory.java | 16 +- .../de/hitec/nhplus/datastorage/DaoImp.java | 79 +++++-- .../de/hitec/nhplus/fixtures/Fixture.java | 18 +- .../de/hitec/nhplus/fixtures/Fixtures.java | 4 +- .../nhplus/fixtures/MedicationFixture.java | 6 +- .../hitec/nhplus/fixtures/NurseFixture.java | 6 + .../hitec/nhplus/fixtures/PatientFixture.java | 5 + .../nhplus/fixtures/TreatmentFixture.java | 6 + .../nhplus/main/MainWindowController.java | 18 ++ .../java/de/hitec/nhplus/main/Person.java | 6 + .../medication/AllMedicationController.java | 30 ++- .../hitec/nhplus/medication/Ingredient.java | 7 + .../hitec/nhplus/medication/Medication.java | 15 ++ .../medication/database/MedicationDao.java | 14 ++ .../nhplus/nurse/AllNurseController.java | 30 ++- .../java/de/hitec/nhplus/nurse/Nurse.java | 15 ++ .../hitec/nhplus/nurse/database/NurseDao.java | 6 + .../nhplus/patient/AllPatientController.java | 73 ++++--- .../java/de/hitec/nhplus/patient/Patient.java | 17 ++ .../nhplus/patient/database/PatientDao.java | 7 + .../treatment/AllTreatmentController.java | 204 ++++++++++-------- .../de/hitec/nhplus/treatment/Treatment.java | 39 +++- .../treatment/TreatmentModalController.java | 15 +- .../treatment/database/TreatmentDao.java | 22 ++ .../de/hitec/nhplus/utils/DateConverter.java | 21 ++ .../java/de/hitec/nhplus/utils/Validator.java | 127 ++++++++--- 29 files changed, 631 insertions(+), 239 deletions(-) diff --git a/src/main/java/de/hitec/nhplus/Main.java b/src/main/java/de/hitec/nhplus/Main.java index 7827fc1..42d99f8 100644 --- a/src/main/java/de/hitec/nhplus/Main.java +++ b/src/main/java/de/hitec/nhplus/Main.java @@ -1,7 +1,6 @@ package de.hitec.nhplus; import de.hitec.nhplus.datastorage.ConnectionBuilder; - import javafx.application.Application; import javafx.application.Platform; import javafx.fxml.FXMLLoader; @@ -12,18 +11,35 @@ import javafx.stage.Stage; import java.io.IOException; /** - * @author dominik.saeume@hmmh.ag + * The application main class, holding the {@link #main} entrypoint. + * + * @author Bernd Heidemann + * @author Dominik Säume */ public class Main extends Application { private Stage primaryStage; + + /** + * The main entry point. + */ + public static void main(String[] args) { + launch(args); + } + + /** + * Implementation of the JavaFX start hook. + */ @Override public void start(Stage primaryStage) { this.primaryStage = primaryStage; - mainWindow(); + executeMainApplication(); } - public void mainWindow() { + /** + * Executes the main application. + */ + private void executeMainApplication() { try { FXMLLoader loader = new FXMLLoader(Main.class.getResource("/de/hitec/nhplus/main/MainWindowView.fxml")); TabPane pane = loader.load(); @@ -44,7 +60,4 @@ public class Main extends Application { } } - public static void main(String[] args) { - launch(args); - } } diff --git a/src/main/java/de/hitec/nhplus/datastorage/ConnectionBuilder.java b/src/main/java/de/hitec/nhplus/datastorage/ConnectionBuilder.java index 3945a3c..5dc705a 100644 --- a/src/main/java/de/hitec/nhplus/datastorage/ConnectionBuilder.java +++ b/src/main/java/de/hitec/nhplus/datastorage/ConnectionBuilder.java @@ -7,9 +7,9 @@ import java.sql.DriverManager; import java.sql.SQLException; /** - * The {@link DaoFactory} allows a safe connection to the Database. + * The {@link DaoFactory} allows a safe connection to the database. * - * @author Bernd Heidemann + * @author Bernd Heidemannn * @author Dominik Säume * @version 1.0 */ @@ -21,7 +21,7 @@ public class ConnectionBuilder { private static Connection connection; /** - * @return A Thread-safe {@link Connection} to the Database. + * @return A thread-safe {@link Connection} to the database. */ synchronized public static Connection getConnection() { try { @@ -38,7 +38,7 @@ public class ConnectionBuilder { } /** - * Closes the Connection to the Database. + * Closes the connection to the database. */ synchronized public static void closeConnection() { try { diff --git a/src/main/java/de/hitec/nhplus/datastorage/Dao.java b/src/main/java/de/hitec/nhplus/datastorage/Dao.java index 8f70e87..3e7f1b7 100644 --- a/src/main/java/de/hitec/nhplus/datastorage/Dao.java +++ b/src/main/java/de/hitec/nhplus/datastorage/Dao.java @@ -4,47 +4,48 @@ 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 {@link Dao} to work as expected. + * {@link Dao} is the abbreviation for Data-Access-Object. + * This interface has the Basic Methods that are needed on any {@link Dao} to work as expected. * - * @param The Model for which that {@link Dao} is implemented. - * @author Bernd Heidemann + * @param The model for which that {@link Dao} is implemented. + * @author Bernd Heidemannn * @author Dominik Säume * @version 1.0 - * @implSpec The Implementations should be added to the {@link DaoFactory}. + * @implSpec The implementations should be added to the {@link DaoFactory}. */ public interface Dao { /** - * Create a Database Entry from a Model object. + * Create a database entry from a model object. * - * @param t The Model instance. + * @param t The model instance. */ void create(T t) throws SQLException; /** - * Read a Database Entry to a Model object. + * Read a database entry to a model object. * - * @param id The ID of the Element in the Database. + * @param id The ID of the element in the database. + * @return a model instance of {@link T}. */ T read(int id) throws SQLException; /** - * @return All Database Entries as a {@link List} of Model instances + * @return All database entries as a {@link List} of model instances. */ List readAll() throws SQLException; /** - * Update the Database according to the Values of the Model object. + * Update the database according to the values of the model object. * - * @param t The Model instance. + * @param t The model instance. */ void update(T t) throws SQLException; /** - * Delete a Database Entry. + * Delete a database entry. * - * @param id The ID of the Element in the Database. + * @param id The ID of the element in the database. */ void delete(int id) throws SQLException; } diff --git a/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java b/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java index 1bdbab9..955c88d 100644 --- a/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java +++ b/src/main/java/de/hitec/nhplus/datastorage/DaoFactory.java @@ -6,9 +6,9 @@ import de.hitec.nhplus.patient.database.PatientDao; import de.hitec.nhplus.treatment.database.TreatmentDao; /** - * The {@link DaoFactory} is a Singleton({@link #getInstance}) which should be used to get {@link Dao}s. + * The {@link DaoFactory} is a singleton({@link #getInstance}) that should be used to get {@link Dao}s. * - * @author Bernd Heidemann + * @author Bernd Heidemannn * @author Dominik Säume * @version 1.0 */ @@ -17,13 +17,13 @@ public class DaoFactory { private static DaoFactory instance; /** - * A Private Constructor according to the Singleton Pattern. + * A private constructor according to the singleton pattern. */ private DaoFactory() { } /** - * @return The Singleton Instance. + * @return The singleton instance of {@link DaoFactory}. */ public static DaoFactory getInstance() { if (DaoFactory.instance == null) { @@ -33,7 +33,7 @@ public class DaoFactory { } /** - * @return A new {@link TreatmentDao} Instance with a Database Connection. + * @return A new {@link TreatmentDao} instance with a database connection. * @see de.hitec.nhplus.treatment.Treatment Treatment */ public TreatmentDao createTreatmentDao() { @@ -41,7 +41,7 @@ public class DaoFactory { } /** - * @return A new {@link PatientDao} Instance with a Database Connection. + * @return A new {@link PatientDao} instance with a database connection. * @see de.hitec.nhplus.patient.Patient Patient */ public PatientDao createPatientDAO() { @@ -49,7 +49,7 @@ public class DaoFactory { } /** - * @return A new {@link NurseDao} Instance with a Database Connection. + * @return A new {@link NurseDao} instance with a database connection. * @see de.hitec.nhplus.nurse.Nurse Nurse */ public NurseDao createNurseDAO() { @@ -57,7 +57,7 @@ public class DaoFactory { } /** - * @return A new {@link MedicationDao} Instance with a Database Connection. + * @return A new {@link MedicationDao} instance with a database connection. * @see de.hitec.nhplus.medication.Medication Medication */ public MedicationDao createMedicationDAO() { diff --git a/src/main/java/de/hitec/nhplus/datastorage/DaoImp.java b/src/main/java/de/hitec/nhplus/datastorage/DaoImp.java index 0d3af03..7b74675 100644 --- a/src/main/java/de/hitec/nhplus/datastorage/DaoImp.java +++ b/src/main/java/de/hitec/nhplus/datastorage/DaoImp.java @@ -7,30 +7,30 @@ 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. + * The {@link DaoImp} is a generic base implementation of the {@link Dao}, + * that should fit most use cases. * - * @param The Model for which that {@link Dao} is implemented. - * @author Bernd Heidemann + * @param The model for which that {@link Dao} is implemented. + * @author Bernd Heidemannn * @author Dominik Säume * @version 1.0 - * @implSpec The Implementations should be added to the {@link DaoFactory}. + * @implSpec The implementations should be added to the {@link DaoFactory}. */ public abstract class DaoImp implements Dao { protected final Connection connection; /** - * @param connection The Database Connection to use - * @implSpec The Connection should be Received from the {@link ConnectionBuilder}. + * @param connection The database {@link Connection} to use. + * @implSpec The {@link Connection} should be received from the {@link ConnectionBuilder}. */ public DaoImp(Connection connection) { this.connection = connection; } /** - * Creates a new Database Entry from a Model object. + * Creates a new database entry from a model object. * - * @param t The Model instance. + * @param t The model instance. */ @Override public void create(T t) throws SQLException { @@ -38,9 +38,10 @@ public abstract class DaoImp implements Dao { } /** - * Read a Database Entry to a Model object. + * Read a database entry to a model object. * - * @param id The ID of the Element in the Database. + * @param id The ID of the element in the database. + * @return the model instance of type {@link T}, which was read. */ @Override public T read(int id) throws SQLException { @@ -53,7 +54,9 @@ public abstract class DaoImp implements Dao { } /** - * Read all Database Entries to a {@link List} of Model objects. + * Read all database entries to a {@link List} of model objects. + * + * @return a {@link List} of type {@link T} holding all database entries as model instances. */ @Override public List readAll() throws SQLException { @@ -61,9 +64,9 @@ public abstract class DaoImp implements Dao { } /** - * Update the Database according to the Values of the Model object. + * Update the database according to the values of the model object. * - * @param t The Model instance. + * @param t The model instance. */ @Override public void update(T t) throws SQLException { @@ -71,26 +74,62 @@ public abstract class DaoImp implements Dao { } /** - * Delete a Database Entry. + * Delete a database entry. * - * @param id The ID of the Element in the Database. + * @param id The ID of the element in the database. */ @Override public void delete(int id) throws SQLException { getDeleteStatement(id).executeUpdate(); } + /** + * @param result The {@link ResultSet} from execution of the statement received from {@link #getReadByIDStatement}. + * @return The model instance of type {@link T}. + * @implSpec This will be called in {@link #read}. + */ protected abstract T getInstanceFromResultSet(ResultSet result) throws SQLException; - protected abstract List getListFromResultSet(ResultSet result) throws SQLException; - - protected abstract PreparedStatement getCreateStatement(T t) throws SQLException; - + /** + * @param id The ID of the database entry to read. + * @return A {@link PreparedStatement} to read a specific entry by its ID. + * @implSpec This will be called in {@link #read}. + * The output of the execution will be used in {@link #getInstanceFromResultSet}. + */ protected abstract PreparedStatement getReadByIDStatement(int id) throws SQLException; + /** + * @param result The {@link ResultSet} from execution of the statement received from {@link #getReadAllStatement}. + * @return A {@link List} of type {@link T} holding all database entries as model instances. + * @implSpec This will be called in {@link #readAll}. + */ + protected abstract List getListFromResultSet(ResultSet result) throws SQLException; + + /** + * @return A {@link PreparedStatement} to read all entries of this model. + * @implSpec This will be called in {@link #readAll}. + * The output of the execution will be used in {@link #getListFromResultSet}. + */ protected abstract PreparedStatement getReadAllStatement() throws SQLException; + /** + * @param t The model instance of type {@link T} for which an entry should be created. + * @return a {@link PreparedStatement} which can be used to create a new database entry for the model instance. + * @implSpec This will be called in {@link #create}. + */ + protected abstract PreparedStatement getCreateStatement(T t) throws SQLException; + + /** + * @param t The model instance of type {@link T} for which the entry should be updated. + * @return a {@link PreparedStatement} which can be used to update the database entry for the model instance. + * @implSpec This will be called in {@link #update}. + */ protected abstract PreparedStatement getUpdateStatement(T t) throws SQLException; + /** + * @param id The ID of the database entry which should be deleted. + * @return a {@link PreparedStatement} which can be used to delete the database entry. + * @implSpec This will be called in {@link #delete}. + */ protected abstract PreparedStatement getDeleteStatement(int id) throws SQLException; } diff --git a/src/main/java/de/hitec/nhplus/fixtures/Fixture.java b/src/main/java/de/hitec/nhplus/fixtures/Fixture.java index 4a2e03d..5c2fa84 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/Fixture.java +++ b/src/main/java/de/hitec/nhplus/fixtures/Fixture.java @@ -7,36 +7,36 @@ import java.sql.SQLException; import java.util.Map; /** - * A Fixture is a Class, which can be used to set up a specific set of Data. + * A fixture is a class, which can be used to set up a specific set of data. * - * @param The Model for which the {@link Fixture} is implemented. + * @param The model for which the {@link Fixture} is implemented. * @author Dominik Säume * @version 1.0 - * @implSpec The Implementations should be added to the {@link Fixtures#main}. + * @implSpec The implementations should be added to the {@link Fixtures#main}. */ public interface Fixture { /** - * Drop all Dependent Tables. + * Drop all dependent tables. * - * @param connection A Database {@link Connection}, which should be received from + * @param connection A database {@link Connection}, which should be received from * the {@link ConnectionBuilder#getConnection} * @implSpec Use {@code IF EXISTS}, to ensure that it doesn't throw an {@link Exception}. */ void dropTable(Connection connection) throws SQLException; /** - * Set up the Empty Tables with the Schema. + * Set up the empty tables with the schema. * - * @param connection A Database {@link Connection}, which should be received from + * @param connection A database {@link Connection}, which should be received from * the {@link ConnectionBuilder#getConnection} */ void setupTable(Connection connection) throws SQLException; /** - * Loads all Model specific Data to the Database. + * Loads all model specific data to the database. * - * @return A Map of Models with a {@link String} key, to be used by other {@link Fixture} + * @return A map of models with a {@link String} key, to be used by other {@link Fixture} * @implSpec The {@link de.hitec.nhplus.datastorage.Dao Dao} should be received * from {@link de.hitec.nhplus.datastorage.DaoFactory DaoFactory}. */ diff --git a/src/main/java/de/hitec/nhplus/fixtures/Fixtures.java b/src/main/java/de/hitec/nhplus/fixtures/Fixtures.java index 53484a5..51719a3 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/Fixtures.java +++ b/src/main/java/de/hitec/nhplus/fixtures/Fixtures.java @@ -8,7 +8,7 @@ import java.sql.Connection; import java.util.Map; /** - * A Class, Implementing an Entrypoint({@link #main}), for loading a Specific set of Data. + * A class, implementing an entrypoint({@link #main}), for loading a specific set of data. * * @author Dominik Säume * @version 1.0 @@ -16,7 +16,7 @@ import java.util.Map; public class Fixtures { /** - * An Entrypoint, for loading a Specific set of Data. + * An entrypoint, for loading a specific set of data. * * @param args unused. */ diff --git a/src/main/java/de/hitec/nhplus/fixtures/MedicationFixture.java b/src/main/java/de/hitec/nhplus/fixtures/MedicationFixture.java index 719e53c..fed7e20 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/MedicationFixture.java +++ b/src/main/java/de/hitec/nhplus/fixtures/MedicationFixture.java @@ -12,7 +12,11 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.*; - +/** + * {@link Fixture} for {@link Medication}. + * + * @author Dominik Säume + */ public class MedicationFixture implements Fixture { private static final String SCHEMA = "/de/hitec/nhplus/medication/database/Medication.sql"; private static final String INGREDIENT_SCHEMA = "/de/hitec/nhplus/medication/database/Medication_Ingredient.sql"; diff --git a/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java b/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java index 7c2d98a..3ef6972 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java +++ b/src/main/java/de/hitec/nhplus/fixtures/NurseFixture.java @@ -4,6 +4,7 @@ import de.hitec.nhplus.Main; import de.hitec.nhplus.datastorage.DaoFactory; import de.hitec.nhplus.nurse.Nurse; import de.hitec.nhplus.nurse.database.NurseDao; +import de.hitec.nhplus.treatment.Treatment; import java.io.InputStream; import java.nio.charset.StandardCharsets; @@ -11,6 +12,11 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.*; +/** + * {@link Fixture} for {@link Nurse}. + * + * @author Dominik Säume + */ public class NurseFixture implements Fixture { @Override public void dropTable(Connection connection) throws SQLException { diff --git a/src/main/java/de/hitec/nhplus/fixtures/PatientFixture.java b/src/main/java/de/hitec/nhplus/fixtures/PatientFixture.java index 372a832..c2f73a9 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/PatientFixture.java +++ b/src/main/java/de/hitec/nhplus/fixtures/PatientFixture.java @@ -13,6 +13,11 @@ import java.util.*; import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalDate; +/** + * {@link Fixture} for {@link Patient}. + * + * @author Dominik Säume + */ public class PatientFixture implements Fixture { @Override public void dropTable(Connection connection) throws SQLException { diff --git a/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java b/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java index 26edb8a..85c13ad 100644 --- a/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java +++ b/src/main/java/de/hitec/nhplus/fixtures/TreatmentFixture.java @@ -16,6 +16,12 @@ import java.util.*; import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalDate; import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalTime; + +/** + * {@link Fixture} for {@link Treatment}. + * + * @author Dominik Säume + */ public class TreatmentFixture implements Fixture { private final Map patientsByName; private final Map nursesByName; diff --git a/src/main/java/de/hitec/nhplus/main/MainWindowController.java b/src/main/java/de/hitec/nhplus/main/MainWindowController.java index 5c70576..b0f4a47 100644 --- a/src/main/java/de/hitec/nhplus/main/MainWindowController.java +++ b/src/main/java/de/hitec/nhplus/main/MainWindowController.java @@ -11,6 +11,12 @@ import javafx.scene.layout.BorderPane; import java.io.IOException; import java.util.Objects; +/** + * Controller for the main window of the application, which holds all tabs. + * + * @author Bernd Heidemann + * @author Dominik Säume + */ public class MainWindowController { @FXML private TabPane mainTabPane; @@ -42,6 +48,9 @@ public class MainWindowController { medicationTab.setOnSelectionChanged(event -> loadMedicationPage()); } + /** + * Loads the patient page into its tab. + */ private void loadPatientPage() { try { BorderPane patientsPane = FXMLLoader.load( @@ -57,6 +66,9 @@ public class MainWindowController { } } + /** + * Loads the treatment page into its tab. + */ private void loadTreatmentsPage() { try { BorderPane treatmentsPane = FXMLLoader.load( @@ -72,6 +84,9 @@ public class MainWindowController { } } + /** + * Loads the nurse page into its tab. + */ private void loadNursePage() { try { BorderPane nursePane = FXMLLoader.load( @@ -87,6 +102,9 @@ public class MainWindowController { } } + /** + * Loads the medication page into its tab. + */ private void loadMedicationPage() { try { BorderPane medicationPane = FXMLLoader.load( diff --git a/src/main/java/de/hitec/nhplus/main/Person.java b/src/main/java/de/hitec/nhplus/main/Person.java index d91e2b1..d741376 100644 --- a/src/main/java/de/hitec/nhplus/main/Person.java +++ b/src/main/java/de/hitec/nhplus/main/Person.java @@ -2,6 +2,12 @@ package de.hitec.nhplus.main; import javafx.beans.property.SimpleStringProperty; +/** + * A simple base model for a {@link Person} that can be extended. + * + * @author Bernd Heidemann + * @author Dominik Säume + */ public abstract class Person { private final SimpleStringProperty firstName; private final SimpleStringProperty surName; diff --git a/src/main/java/de/hitec/nhplus/medication/AllMedicationController.java b/src/main/java/de/hitec/nhplus/medication/AllMedicationController.java index 8f3bb55..5261958 100644 --- a/src/main/java/de/hitec/nhplus/medication/AllMedicationController.java +++ b/src/main/java/de/hitec/nhplus/medication/AllMedicationController.java @@ -13,6 +13,11 @@ import javafx.scene.control.cell.PropertyValueFactory; import java.sql.SQLException; import java.util.stream.Collectors; +/** + * The controller for viewing all {@link Medication}s. + * + * @author Dominik Säume + */ public class AllMedicationController { @FXML private TableView tableView; @@ -34,6 +39,10 @@ public class AllMedicationController { private final ObservableList medications = FXCollections.observableArrayList(); private MedicationDao dao; + /** + * Initialization method that is called after the binding of all the fields. + */ + @FXML public void initialize() { readAllAndShowInTableView(); @@ -41,16 +50,14 @@ public class AllMedicationController { this.columnName.setCellValueFactory(new PropertyValueFactory<>("name")); this.columnManufacturer.setCellValueFactory(new PropertyValueFactory<>("manufacturer")); this.columnIngredient.setCellValueFactory( - cellData -> { - return new SimpleStringProperty( - cellData - .getValue() - .getIngredients() - .stream() - .map(ingredient -> ingredient.getName()) - .collect(Collectors.joining("\n")) - ); - }); + cellData -> new SimpleStringProperty( + cellData + .getValue() + .getIngredients() + .stream() + .map(ingredient -> ingredient.getName()) + .collect(Collectors.joining("\n")) + )); this.columnPossibleSideEffects.setCellValueFactory(new PropertyValueFactory<>("possibleSideEffects")); this.columnAdministrationMethod.setCellValueFactory(new PropertyValueFactory<>("administrationMethod")); this.columnCurrentStock.setCellValueFactory(new PropertyValueFactory<>("currentStock")); @@ -58,6 +65,9 @@ public class AllMedicationController { this.tableView.setItems(this.medications); } + /** + * Internal method to read all data and set it to the table view. + */ public void readAllAndShowInTableView() { this.dao = DaoFactory.getInstance().createMedicationDAO(); try { diff --git a/src/main/java/de/hitec/nhplus/medication/Ingredient.java b/src/main/java/de/hitec/nhplus/medication/Ingredient.java index 626e3c0..bbf2f36 100644 --- a/src/main/java/de/hitec/nhplus/medication/Ingredient.java +++ b/src/main/java/de/hitec/nhplus/medication/Ingredient.java @@ -2,6 +2,13 @@ package de.hitec.nhplus.medication; import javafx.beans.property.SimpleStringProperty; +/** + * The simple model for an {@link Ingredient}. + * + * @author Dominik Säume + * @implSpec This isn't a conventional model, because it isn't directly stored in the database, + * but it can be changed to do that, in the case that its complexity rises in the future. + */ public class Ingredient { private final SimpleStringProperty name; diff --git a/src/main/java/de/hitec/nhplus/medication/Medication.java b/src/main/java/de/hitec/nhplus/medication/Medication.java index f27a312..6320e58 100644 --- a/src/main/java/de/hitec/nhplus/medication/Medication.java +++ b/src/main/java/de/hitec/nhplus/medication/Medication.java @@ -10,6 +10,11 @@ import java.util.List; import java.util.StringJoiner; import java.util.stream.Collectors; +/** + * The model for a {@link Medication}. + * + * @author Dominik Säume + */ public class Medication { private SimpleIntegerProperty id; private final SimpleStringProperty name; @@ -19,6 +24,13 @@ public class Medication { private final SimpleStringProperty administrationMethod; private final SimpleIntegerProperty currentStock; + /** + * This constructor allows instantiating a {@link Medication} object, + * before it is stored in the database, by omitting the {@link Medication#id ID} value. + * + * @implSpec Instances created with this constructor can be directly passed to + * {@link de.hitec.nhplus.medication.database.MedicationDao#create MedicationDao.create}. + */ public Medication( String name, String manufacturer, @@ -35,6 +47,9 @@ public class Medication { this.currentStock = new SimpleIntegerProperty(currentStock); } + /** + * This constructor allows instantiating a {@link Medication} object with all existing fields. + */ public Medication( int id, String name, diff --git a/src/main/java/de/hitec/nhplus/medication/database/MedicationDao.java b/src/main/java/de/hitec/nhplus/medication/database/MedicationDao.java index 4170582..556a623 100644 --- a/src/main/java/de/hitec/nhplus/medication/database/MedicationDao.java +++ b/src/main/java/de/hitec/nhplus/medication/database/MedicationDao.java @@ -13,6 +13,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +/** + * The {@link MedicationDao} is an implementation of the{@link de.hitec.nhplus.datastorage.Dao Dao} + * for the {@link Medication} model. + * + * @author Bernd Heidemannn + * @author Dominik Säume + */ public class MedicationDao implements Dao { protected final Connection connection; @@ -153,6 +160,13 @@ public class MedicationDao implements Dao { preparedStatement.executeUpdate(); } + /** + * Constructs a {@link Medication} object from the {@link ResultSet} obtained after executing a database query. + * This method is used internally to map the {@link ResultSet} data to a {@link Medication} object. + * + * @param result The {@link ResultSet} containing the data retrieved from the database. + * @return A {@link Medication} object constructed from the {@link ResultSet} data. + */ private Medication getInstanceFromResultSet(ResultSet result) throws SQLException { Medication medication = new Medication( result.getInt(1), diff --git a/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java b/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java index 7f69645..86eccbd 100644 --- a/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java +++ b/src/main/java/de/hitec/nhplus/nurse/AllNurseController.java @@ -17,6 +17,12 @@ import javafx.scene.control.cell.TextFieldTableCell; import java.sql.SQLException; +/** + * The controller for viewing all {@link Nurse}s. + * + * @author Dominik Säume + * @author Ole Kück + */ public class AllNurseController { @FXML public TextField textFieldSurName; @@ -40,6 +46,10 @@ public class AllNurseController { private final ObservableList nurses = FXCollections.observableArrayList(); private NurseDao dao; + /** + * Initialization method that is called after the binding of all the fields. + */ + @FXML public void initialize() { this.readAllAndShowInTableView(); @@ -72,15 +82,28 @@ public class AllNurseController { this.textFieldPhoneNumber.textProperty().addListener(inputNewNurseValidationListener); } + /** + * Internal method to read all data and set it to the table view. + */ private void readAllAndShowInTableView(){ this.nurses.clear(); this.dao = DaoFactory.getInstance().createNurseDAO(); try { - this.nurses.addAll(this.dao.readAll()); + this.nurses.setAll(this.dao.readAll()); }catch (SQLException exception){ exception.printStackTrace(); } } + + /** + * Internal method that clears the text fields used for creating a new {@link Nurse}. + */ + private void clearTextfields() { + this.textFieldFirstName.clear(); + this.textFieldSurName.clear(); + this.textFieldPhoneNumber.clear(); + } + @FXML public void handleAdd(){ String surname=this.textFieldSurName.getText(); @@ -96,10 +119,5 @@ public class AllNurseController { clearTextfields(); } - private void clearTextfields() { - this.textFieldFirstName.clear(); - this.textFieldSurName.clear(); - this.textFieldPhoneNumber.clear(); - } } diff --git a/src/main/java/de/hitec/nhplus/nurse/Nurse.java b/src/main/java/de/hitec/nhplus/nurse/Nurse.java index 18e87f1..9afab12 100644 --- a/src/main/java/de/hitec/nhplus/nurse/Nurse.java +++ b/src/main/java/de/hitec/nhplus/nurse/Nurse.java @@ -6,10 +6,22 @@ import javafx.beans.property.SimpleStringProperty; import java.util.StringJoiner; +/** + * The model for a {@link Nurse}. + * + * @author Dominik Säume + */ public class Nurse extends Person { private SimpleIntegerProperty id; private final SimpleStringProperty phoneNumber; + /** + * This constructor allows instantiating a {@link Nurse} object, + * before it is stored in the database, by omitting the {@link Nurse#id ID} value. + * + * @implSpec Instances created with this constructor can be directly passed to + * {@link de.hitec.nhplus.nurse.database.NurseDao#create NurseDao.create}. + */ public Nurse( String firstName, String surName, @@ -19,6 +31,9 @@ public class Nurse extends Person { this.phoneNumber = new SimpleStringProperty(phoneNumber); } + /** + * This constructor allows instantiating a {@link Nurse} object with all existing fields. + */ public Nurse( int id, String firstName, diff --git a/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java b/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java index a86fcbd..1d1a0e5 100644 --- a/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java +++ b/src/main/java/de/hitec/nhplus/nurse/database/NurseDao.java @@ -10,6 +10,12 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +/** + * The {@link NurseDao} is an implementation of the {@link de.hitec.nhplus.datastorage.Dao Dao} + * for the {@link Nurse} model. + * + * @author Dominik Säume + */ public class NurseDao extends DaoImp { public NurseDao(Connection connection) { super(connection); diff --git a/src/main/java/de/hitec/nhplus/patient/AllPatientController.java b/src/main/java/de/hitec/nhplus/patient/AllPatientController.java index 1e99995..a5d20a6 100644 --- a/src/main/java/de/hitec/nhplus/patient/AllPatientController.java +++ b/src/main/java/de/hitec/nhplus/patient/AllPatientController.java @@ -19,6 +19,13 @@ import java.time.LocalDate; import static de.hitec.nhplus.utils.Validator.*; +/** + * The controller for viewing all {@link Patient}s. + * + * @author Bernd Heidemann + * @author Dominik Säume + * @author Armin Ribic + */ public class AllPatientController { @FXML @@ -53,6 +60,10 @@ public class AllPatientController { private final ObservableList patients = FXCollections.observableArrayList(); private PatientDao dao; + /** + * Initialization method that is called after the binding of all the fields. + */ + @FXML public void initialize() { this.readAllAndShowInTableView(); @@ -104,6 +115,41 @@ public class AllPatientController { this.textFieldRoomNumber.textProperty().addListener(inputNewPatientValidationListener); } + /** + * Internal method to read all data and set it to the table view. + */ + private void readAllAndShowInTableView() { + this.patients.clear(); + this.dao = DaoFactory.getInstance().createPatientDAO(); + try { + this.patients.setAll(this.dao.readAll()); + } catch (SQLException exception) { + exception.printStackTrace(); + } + } + + /** + * Internal method that stores the changes in the database. + */ + private void doUpdate(TableColumn.CellEditEvent event) { + try { + this.dao.update(event.getRowValue()); + } catch (SQLException exception) { + exception.printStackTrace(); + } + } + + /** + * Internal method that clears the text fields used for creating a new {@link Patient}. + */ + private void clearTextfields() { + this.textFieldFirstName.clear(); + this.textFieldSurName.clear(); + this.textFieldDateOfBirth.clear(); + this.textFieldCareLevel.clear(); + this.textFieldRoomNumber.clear(); + } + @FXML public void handleOnEditFirstname(TableColumn.CellEditEvent event) { String newFirstName = event.getNewValue(); @@ -164,25 +210,6 @@ public class AllPatientController { this.doUpdate(event); } - - private void doUpdate(TableColumn.CellEditEvent event) { - try { - this.dao.update(event.getRowValue()); - } catch (SQLException exception) { - exception.printStackTrace(); - } - } - - private void readAllAndShowInTableView() { - this.patients.clear(); - this.dao = DaoFactory.getInstance().createPatientDAO(); - try { - this.patients.addAll(this.dao.readAll()); - } catch (SQLException exception) { - exception.printStackTrace(); - } - } - @FXML public void handleDelete() { Patient selectedItem = this.tableView.getSelectionModel().getSelectedItem(); @@ -212,12 +239,4 @@ public class AllPatientController { readAllAndShowInTableView(); clearTextfields(); } - - private void clearTextfields() { - this.textFieldFirstName.clear(); - this.textFieldSurName.clear(); - this.textFieldDateOfBirth.clear(); - this.textFieldCareLevel.clear(); - this.textFieldRoomNumber.clear(); - } } diff --git a/src/main/java/de/hitec/nhplus/patient/Patient.java b/src/main/java/de/hitec/nhplus/patient/Patient.java index c7c72ee..a432864 100644 --- a/src/main/java/de/hitec/nhplus/patient/Patient.java +++ b/src/main/java/de/hitec/nhplus/patient/Patient.java @@ -11,6 +11,13 @@ import java.util.ArrayList; import java.util.List; import java.util.StringJoiner; +/** + * The model for a {@link Patient}. + * + * @author Bernd Heidemann + * @author Dominik Säume + * @author Armin Ribic + */ public class Patient extends Person { private SimpleIntegerProperty id; private final SimpleStringProperty dateOfBirth; @@ -18,6 +25,13 @@ public class Patient extends Person { private final SimpleStringProperty roomNumber; private final List allTreatments = new ArrayList<>(); + /** + * This constructor allows instantiating a {@link Patient} object, + * before it is stored in the database, by omitting the {@link Patient#id ID} value. + * + * @implSpec Instances created with this constructor can be directly passed to + * {@link de.hitec.nhplus.patient.database.PatientDao#create PatientDao.create}. + */ public Patient( String firstName, String surName, @@ -31,6 +45,9 @@ public class Patient extends Person { this.roomNumber = new SimpleStringProperty(roomNumber); } + /** + * This constructor allows instantiating a {@link Patient} object with all existing fields. + */ public Patient( int id, String firstName, diff --git a/src/main/java/de/hitec/nhplus/patient/database/PatientDao.java b/src/main/java/de/hitec/nhplus/patient/database/PatientDao.java index 90ba560..3a4d4c0 100644 --- a/src/main/java/de/hitec/nhplus/patient/database/PatientDao.java +++ b/src/main/java/de/hitec/nhplus/patient/database/PatientDao.java @@ -11,6 +11,13 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +/** + * The {@link PatientDao} is an implementation of the {@link de.hitec.nhplus.datastorage.Dao Dao} + * for the {@link Patient} model. + * + * @author Bernd Heidemannn + * @author Dominik Säume + */ public class PatientDao extends DaoImp { public PatientDao(Connection connection) { diff --git a/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java b/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java index 117b380..3384c3f 100644 --- a/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java +++ b/src/main/java/de/hitec/nhplus/treatment/AllTreatmentController.java @@ -22,6 +22,12 @@ import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; +/** + * The controller for viewing all {@link Treatment}s. + * + * @author Bernd Heidemann + * @author Dominik Säume + */ public class AllTreatmentController { @FXML @@ -64,6 +70,10 @@ public class AllTreatmentController { private final ObservableList nurseSelection = FXCollections.observableArrayList(); private ArrayList nurseList; + /** + * Initialization method that is called after the binding of all the fields. + */ + @FXML public void initialize() { readAllAndShowInTableView(); comboBoxPatientSelection.setItems(patientSelection); @@ -101,6 +111,9 @@ public class AllTreatmentController { this.createComboBoxData(); } + /** + * Internal method to read all data and set it to the table view. + */ public void readAllAndShowInTableView() { this.dao = DaoFactory.getInstance().createTreatmentDao(); try { @@ -110,6 +123,9 @@ public class AllTreatmentController { } } + /** + * Internal method to create the data set for the combobox that is used for creating a new {@link Treatment}. + */ private void createComboBoxData() { PatientDao patientDAO = DaoFactory.getInstance().createPatientDAO(); NurseDao nurseDao = DaoFactory.getInstance().createNurseDAO(); @@ -129,6 +145,58 @@ public class AllTreatmentController { } } + /** + * Internal method to get the {@link Patient} object by its surname. + * + * @see AllTreatmentController#handleComboBoxPatient + * @see AllTreatmentController#handleNewTreatment + */ + private Patient searchInPatientList(String surname) { + for (Patient patient : this.patientList) { + if (patient.getSurName().equals(surname)) { + return patient; + } + } + return null; + } + + /** + * Internal method to get the {@link Nurse} object by its surname. + * + * @see AllTreatmentController#handleNewTreatment + */ + private Nurse searchInNurseList(String surname) { + for (Nurse nurse : this.nurseList) { + if (nurse.getSurName().equals(surname)) { + return nurse; + } + } + return null; + } + + /** + * Method to save the changes to a {@link Treatment}. + */ + protected void updateTreatment(Treatment treatment) { + TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao(); + try { + dao.update(treatment); + } catch (SQLException exception) { + exception.printStackTrace(); + } + } + + /** + * Method to create a new {@link Treatment}. + */ + public void createTreatment(Treatment treatment) { + TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao(); + try { + dao.create(treatment); + } catch (SQLException exception) { + exception.printStackTrace(); + } + } @FXML public void handleComboBoxPatient() { @@ -154,22 +222,40 @@ public class AllTreatmentController { } } - private Patient searchInPatientList(String surname) { - for (Patient patient : this.patientList) { - if (patient.getSurName().equals(surname)) { - return patient; - } - } - return null; - } + /** + * Internal method to create a {@link TreatmentModalController TreatmentModal}. + * + * @param treatment The {@link Treatment} which should be edited. Set null to create a new one. + * @param title The Title of the created modal. + * @param patient The {@link Patient} whose {@link Treatment} this is. + * @param nurse The {@link Nurse} who did the {@link Treatment}. + */ + public void treatmentWindow(Treatment treatment, String title, Patient patient, Nurse nurse) { + try { + FXMLLoader loader = new FXMLLoader( + Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml") + ); + BorderPane pane = loader.load(); + Scene scene = new Scene(pane); + Stage stage = new Stage(); - private Nurse searchInNurseList(String surname) { - for (Nurse nurse : this.nurseList) { - if (nurse.getSurName().equals(surname)) { - return nurse; - } + TreatmentModalController controller = loader.getController(); + controller.initialize( + this, + stage, + treatment, + patient, + nurse + ); + + stage.setScene(scene); + stage.setTitle(title); + stage.setResizable(true); + stage.setAlwaysOnTop(true); + stage.showAndWait(); + } catch (IOException exception) { + exception.printStackTrace(); } - return null; } @FXML @@ -210,94 +296,24 @@ public class AllTreatmentController { return; } - newTreatmentWindow(patient, nurse); + treatmentWindow(null, "NHPlus - Neue Behandlung", patient, nurse); } @FXML public void handleMouseClick() { tableView.setOnMouseClicked(event -> { - if (event.getClickCount() != 2 || (tableView.getSelectionModel().getSelectedItem() == null)) { - return; + if (event.getClickCount() == 2 && (tableView.getSelectionModel().getSelectedItem() != null)) { + int index = this.tableView.getSelectionModel().getSelectedIndex(); + Treatment treatment = this.treatments.get(index); + treatmentWindow( + treatment, + "NHPlus - Behandlung", + treatment.getPatient(), + treatment.getNurse() + ); } - int index = this.tableView.getSelectionModel().getSelectedIndex(); - Treatment treatment = this.treatments.get(index); - treatmentWindow(treatment, treatment.getNurse()); }); - } - public void newTreatmentWindow(Patient patient, Nurse nurse) { - try { - FXMLLoader loader = new FXMLLoader( - Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml") - ); - BorderPane pane = loader.load(); - Scene scene = new Scene(pane); - Stage stage = new Stage(); - - TreatmentModalController controller = loader.getController(); - controller.initialize( - this, - stage, - null, - patient, - nurse - ); - - stage.setScene(scene); - stage.setTitle("NHPlus - Neue Behandlung"); - stage.setResizable(true); - stage.setAlwaysOnTop(true); - stage.showAndWait(); - } catch (IOException exception) { - exception.printStackTrace(); - } - } - - public void treatmentWindow(Treatment treatment, Nurse nurse) { - try { - FXMLLoader loader = new FXMLLoader( - Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml") - ); - BorderPane pane = loader.load(); - Scene scene = new Scene(pane); - Stage stage = new Stage(); - - TreatmentModalController controller = loader.getController(); - PatientDao pDao = DaoFactory.getInstance().createPatientDAO(); - controller.initialize( - this, - stage, - treatment, - pDao.read(treatment.getPatient().getId()), - nurse - ); - - stage.setScene(scene); - stage.setTitle("NHPlus - Behandlung"); - stage.setResizable(true); - stage.setAlwaysOnTop(true); - stage.showAndWait(); - } catch (IOException | SQLException exception) { - exception.printStackTrace(); - } - } - - public void createTreatment(Treatment treatment) { - TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao(); - try { - dao.create(treatment); - } catch (SQLException exception) { - exception.printStackTrace(); - } - } - - public void updateTreatment(Treatment treatment) { - TreatmentDao dao = DaoFactory.getInstance().createTreatmentDao(); - try { - dao.update(treatment); - } catch (SQLException exception) { - exception.printStackTrace(); - } } } diff --git a/src/main/java/de/hitec/nhplus/treatment/Treatment.java b/src/main/java/de/hitec/nhplus/treatment/Treatment.java index e369119..b5195cf 100644 --- a/src/main/java/de/hitec/nhplus/treatment/Treatment.java +++ b/src/main/java/de/hitec/nhplus/treatment/Treatment.java @@ -11,6 +11,12 @@ import java.time.LocalDate; import java.time.LocalTime; import java.util.StringJoiner; +/** + * The model for a {@link Treatment}. + * + * @author Bernd Heidemann + * @author Dominik Säume + */ public class Treatment { private SimpleIntegerProperty id; private final SimpleObjectProperty patient; @@ -21,8 +27,22 @@ public class Treatment { private final SimpleStringProperty description; private final SimpleStringProperty remarks; - public Treatment(Patient patient, Nurse nurse, LocalDate date, LocalTime begin, - LocalTime end, String description, String remarks) { + /** + * This constructor allows instantiating a {@link Treatment} object, + * before it is stored in the database, by omitting the {@link Treatment#id ID} value. + * + * @implSpec Instances created with this constructor can be directly passed to + * {@link de.hitec.nhplus.treatment.database.TreatmentDao#create TreatmentDao.create}. + */ + public Treatment( + Patient patient, + Nurse nurse, + LocalDate date, + LocalTime begin, + LocalTime end, + String description, + String remarks + ) { this.patient = new SimpleObjectProperty<>(patient); this.nurse = new SimpleObjectProperty<>(nurse); this.date = new SimpleObjectProperty<>(date); @@ -32,8 +52,19 @@ public class Treatment { this.remarks = new SimpleStringProperty(remarks); } - public Treatment(int id, Patient patient, Nurse nurse, LocalDate date, LocalTime begin, - LocalTime end, String description, String remarks) { + /** + * This constructor allows instantiating a {@link Treatment} object with all existing fields. + */ + public Treatment( + int id, + Patient patient, + Nurse nurse, + LocalDate date, + LocalTime begin, + LocalTime end, + String description, + String remarks + ) { this.id = new SimpleIntegerProperty(id); this.patient = new SimpleObjectProperty<>(patient); this.nurse = new SimpleObjectProperty<>(nurse); diff --git a/src/main/java/de/hitec/nhplus/treatment/TreatmentModalController.java b/src/main/java/de/hitec/nhplus/treatment/TreatmentModalController.java index 9948d5c..3898a7b 100644 --- a/src/main/java/de/hitec/nhplus/treatment/TreatmentModalController.java +++ b/src/main/java/de/hitec/nhplus/treatment/TreatmentModalController.java @@ -14,6 +14,11 @@ import java.time.LocalTime; import static de.hitec.nhplus.utils.Validator.*; +/** + * The controller for creating and editing a specific {@link Treatment}. + * + * @author Dominik Säume + */ public class TreatmentModalController { @FXML private Label labelNurseName; @@ -40,6 +45,9 @@ public class TreatmentModalController { private Treatment treatment; private boolean isNewTreatment = false; + /** + * Initialization method that is called after the binding of all the fields. + */ public void initialize( AllTreatmentController controller, Stage stage, @@ -109,6 +117,9 @@ public class TreatmentModalController { } + /** + * Internal method to show the data in the view. + */ private void showData() { this.labelNurseName.setText(nurse.getSurName()); this.labelFirstName.setText(patient.getFirstName()); @@ -149,8 +160,4 @@ public class TreatmentModalController { public void handleCancel() { stage.close(); } - - public Treatment getTreatment() { - return treatment; - } } diff --git a/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java b/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java index 1a67596..2542f40 100644 --- a/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java +++ b/src/main/java/de/hitec/nhplus/treatment/database/TreatmentDao.java @@ -2,6 +2,7 @@ package de.hitec.nhplus.treatment.database; import de.hitec.nhplus.datastorage.DaoFactory; import de.hitec.nhplus.datastorage.DaoImp; +import de.hitec.nhplus.patient.Patient; import de.hitec.nhplus.nurse.Nurse; import de.hitec.nhplus.treatment.Treatment; import de.hitec.nhplus.utils.DateConverter; @@ -13,6 +14,13 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +/** + * The {@link TreatmentDao} is an implementation of the {@link de.hitec.nhplus.datastorage.Dao Dao} + * for the {@link Treatment} model. + * + * @author Bernd Heidemannn + * @author Dominik Säume + */ public class TreatmentDao extends DaoImp { public TreatmentDao(Connection connection) { @@ -74,6 +82,13 @@ public class TreatmentDao extends DaoImp { return list; } + /** + * Retrieves a list of {@link Treatment}s associated with a specific + * {@link Patient#id patient ID} from the database. + * + * @param patientId The {@link Patient#id ID} of the {@link Patient} whose {@link Treatment}s are to be retrieved. + * @return A {@link List} of {@link Treatment} objects associated with the specified {@link Patient} ID. + */ public List readTreatmentsByPatient(int patientId) throws SQLException { final String SQL = "SELECT * FROM treatment WHERE patientId = ?"; PreparedStatement statement = this.connection.prepareStatement(SQL); @@ -82,6 +97,13 @@ public class TreatmentDao extends DaoImp { return getListFromResultSet(result); } + /** + * Retrieves a list of {@link Treatment}s associated with a specific + * {@link Nurse#id patient ID} from the database. + * + * @param nurseId The {@link Nurse#id ID} of the {@link Nurse} whose {@link Treatment}s are to be retrieved. + * @return A {@link List} of {@link Treatment} objects associated with the specified {@link Nurse} ID. + */ public List readTreatmentsByNurse(int nurseId) throws SQLException { final String SQL = "SELECT * FROM treatment WHERE nurseId = ?"; PreparedStatement statement = this.connection.prepareStatement(SQL); diff --git a/src/main/java/de/hitec/nhplus/utils/DateConverter.java b/src/main/java/de/hitec/nhplus/utils/DateConverter.java index a4f43f9..b4f7e21 100644 --- a/src/main/java/de/hitec/nhplus/utils/DateConverter.java +++ b/src/main/java/de/hitec/nhplus/utils/DateConverter.java @@ -4,23 +4,44 @@ import java.time.LocalDate; import java.time.LocalTime; import java.time.format.DateTimeFormatter; +/** + * A utility class that holds utility methods for date conversion. + * + * @author Bernd Heidemann + */ public class DateConverter { private static final String DATE_FORMAT = "yyyy-MM-dd"; private static final String TIME_FORMAT = "HH:mm"; + /** + * @param date A date {@link String} in the format: yyyy-MM-dd. + * @return The converted date {@link String} as {@link LocalDate}. + */ public static LocalDate convertStringToLocalDate(String date) { return LocalDate.parse(date, DateTimeFormatter.ofPattern(DATE_FORMAT)); } + /** + * @param time A time {@link String} in the format: HH:mm. + * @return The converted time {@link String} as {@link LocalTime}. + */ public static LocalTime convertStringToLocalTime(String time) { return LocalTime.parse(time, DateTimeFormatter.ofPattern(TIME_FORMAT)); } + /** + * @param date A {@link LocalDate} which should be converted to a {@link String}. + * @return The converted {@link LocalDate} in the format: yyy-MM-dd. + */ public static String convertLocalDateToString(LocalDate date) { return date.format(DateTimeFormatter.ofPattern(DATE_FORMAT)); } + /** + * @param time A {@link LocalTime} which should be converted to a {@link String}. + * @return The converted {@link LocalTime} in the format: HH:mm. + */ public static String convertLocalTimeToString(LocalTime time) { return time.format(DateTimeFormatter.ofPattern(TIME_FORMAT)); } diff --git a/src/main/java/de/hitec/nhplus/utils/Validator.java b/src/main/java/de/hitec/nhplus/utils/Validator.java index 4fdddd9..7931700 100644 --- a/src/main/java/de/hitec/nhplus/utils/Validator.java +++ b/src/main/java/de/hitec/nhplus/utils/Validator.java @@ -5,17 +5,34 @@ import javafx.scene.control.Alert; import java.time.LocalDate; import java.time.LocalTime; -public class Validator -{ - public static void showValidationError(String type){ +/** + * A utility class for validating all kinds of data. + * + * @author Dominik Säume + * @author Ole Kück + */ +public class Validator { + + /** + * Shows a modal with a specific validation error. + * + * @param type The type for which a validation error should be shown as {@link String}. + */ + public static void showValidationError(String type) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Error"); alert.setHeaderText(null); alert.setContentText("Invalid " + type + " !"); alert.showAndWait(); } + + /** + * Validate that a {@link String} is a valid date. + * + * @param text The date {@link String} to validate. + */ public static boolean isValidDate(String text) { - if(text.isBlank()){ + if (text.isBlank()) { return false; } try { @@ -25,8 +42,14 @@ public class Validator } return true; } + + /** + * Validate that a {@link LocalDate} is a valid date for storage in the database. + * + * @param date The {@link LocalDate} to validate. + */ public static boolean isValidDate(LocalDate date) { - if(date == null){ + if (date == null) { return false; } try { @@ -36,21 +59,34 @@ public class Validator } return true; } - public static boolean isValidTime(String text){ - if(text.isBlank()){ + + /** + * Validate that a {@link String} is a valid time. + * + * @param text The time {@link String} to validate. + */ + public static boolean isValidTime(String text) { + if (text.isBlank()) { return false; } try { DateConverter.convertStringToLocalTime(text); - }catch (Exception exception){ + } catch (Exception exception) { return false; } return true; } - public static boolean isValidTimeRange(String start, String end){ - if( - !isValidTime(start) || !isValidTime(end) - ){ + + /** + * Validate that two time {@link String}s are a valid time range. + * + * @param start The starting time {@link String}. + * @param end The ending time {@link String}. + */ + public static boolean isValidTimeRange(String start, String end) { + if ( + !isValidTime(start) || !isValidTime(end) + ) { return false; } LocalTime startTime = DateConverter.convertStringToLocalTime(start); @@ -59,24 +95,57 @@ public class Validator } - public static boolean isValidDescription(String text) { - return !text.isBlank(); - } - public static boolean isValidFirstName(String text){ - return !text.isBlank(); - } - public static boolean isValidSurName(String text){ - return !text.isBlank(); - } - public static boolean isValidPhoneNumber(String text){ - return !text.isBlank(); - } - public static boolean isValidCareLevel(String text){ - return !text.isBlank(); - } - public static boolean isValidRoomNumber(String text){ + /** + * Validate that a {@link String} is a valid description. + * + * @param text The {@link String} to validate. + */ + public static boolean isValidDescription(String text) { return !text.isBlank(); } + /** + * Validate that a {@link String} is a valid first name. + * + * @param text The {@link String} to validate. + */ + public static boolean isValidFirstName(String text) { + return !text.isBlank(); + } + + /** + * Validate that a {@link String} is a valid surname. + * + * @param text The {@link String} to validate. + */ + public static boolean isValidSurName(String text) { + return !text.isBlank(); + } + + /** + * Validate that a {@link String} is a valid phone number. + * + * @param text The {@link String} to validate. + */ + public static boolean isValidPhoneNumber(String text) { + return !text.isBlank(); + } + + /** + * Validate that a {@link String} is a valid care level. + * + * @param text The {@link String} to validate. + */ + public static boolean isValidCareLevel(String text) { + return !text.isBlank(); + } + + /** + * Validate that a {@link String} is a valid room number. + * + * @param text The {@link String} to validate. + */ + public static boolean isValidRoomNumber(String text) { + return !text.isBlank(); + } } -