]> git.mxchange.org Git - addressbook-swing.git/blobdiff - src/org/mxchange/addressbook/client/BaseAddressbookClient.java
Continued:
[addressbook-swing.git] / src / org / mxchange / addressbook / client / BaseAddressbookClient.java
index a21dbec05a251aa5bb7f87f86c3e13f66b480e36..b566d764854f8681ddbc63338de9c20c27b812e8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Roland Haeder
+ * Copyright (C) 2016 - 2020 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,19 +18,23 @@ package org.mxchange.addressbook.client;
 
 import java.sql.SQLException;
 import java.text.MessageFormat;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import org.mxchange.addressbook.manager.contact.AddressbookContactManager;
-import org.mxchange.addressbook.manager.contact.ManageableContactAddressbook;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import org.mxchange.addressbook.facade.contact.AddressbookContactFacade;
+import org.mxchange.addressbook.facade.contact.ContactFacade;
 import org.mxchange.addressbook.menu.Menu;
 import org.mxchange.jcore.client.BaseClient;
-import org.mxchange.jcore.client.Client;
+import org.mxchange.jcoreeelogger.beans.local.logger.Log;
+import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal;
 
 /**
  * A general addressbook client
- *
- * @author Roland Haeder
- * TODO: Find better name
+ * <p>
+ * @author Roland Häder<roland@mxchange.org> TODO: Find better name
  */
 public abstract class BaseAddressbookClient extends BaseClient implements AddressbookClient {
 
@@ -39,6 +43,12 @@ public abstract class BaseAddressbookClient extends BaseClient implements Addres
         */
        private String currentMenu;
 
+       /**
+        * Logger instance
+        */
+       @Log
+       private LoggerBeanLocal loggerBeanLocal;
+
        /**
         * Menu system
         */
@@ -50,29 +60,42 @@ public abstract class BaseAddressbookClient extends BaseClient implements Addres
        protected BaseAddressbookClient () {
                // Init menu map
                this.menus = new HashMap<>(10);
+
+               // Try it
+               try {
+                       // Get context
+                       Context context = new InitialContext();
+
+                       // Lookup loggerBeanLocal
+                       this.loggerBeanLocal = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal"); //NOI18N
+               } catch (final NamingException ex) {
+                       // Continue to throw
+                       throw new RuntimeException(ex);
+               }
        }
 
        /**
         * Current menu choice
-        *
+        * <p>
         * @return the currentMenu
         */
-       public final String getCurrentMenu () {
+       public String getCurrentMenu () {
                return this.currentMenu;
        }
 
        @Override
-       public final void setCurrentMenu (final String currentMenu) {
+       public void setCurrentMenu (final String currentMenu) {
                this.currentMenu = currentMenu;
        }
 
        /**
         * "Getter" for given menu type
-        *
+        * <p>
         * @param menuType Menu type instance to return
+        * <p>
         * @return Menu or null if not found
         */
-       public Menu getMenu (final String menuType) {
+       private Menu getMenu (final String menuType) {
                // Default is not found
                Menu menu = null;
 
@@ -86,55 +109,88 @@ public abstract class BaseAddressbookClient extends BaseClient implements Addres
                return menu;
        }
 
+       /**
+        * Logs exception and exits program
+        * <p>
+        * @param throwable Throwable
+        */
+       protected void abortProgramWithException (final Throwable throwable) {
+               // Log exception
+               this.logException(throwable);
+
+               // Abort here
+               System.exit(1);
+       }
+
        /**
         * Fills menu map with swing menus
         */
        protected abstract void fillMenuMap ();
 
+       /**
+        * Getter for loggerBeanLocal instance
+        * <p>
+        * @return Logger instance
+        */
+       protected LoggerBeanLocal getLoggerBeanLocal () {
+               return this.loggerBeanLocal;
+       }
+
        /**
         * Getter for menus map
-        *
+        * <p>
         * @return Map of all menus
         */
-       protected final Map<String, Menu> getMenus () {
-               return this.menus;
+       protected Map<String, Menu> getMenus () {
+               return Collections.unmodifiableMap(this.menus);
        }
 
        /**
         * Initializes contact manager
-        *
+        * <p>
         * @throws java.sql.SQLException If any SQL error occurs
         */
        protected void initContactManager () throws SQLException {
                // Trace message
-               this.getLogger().trace("CALLED!"); //NOI18N
+               this.getLoggerBeanLocal().logTrace("CALLED!"); //NOI18N
 
                // Debug message
-               this.getLogger().debug("Initializing contact manager ..."); //NOI18N
+               this.getLoggerBeanLocal().logDebug("Initializing contact manager ..."); //NOI18N
 
-               // Init contact manager with console client
+               // Init contact facade with console client
                // TODO Static initial amount of contacts
-               ManageableContactAddressbook manager = new AddressbookContactManager((Client) this);
+               ContactFacade facade = new AddressbookContactFacade(this);
 
                // Set it here
-               this.setManager(manager);
+               this.setFacade(facade);
 
                // Debug message
-               this.getLogger().debug("Contact manager has been initialized."); //NOI18N
+               this.getLoggerBeanLocal().logDebug("Contact manager has been initialized."); //NOI18N
 
                // Trace message
-               this.getLogger().trace("EXIT!"); //NOI18N
+               this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
+       }
+
+       /**
+        * Logs an exception
+        * <p>
+        * @param throwable Throwable
+        */
+       protected void logException (final Throwable throwable) {
+               // Deligate to loggerBeanLocal
+               this.getLoggerBeanLocal().logException(throwable);
        }
 
        /**
         * Shows given menu
-        *
+        * <p>
         * @param menuType Given menu to show
         */
        protected void showMenu (final String menuType) {
                // Trace message
-               this.getLogger().trace(MessageFormat.format("menuType={0} - CALLED!", menuType)); //NOI18N
+               this.getLoggerBeanLocal().logTrace(MessageFormat.format("menuType={0} - CALLED!", menuType)); //NOI18N
 
+               // Get menu from type
                Menu menu = this.getMenu(menuType);
 
                // Is the menu set?
@@ -148,6 +204,6 @@ public abstract class BaseAddressbookClient extends BaseClient implements Addres
                menu.show(this);
 
                // Trace message
-               this.getLogger().trace("EXIT!"); //NOI18N
+               this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
        }
 }