import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
import org.mxchange.addressbook.manager.contact.AddressbookContactManager;
-import org.mxchange.addressbook.manager.contact.ManageableAddressbookContact;
+import org.mxchange.addressbook.manager.contact.ManageableContactAddressbook;
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.LoggerBeanLocal;
/**
* A general addressbook client
- *
- * @author Roland Haeder
- * TODO: Find better name
+ * <p>
+ * @author Roland Haeder TODO: Find better name
*/
public abstract class BaseAddressbookClient extends BaseClient implements AddressbookClient {
*/
private final Map<String, Menu> menus;
+ /**
+ * Logger instance
+ */
+ private LoggerBeanLocal logger;
+
/**
* No instances can be created of this class
*/
protected BaseAddressbookClient () {
// Init menu map
this.menus = new HashMap<>(10);
+
+ // Try it
+ try {
+ // Get context
+ Context context = new InitialContext();
+
+ // Lookup logger
+ this.logger = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal");
+ } catch (final NamingException ex) {
+ // Continue to throw
+ throw new RuntimeException(ex);
+ }
}
/**
* Current menu choice
- *
+ * <p>
* @return the currentMenu
*/
public final String getCurrentMenu () {
/**
* "Getter" for given menu type
- *
+ * <p>
* @param menuType Menu type instance to return
* @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;
/**
* Getter for menus map
- *
+ * <p>
* @return Map of all menus
*/
protected final Map<String, Menu> getMenus () {
/**
* 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.getLogger().logTrace("CALLED!"); //NOI18N
// Debug message
- this.getLogger().debug("Initializing contact manager ..."); //NOI18N
+ this.getLogger().logDebug("Initializing contact manager ..."); //NOI18N
// Init contact manager with console client
// TODO Static initial amount of contacts
- ManageableAddressbookContact manager = new AddressbookContactManager((Client) this);
+ ManageableContactAddressbook manager = new AddressbookContactManager((Client) this);
// Set it here
this.setManager(manager);
// Debug message
- this.getLogger().debug("Contact manager has been initialized."); //NOI18N
+ this.getLogger().logDebug("Contact manager has been initialized."); //NOI18N
// Trace message
- this.getLogger().trace("EXIT!"); //NOI18N
+ this.getLogger().logTrace("EXIT!"); //NOI18N
}
/**
* 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.getLogger().logTrace(MessageFormat.format("menuType={0} - CALLED!", menuType)); //NOI18N
+ // Get menu from type
Menu menu = this.getMenu(menuType);
// Is the menu set?
menu.show(this);
// Trace message
- this.getLogger().trace("EXIT!"); //NOI18N
+ this.getLogger().logTrace("EXIT!"); //NOI18N
+ }
+
+ /**
+ * Getter for logger instance
+ *
+ * @return Logger instance
+ */
+ protected LoggerBeanLocal getLogger () {
+ return this.logger;
+ }
+
+ /**
+ * Logs an exception
+ *
+ * @param throwable Throwable
+ */
+ protected void logException (final Throwable throwable) {
+ // Deligate to logger
+ this.getLogger().logException(throwable);
+ }
+
+ /**
+ * Logs exception and exits program
+ *
+ * @param throwable Throwable
+ */
+ protected void abortProgramWithException (final Throwable throwable) {
+ // Log exception
+ this.logException(throwable);
+
+ // Abort here
+ System.exit(1);
}
}