]> git.mxchange.org Git - jfinancials-lib.git/blobdiff - Addressbook/src/org/mxchange/addressbook/client/BaseClient.java
Added 'final' keyword to getters/setters as it makes no sense overwriting them.
[jfinancials-lib.git] / Addressbook / src / org / mxchange / addressbook / client / BaseClient.java
index 706229c3036de3a5c9089f01a547a4f7a2d936ef..399a6c1b9bedb891adc79f848e9ce61269ab9777 100644 (file)
  */\r
 package org.mxchange.addressbook.client;\r
 \r
+import java.util.HashMap;\r
+import java.util.Map;\r
 import org.mxchange.addressbook.BaseFrameworkSystem;\r
+import org.mxchange.addressbook.manager.contact.ContactManager;\r
+import org.mxchange.addressbook.manager.contact.ManageableContact;\r
 import org.mxchange.addressbook.menu.Menu;\r
 \r
 /**\r
@@ -36,24 +40,36 @@ public abstract class BaseClient extends BaseFrameworkSystem {
      */\r
     private boolean isRunning;\r
 \r
+    /**\r
+     * Menu system\r
+     */\r
+    private final Map<String, Menu> menus;\r
+\r
     /**\r
      * No instances can be created of this class\r
      */\r
     protected BaseClient () {\r
        super();\r
+\r
+       // Init menu map\r
+       this.menus = new HashMap<>(10);\r
     }\r
 \r
     /**\r
-     * Disables running state, so the main loop can abort.\r
+     * Shutdown method for all clients\r
      */\r
-    public void disableIsRunning () {\r
-       this.isRunning = false;\r
+    public void doShutdown () {\r
+       // Disable client\r
+       this.disableIsRunning();\r
+\r
+       // Shuts down contact manager\r
+       this.getContactManager().doShutdown();\r
     }\r
 \r
     /**\r
      * Enables the client\r
      */\r
-    public void enableIsRunning () {\r
+    public final void enableIsRunning () {\r
        this.isRunning = true;\r
     }\r
 \r
@@ -62,7 +78,7 @@ public abstract class BaseClient extends BaseFrameworkSystem {
      * \r
      * @return the currentMenu\r
      */\r
-    public String getCurrentMenu () {\r
+    public final String getCurrentMenu () {\r
        return this.currentMenu;\r
     }\r
 \r
@@ -70,17 +86,29 @@ public abstract class BaseClient extends BaseFrameworkSystem {
      * Current menu choice\r
      * @param currentMenu the currentMenu to set\r
      */\r
-    public void setCurrentMenu (final String currentMenu) {\r
+    public final void setCurrentMenu (final String currentMenu) {\r
        this.currentMenu = currentMenu;\r
     }\r
 \r
     /**\r
-     * Some kind of "getter" for a Menu instance from given menu type\r
+     * "Getter" for given menu type\r
      *\r
-     * @param menuType Menu type, e.g. "main" for main menu\r
-     * @return\r
+     * @param menuType Menu type instance to return\r
+     * @return Menu or null if not found\r
      */\r
-    public abstract Menu getMenu (final String menuType);\r
+    public Menu getMenu (final String menuType) {\r
+       // Default is not found\r
+       Menu menu = null;\r
+       \r
+       // Check array\r
+       if (this.getMenus().containsKey(menuType)) {\r
+           // Found!\r
+           menu = this.getMenus().get(menuType);\r
+       }\r
+       \r
+       // Return it\r
+       return menu;\r
+    }\r
 \r
     /**\r
      * Determines whether the application is still active by checking some\r
@@ -88,11 +116,49 @@ public abstract class BaseClient extends BaseFrameworkSystem {
      * \r
      * @return Whether the application is still active\r
      */\r
-    public boolean isRunning () {\r
+    public final boolean isRunning () {\r
        // In console client, 0 may have been used\r
        return this.isRunning;\r
     }\r
 \r
+    /**\r
+     * Disables running state, so the main loop can abort.\r
+     */\r
+    protected final void disableIsRunning () {\r
+       this.isRunning = false;\r
+    }\r
+\r
+    /**\r
+     * Fills menu map with swing menus\r
+     */\r
+    protected abstract void fillMenuMap ();\r
+\r
+    /**\r
+     * Getter for menus map\r
+     * @return Map of all menus\r
+     */\r
+    protected final Map<String, Menu> getMenus () {\r
+       return this.menus;\r
+    }\r
+\r
+    /**\r
+     * Initializes contact manager\r
+     */\r
+    protected void initContactManager () {\r
+       // Debug message\r
+       this.getLogger().debug("Initializing contact manager ...");\r
+       \r
+       // Init contact manager with console client\r
+       // @TODO Static initial amount of contacts\r
+       ManageableContact manager = new ContactManager (100, (Client) this);\r
+       \r
+       // Set it here\r
+       this.setContactManager(manager);\r
+       \r
+       // Debug message\r
+       this.getLogger().debug("Contact manager has been initialized.");\r
+    }\r
+\r
     /**\r
      * Shows given menu\r
      *\r