From 0d0585c27b87d7baedf796acb2c1b2af8881a3bf Mon Sep 17 00:00:00 2001 From: Izzat Alsharif Date: Sun, 14 May 2023 23:46:58 +0300 Subject: [PATCH] prompter refactoring --- .../main/java/stu/najah/se/ui/Prompter.java | 51 +++++++++---------- .../java/stu/najah/se/ui/SceneManager.java | 2 +- .../najah/se/ui/control/LoginController.java | 2 +- .../najah/se/ui/control/OrdersController.java | 12 ++--- .../se/ui/control/ProductsController.java | 6 +-- .../test/ui/features/aya/Configuration.java | 2 +- .../test/ui/features/izzat/Configuration.java | 2 +- 7 files changed, 37 insertions(+), 40 deletions(-) diff --git a/ccsm-ui/src/main/java/stu/najah/se/ui/Prompter.java b/ccsm-ui/src/main/java/stu/najah/se/ui/Prompter.java index 764a472..29f62c2 100644 --- a/ccsm-ui/src/main/java/stu/najah/se/ui/Prompter.java +++ b/ccsm-ui/src/main/java/stu/najah/se/ui/Prompter.java @@ -9,34 +9,31 @@ /** * Utility class for (graphically) prompting alerts, inputs texts, dialogs, etc... */ -public final class Prompter +public abstract class Prompter implements DatabaseErrorListener, EmailConfirmationListener { - private static Prompter instance; - - public static Prompter getInstance() { - if (instance == null) { - instance = new Prompter(); + private static final Prompter adapterListener = new Prompter() { + @Override + public void onTransactionError(String message) { + Prompter.error(message); } - return instance; - } - private Prompter() { - } + @Override + public boolean onEmailConfirmation(String message) { + return Prompter.confirm(message); + } - @Override - public void onTransactionError(String message) { - error(message); - } + @Override + public void onEmailSent(String message) { + Prompter.info(message); + } + }; - @Override - public boolean onEmailConfirmation(String message) { - return confirm(message); + public static Prompter getListener() { + return adapterListener; } - @Override - public void onEmailSent(String message) { - info(message); + private Prompter() { } /** @@ -46,7 +43,7 @@ public void onEmailSent(String message) { * @param type only use INFORMATION, WARNING, or ERROR * because they don't have multiple buttons */ - private void prompt(String message, Alert.AlertType type) { + private static void prompt(String message, Alert.AlertType type) { var alert = new Alert(type); alert.initModality(Modality.APPLICATION_MODAL); alert.setContentText(message); @@ -59,7 +56,7 @@ private void prompt(String message, Alert.AlertType type) { * @param message to be displayed * @return true if OK was pressed, false otherwise */ - public boolean confirm(String message) { + public static boolean confirm(String message) { var alert = new Alert(Alert.AlertType.CONFIRMATION); alert.initModality(Modality.APPLICATION_MODAL); alert.setContentText(message); @@ -72,7 +69,7 @@ public boolean confirm(String message) { * * @param message to be displayed */ - public void info(String message) { + public static void info(String message) { prompt(message, Alert.AlertType.INFORMATION); } @@ -81,7 +78,7 @@ public void info(String message) { * * @param message to be displayed */ - public void warning(String message) { + public static void warning(String message) { prompt(message, Alert.AlertType.WARNING); } @@ -90,7 +87,7 @@ public void warning(String message) { * * @param message to be displayed */ - public void error(String message) { + public static void error(String message) { prompt(message, Alert.AlertType.ERROR); } @@ -99,12 +96,12 @@ public void error(String message) { * * @param e it's message will be displayed */ - public void error(Exception e) { + public static void error(Exception e) { prompt(e.getMessage(), Alert.AlertType.ERROR); } - public void loginError() { + public static void loginError() { error("Login failed. Please check your username and password and try again."); } diff --git a/ccsm-ui/src/main/java/stu/najah/se/ui/SceneManager.java b/ccsm-ui/src/main/java/stu/najah/se/ui/SceneManager.java index b5ab790..72cc259 100644 --- a/ccsm-ui/src/main/java/stu/najah/se/ui/SceneManager.java +++ b/ccsm-ui/src/main/java/stu/najah/se/ui/SceneManager.java @@ -53,7 +53,7 @@ public static SceneManager getInstance() { */ public static void main(String[] args) { ServiceManager.initializeAdminService(); - ServiceManager.initializeEntityServices(Prompter.getInstance(), Prompter.getInstance()); + ServiceManager.initializeEntityServices(Prompter.getListener(), Prompter.getListener()); Application.launch(args); } diff --git a/ccsm-ui/src/main/java/stu/najah/se/ui/control/LoginController.java b/ccsm-ui/src/main/java/stu/najah/se/ui/control/LoginController.java index 9751880..9c6753b 100644 --- a/ccsm-ui/src/main/java/stu/najah/se/ui/control/LoginController.java +++ b/ccsm-ui/src/main/java/stu/najah/se/ui/control/LoginController.java @@ -41,7 +41,7 @@ private void login() { textFieldPassword.getText() ); } catch (IllegalArgumentException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } } } diff --git a/ccsm-ui/src/main/java/stu/najah/se/ui/control/OrdersController.java b/ccsm-ui/src/main/java/stu/najah/se/ui/control/OrdersController.java index 72c619e..1d88f77 100644 --- a/ccsm-ui/src/main/java/stu/najah/se/ui/control/OrdersController.java +++ b/ccsm-ui/src/main/java/stu/najah/se/ui/control/OrdersController.java @@ -184,7 +184,7 @@ private void updateOrderProduct() { try { orderProductService.updateOrderProduct(createProductFromTextFields()); } catch (NumberFormatException | IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshOrderProductsTable(); } @@ -195,7 +195,7 @@ private void deleteOrderProduct() { try { orderProductService.deleteOrderProduct(); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshOrderProductsTable(); refreshAvailableProducts(); @@ -207,7 +207,7 @@ private void createOrderProduct() { try { orderProductService.createAndSelectOrderProduct(createProductFromTextFields()); } catch (NumberFormatException | IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshOrderProductsTable(); refreshAvailableProducts(); @@ -219,7 +219,7 @@ private void createOrder() { try { orderService.createAndSelectOrder(); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshOrdersTable(); } @@ -230,7 +230,7 @@ private void deleteOrder() { try { orderService.deleteOrder(); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshOrdersTable(); } @@ -241,7 +241,7 @@ private void notifyCustomer() { try { orderService.notifyCustomer(); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } } diff --git a/ccsm-ui/src/main/java/stu/najah/se/ui/control/ProductsController.java b/ccsm-ui/src/main/java/stu/najah/se/ui/control/ProductsController.java index ad54b54..3c16de1 100644 --- a/ccsm-ui/src/main/java/stu/najah/se/ui/control/ProductsController.java +++ b/ccsm-ui/src/main/java/stu/najah/se/ui/control/ProductsController.java @@ -112,7 +112,7 @@ private void createProduct() { textFieldDescription.getText() )); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshTable(); } @@ -125,7 +125,7 @@ private void updateProduct() { textFieldDescription.getText() )); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshTable(); } @@ -136,7 +136,7 @@ private void deleteProduct() { try { productService.deleteProduct(); } catch (IllegalStateException e) { - Prompter.getInstance().error(e); + Prompter.error(e); } finally { refreshTable(); } diff --git a/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/aya/Configuration.java b/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/aya/Configuration.java index 5bcb7cf..b320b26 100644 --- a/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/aya/Configuration.java +++ b/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/aya/Configuration.java @@ -14,7 +14,7 @@ public class Configuration { @BeforeAll public static void launch() throws Exception { ServiceManager.initializeAdminService(); - ServiceManager.initializeEntityServices(Prompter.getInstance(), Prompter.getInstance()); + ServiceManager.initializeEntityServices(Prompter.getListener(), Prompter.getListener()); ApplicationTest.launch(SceneManager.class); } diff --git a/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/izzat/Configuration.java b/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/izzat/Configuration.java index af4fded..f70b144 100644 --- a/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/izzat/Configuration.java +++ b/ccsm-ui/src/test/java/stu/najah/se/test/ui/features/izzat/Configuration.java @@ -26,7 +26,7 @@ private void setHeadlessMode() { @BeforeAll public static void launch() throws Exception { ServiceManager.initializeAdminService(); - ServiceManager.initializeEntityServices(Prompter.getInstance(), Prompter.getInstance()); + ServiceManager.initializeEntityServices(Prompter.getListener(), Prompter.getListener()); ApplicationTest.launch(SceneManager.class); }