From 8f39e6c8e605ac61f32e40e65418821bf2949e5a Mon Sep 17 00:00:00 2001
From: Roland Haeder <roland@mxchange.org>
Date: Wed, 30 Sep 2015 09:25:03 +0200
Subject: [PATCH] =?utf8?q?Continued:=20-=20fixed=20some=20errors=20(not=20?=
 =?utf8?q?all)=20-=20updated=20jars=20Signed-off-by:Roland=20H=C3=A4der=20?=
 =?utf8?q?<roland@mxchange.org>?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

---
 lib/jcore-logger-lib.jar                      | Bin 2505 -> 2496 bytes
 lib/jcore-swing.jar                           | Bin 6780 -> 6826 bytes
 lib/jcore.jar                                 | Bin 29583 -> 30691 bytes
 .../addressbook/BaseAddressbookSystem.java    |  12 ++--
 .../application/AddressbookApplication.java   |  62 +++++++++++++++---
 .../addressbook/client/AddressbookClient.java |   4 +-
 .../client/BaseAddressbookClient.java         |   2 +
 .../client/console/ConsoleClient.java         |   8 ++-
 .../addressbook/client/gui/SwingClient.java   |   5 ++
 .../contact/AddressbookContactManager.java    |  10 ++-
 .../mxchange/addressbook/menu/BaseMenu.java   |   3 +-
 src/org/mxchange/addressbook/menu/Menu.java   |   3 +-
 .../mxchange/addressbook/menu/MenuTools.java  |   9 ++-
 13 files changed, 92 insertions(+), 26 deletions(-)

diff --git a/lib/jcore-logger-lib.jar b/lib/jcore-logger-lib.jar
index e03e3ca7f07b8329c9394a969445845a637d6cb3..463d15b1a912757aca434cba7c2b1b3e7270e54b 100644
GIT binary patch
delta 448
zcmX>pd_b5tz?+$ci-CcIfkE5bZX&OSpq96t`(csvx#<iH3?M8rS%6)9Vyv;a2``s(
zQEFmIYKpE?rImuAp1GbuyqWpL4eHDwt+(XC)E^BHHCdg}3`{35+JNc#j80(s38N>7
z-fX~RzyxL_vjl?~lXtRN@S@l~`5&8UJy5MX&=GLJ0%r*@ymdSR<mDHo>j!u<GKnz5
zy@8^G7e&W2sE*u<<c!3;^i;fBr5WIwLAD7_-p{TD_Qe}^X+|#~Pj0dR6We4R4j!<m
zHHS1~CsdS&AI(jZCje#7L1jfJ-{;_hn8YE?B*irO0J|*EDB;QZOq>`R139Icd|BX1
N=5eaBEo1|E3INg8T3P@A

delta 443
zcmX>gd{US<z?+$ci-CcIfuXO{b|S9^Z*QlqyX_{8M+FQF3<VRN{1nW1xtxnq6H8K4
zbe$@#6b$t&^bF$7%ycvJN>YpR5_2XlS7!$4y(kZ+K5Kxe$#RTlU^<-9224+5bOO`2
z89hPtW_2b5CNLw4B^b<@yn)RE)$++-*-XKDblIiF&jOv3UzDyN;LXS+!VGuu<al;z
z#`lw}*=4{gX90OqlmD~JX``ug2Wp1{ML0`<;jLpZP`!Zy&`l_6)KSz-Vw}XOIk|#^
z2Sc46in{ASbp{xAYx~`Lc#n~R0ff!r>KPc8G%8R2&*26(ld(tc{%4>(2s@*w31gYW
TX*_uji_qj%oC0jC*g%p1nObL)

diff --git a/lib/jcore-swing.jar b/lib/jcore-swing.jar
index 224efdf7f20ff51381fa6924d96d1004ef09eb1b..bcf9b93079c88d93034bb5b39be2ae8e5c77b143 100644
GIT binary patch
delta 1249
zcma)5O=uHA6n-<i*-ewKnkL;%cC|^V(Ae~sByFu)wY9{OA_1k)Lb0(8X|-*n6s<Q4
zJt+$1U5e;UJQNC%C<Q%;zX!pysNhWx1#jN$!I|j~Olq+Uv)|0y_kH{3{cI#wl13)2
zs2%_}Kx4Xl$%y)5>F(6qK>kr40Qd^vf@v*{#I1zk>7C7G=W^psJ-50dZOt9ct(V(7
zmWuTXr+y6!*obn#dJ-2nLb?P#Al(ALk>dg_dRpKRO&QET^&@eIPE&wsT&3qcjt-^{
zmJUJuLsz^Z0_x<<<eUyR7L{PMa;lK;n;*+vpPMYq5C}#Gu4Zp!Tc)xz`Ibu)vxS@4
zD^s}>#|BFu6pau!ep35es{m92e$d&K2n5)hLbY`H)N6dc_S*%(R}(&^4xXVJX0(dZ
zge$4mjDx~B01k;g0plgOhN`qR&|ft?1Jw`sq9T0JhIXiCF6O2qLyMgl1#Gqm9A<k3
z$U(L}0yXUIXNLdi#yniNXHVU*tQ&#Q{&XJ--3xo_mc?7U-*^pgIAp`{zjd+CTgU5O
zy5@aDe7x}H`HzKV)_r{SZY8}E?^8G4KH$SqTPrOZ2`%2qF2$42GOZOEQkG8ujadQW
zBCne{S4Co(5!BMU{}dHX)?juTQd?ueOeXo?x#RYuZg1ca{5t!NoeH!0mQ0$^fU+|o
z_{DTi{@nUDJwG<VdM;P)B*_LPSs%7qVqS3Aa!87u9Q<zSxNKF1%LA&Dn2TG!R;1jo
zM)G@4FdK}-%HoznIw}zejt1kqL>ncaUW&DLb7Q&a&eXEfBz6b@j~DJyY_n{3H7|aq
uzFkCV)Fk47i-*sr4wpk!qI|0%hu-xH^Loe<X_C4|;%6{o4{H4;H~t0TcF>yu

delta 1128
zcmaJ=O=uHQ5T3WY$)>xm(M`HPN!z4GNTepQHi>OYENu^^R3xBC4XA`R)WsSl=3oU6
zJxLG##0RYxJr#t4NDX)s(UTVi1rORw>&26`)vE{Jd#Neg#4OBw``&)v%+4^glKhiU
zvJ<=@0k{AjEMzK5<ly~<%vk0{<lA)spytKTHNA47FPKuK(NZB_E=)&9=F-95Sbyx;
zrBo_v70ZQEF+W>*8s>?(@-e{RcZ34&LVXO+qBO$_I?3=88eq7e8)BH{##rjbP3Pnw
z2S6=>*O4E;)<rxdxbYXxEtw*CMQ9g6!@szdZXJPO6|J%e1_H&pF;3pC{H%4WFpYqZ
z9LZI`^G<|ByeW)FL{ba_m3R(3yJgdQ->iLpw&ehz79~l$@hj6^U2?>QwkhBVAHau)
zCC`BB>UjxmtK`gsmv|Kf;^W|eUT{MaOh`dHxzTDGf;u@-b%)epkA+lxP70VNjQmG&
zuZiLvQ=D$DcqlifNXs-uuDJl0<PdFs^^yD*sk9Ma@0>rgL}r27DBukvhHv}y>Z+1(
zN+(G7XeW3TZ+SXp9y+0m6~|W%Z-(Q^{NPEgU!ig81B4%I$pF1!%pFI2R(lS>kKy-t
zTl3`ha+H4*pq!uNbgeWKzj|}(a=tiIh-W7d=jCgIyH{%1q&~c@`|+H<ui-ZWHeQzS
z4)wH(8?y2568`aqn6-{jBK_?TEcX+avt``Fwzv{rH^MFXM{WF5gg+RhJ+Q4#odd8u
zzsTVY<g0Je6;ovb+t}L#AqNoz$rkw8a;}+v?xM`D44=-l_DR_lFVBaRow*4+{Tlu7
E7kF^j$N&HU

diff --git a/lib/jcore.jar b/lib/jcore.jar
index af5610d8249b2810fa4e15fbf2d0d48adaaba8dc..848bebf4503c8caeeb9557874ffa4a124337d3fb 100644
GIT binary patch
delta 4102
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

delta 3444
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

diff --git a/src/org/mxchange/addressbook/BaseAddressbookSystem.java b/src/org/mxchange/addressbook/BaseAddressbookSystem.java
index 90674c7..6f4ec4a 100644
--- a/src/org/mxchange/addressbook/BaseAddressbookSystem.java
+++ b/src/org/mxchange/addressbook/BaseAddressbookSystem.java
@@ -20,11 +20,12 @@ import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import org.mxchange.jcore.BaseFrameworkSystem;
+import org.mxchange.jcoreeelogger.beans.local.logger.Log;
 import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal;
 
 /**
  * A general addressbook class
- *
+ * <p>
  * @author Roland Haeder
  */
 public abstract class BaseAddressbookSystem extends BaseFrameworkSystem {
@@ -32,6 +33,7 @@ public abstract class BaseAddressbookSystem extends BaseFrameworkSystem {
 	/**
 	 * Logger instance
 	 */
+	@Log
 	private LoggerBeanLocal logger;
 
 	/**
@@ -41,7 +43,7 @@ public abstract class BaseAddressbookSystem extends BaseFrameworkSystem {
 		try {
 			// Get initial 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) {
@@ -52,7 +54,7 @@ public abstract class BaseAddressbookSystem extends BaseFrameworkSystem {
 
 	/**
 	 * Getter for logger instance
-	 *
+	 * <p>
 	 * @return Logger instance
 	 */
 	protected LoggerBeanLocal getLogger () {
@@ -61,7 +63,7 @@ public abstract class BaseAddressbookSystem extends BaseFrameworkSystem {
 
 	/**
 	 * Logs given exception
-	 *
+	 * <p>
 	 * @param exception Throwable
 	 */
 	protected void logException (final Throwable exception) {
@@ -70,7 +72,7 @@ public abstract class BaseAddressbookSystem extends BaseFrameworkSystem {
 
 	/**
 	 * Log exception and abort program.
-	 *
+	 * <p>
 	 * @param throwable Throwable
 	 */
 	protected void abortProgramWithException (final Throwable throwable) {
diff --git a/src/org/mxchange/addressbook/application/AddressbookApplication.java b/src/org/mxchange/addressbook/application/AddressbookApplication.java
index 2859e5c..4f07e31 100644
--- a/src/org/mxchange/addressbook/application/AddressbookApplication.java
+++ b/src/org/mxchange/addressbook/application/AddressbookApplication.java
@@ -19,14 +19,19 @@ package org.mxchange.addressbook.application;
 import java.io.IOException;
 import java.sql.SQLException;
 import java.text.MessageFormat;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
 import org.mxchange.addressbook.client.AddressbookClient;
 import org.mxchange.addressbook.client.console.ConsoleClient;
 import org.mxchange.addressbook.client.gui.SwingClient;
 import org.mxchange.jcore.application.Application;
 import org.mxchange.jcore.application.BaseApplication;
 import org.mxchange.jcore.client.Client;
+import org.mxchange.jcore.exceptions.MenuInitializationException;
 import org.mxchange.jcore.exceptions.UnhandledUserChoiceException;
 import org.mxchange.jcore.manager.application.ApplicationManager;
+import org.mxchange.jcoreeelogger.beans.local.logger.Log;
 import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal;
 
 /**
@@ -60,21 +65,30 @@ public class AddressbookApplication extends BaseApplication implements Applicati
 	/**
 	 * Logger instance
 	 */
+	@Log
 	private LoggerBeanLocal logger;
 
 	/**
 	 * Protected constructor
 	 */
 	protected AddressbookApplication () {
-		// Init properties file
-		this.initProperties();
+		// Try this
+		try {
+			// Get context
+			Context context = new InitialContext();
 
-		// Is the bundle initialized?
-		if (!isBundledInitialized()) {
-			// Temporary initialize default bundle
-			// TODO The enum Gender uses this
-			this.initBundle();
+			// Get logger
+			this.logger = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal");
+		} catch (final NamingException ex) {
+			// Output it and exit
+			System.err.println(MessageFormat.format("Cannot initialize: {0}", ex));
+
+			// Abort here
+			System.exit(1);
 		}
+
+		// Call init method
+		this.init();
 	}
 
 	/**
@@ -132,7 +146,7 @@ public class AddressbookApplication extends BaseApplication implements Applicati
 	 * Main loop of the application
 	 */
 	@Override
-	public void doMainLoop () {
+	public void doMainLoop () throws MenuInitializationException {
 		// Get client and cast it
 		AddressbookClient client = (AddressbookClient) this.getClient();
 
@@ -155,6 +169,7 @@ public class AddressbookApplication extends BaseApplication implements Applicati
 				// Ask for user input and run proper method
 				client.doUserMenuChoice();
 			} catch (final UnhandledUserChoiceException ex) {
+				// Log exception
 				this.getLogger().logException(ex);
 			}
 
@@ -182,10 +197,32 @@ public class AddressbookApplication extends BaseApplication implements Applicati
 		// Shutdown client
 		this.getClient().doShutdown();
 
+		// Regular exit reached
 		this.getLogger().logInfo("End of program (last line)"); //NOI18N
 		System.exit(0);
 	}
 
+	/**
+	 * Initializes this application
+	 */
+	private void init () {
+		// Try this
+		try {
+			// Init properties file
+			this.initProperties();
+		} catch (final IOException ex) {
+			// Abort here
+			this.abortProgramWithException(ex);
+		}
+
+		// Is the bundle initialized?
+		if (!isBundledInitialized()) {
+			// Temporary initialize default bundle
+			// TODO The enum Gender uses this
+			this.initBundle();
+		}
+	}
+
 	/**
 	 * Logs given exception
 	 *
@@ -312,8 +349,13 @@ public class AddressbookApplication extends BaseApplication implements Applicati
 		// Parse arguments
 		this.parseArguments(args);
 
-		// Launch application
-		ApplicationManager.getSingeltonManager(this).start();
+		try {
+			// Launch application
+			ApplicationManager.getSingeltonManager(this).start();
+		} catch (final MenuInitializationException ex) {
+			// Something bad happened
+			this.abortProgramWithException(ex);
+		}
 
 		// Good bye, but this should not be reached ...
 		this.getLogger().logWarning("Unusual exit reached."); //NOI18N
diff --git a/src/org/mxchange/addressbook/client/AddressbookClient.java b/src/org/mxchange/addressbook/client/AddressbookClient.java
index e884edb..c53c27d 100644
--- a/src/org/mxchange/addressbook/client/AddressbookClient.java
+++ b/src/org/mxchange/addressbook/client/AddressbookClient.java
@@ -16,6 +16,7 @@
  */
 package org.mxchange.addressbook.client;
 
+import org.mxchange.jcore.exceptions.MenuInitializationException;
 import org.mxchange.addressbook.menu.item.SelectableMenuItem;
 import org.mxchange.jcore.client.Client;
 import org.mxchange.jcore.exceptions.UnhandledUserChoiceException;
@@ -78,8 +79,9 @@ public interface AddressbookClient extends Client {
 	 * Asks the user for a choice and proceeds accordingly
 	 * <p>
 	 * @throws UnhandledUserChoiceException If choice is not supported
+	 * @throws org.mxchange.jcore.exceptions.MenuInitializationException If the menu cannot be initialized
 	 */
-	public void doUserMenuChoice () throws UnhandledUserChoiceException;
+	public void doUserMenuChoice () throws UnhandledUserChoiceException, MenuInitializationException;
 
 	/**
 	 * Asks the the user to enter a single character which must match validChars
diff --git a/src/org/mxchange/addressbook/client/BaseAddressbookClient.java b/src/org/mxchange/addressbook/client/BaseAddressbookClient.java
index 094d0ec..00a55bd 100644
--- a/src/org/mxchange/addressbook/client/BaseAddressbookClient.java
+++ b/src/org/mxchange/addressbook/client/BaseAddressbookClient.java
@@ -28,6 +28,7 @@ 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.Log;
 import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal;
 
 /**
@@ -50,6 +51,7 @@ public abstract class BaseAddressbookClient extends BaseClient implements Addres
 	/**
 	 * Logger instance
 	 */
+	@Log
 	private LoggerBeanLocal logger;
 
 	/**
diff --git a/src/org/mxchange/addressbook/client/console/ConsoleClient.java b/src/org/mxchange/addressbook/client/console/ConsoleClient.java
index 5deface..b01739e 100644
--- a/src/org/mxchange/addressbook/client/console/ConsoleClient.java
+++ b/src/org/mxchange/addressbook/client/console/ConsoleClient.java
@@ -26,6 +26,7 @@ import org.mxchange.addressbook.application.AddressbookApplication;
 import org.mxchange.addressbook.client.AddressbookClient;
 import org.mxchange.addressbook.client.BaseAddressbookClient;
 import org.mxchange.addressbook.exceptions.ContactAlreadyAddedException;
+import org.mxchange.jcore.exceptions.MenuInitializationException;
 import org.mxchange.addressbook.manager.contact.ManageableContactAddressbook;
 import org.mxchange.addressbook.menu.Menu;
 import org.mxchange.addressbook.menu.MenuTools;
@@ -311,7 +312,7 @@ public class ConsoleClient extends BaseAddressbookClient implements AddressbookC
 	}
 
 	@Override
-	public void doUserMenuChoice () throws UnhandledUserChoiceException {
+	public void doUserMenuChoice () throws UnhandledUserChoiceException, MenuInitializationException {
 		// Trace message
 		this.getLogger().logTrace("CALLED!"); //NOI18N
 
@@ -530,6 +531,11 @@ public class ConsoleClient extends BaseAddressbookClient implements AddressbookC
 		System.out.println(message);
 	}
 
+	@Override
+	public void show (final Contact contact) {
+		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+	}
+
 	@Override
 	public void showCurrentMenu () {
 		this.showMenu(this.getCurrentMenu());
diff --git a/src/org/mxchange/addressbook/client/gui/SwingClient.java b/src/org/mxchange/addressbook/client/gui/SwingClient.java
index d2316ce..8d91d07 100644
--- a/src/org/mxchange/addressbook/client/gui/SwingClient.java
+++ b/src/org/mxchange/addressbook/client/gui/SwingClient.java
@@ -197,6 +197,11 @@ public class SwingClient extends BaseAddressbookClient implements AddressbookCli
 		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
 	}
 
+	@Override
+	public void show (final Contact contact) {
+		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+	}
+
 	@Override
 	public void showCurrentMenu () {
 		// Debug message
diff --git a/src/org/mxchange/addressbook/manager/contact/AddressbookContactManager.java b/src/org/mxchange/addressbook/manager/contact/AddressbookContactManager.java
index beafc29..d5833c4 100644
--- a/src/org/mxchange/addressbook/manager/contact/AddressbookContactManager.java
+++ b/src/org/mxchange/addressbook/manager/contact/AddressbookContactManager.java
@@ -31,6 +31,7 @@ import org.mxchange.jcore.exceptions.UnhandledUserChoiceException;
 import org.mxchange.jcore.manager.BaseManager;
 import org.mxchange.jcore.model.contact.Contact;
 import org.mxchange.jcore.model.contact.gender.Gender;
+import org.mxchange.jcoreeelogger.beans.local.logger.Log;
 import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal;
 
 /**
@@ -54,6 +55,7 @@ public class AddressbookContactManager extends BaseManager implements Manageable
 	/**
 	 * Logger instance
 	 */
+	@Log
 	private LoggerBeanLocal logger;
 
 	/**
@@ -647,8 +649,12 @@ public class AddressbookContactManager extends BaseManager implements Manageable
 		return isAdded;
 	}
 
-	@Override
-	public void logException (final Throwable exception) {
+	/**
+	 * Logs given exception
+	 * <p>
+	 * @param exception Throwable
+	 */
+	protected void logException (final Throwable exception) {
 		this.getLogger().logException(exception);
 	}
 
diff --git a/src/org/mxchange/addressbook/menu/BaseMenu.java b/src/org/mxchange/addressbook/menu/BaseMenu.java
index ad8c2e5..019c8e0 100644
--- a/src/org/mxchange/addressbook/menu/BaseMenu.java
+++ b/src/org/mxchange/addressbook/menu/BaseMenu.java
@@ -25,10 +25,11 @@ import org.mxchange.addressbook.menu.item.SelectableMenuItem;
 import org.mxchange.jcore.client.Client;
 
 /**
+ * A general menu class
  *
  * @author Roland Haeder
  */
-public class BaseMenu extends BaseAddressbookSystem {
+public abstract class BaseMenu extends BaseAddressbookSystem {
 
 	/**
 	 * Menu list
diff --git a/src/org/mxchange/addressbook/menu/Menu.java b/src/org/mxchange/addressbook/menu/Menu.java
index e027a47..909d2ef 100644
--- a/src/org/mxchange/addressbook/menu/Menu.java
+++ b/src/org/mxchange/addressbook/menu/Menu.java
@@ -21,7 +21,8 @@ import org.mxchange.addressbook.menu.item.SelectableMenuItem;
 import org.mxchange.jcore.client.Client;
 
 /**
- *
+ * An interface for menus
+ * <p>
  * @author Roland Haeder TODO find better name
  */
 public interface Menu {
diff --git a/src/org/mxchange/addressbook/menu/MenuTools.java b/src/org/mxchange/addressbook/menu/MenuTools.java
index 54d7c96..9f42475 100644
--- a/src/org/mxchange/addressbook/menu/MenuTools.java
+++ b/src/org/mxchange/addressbook/menu/MenuTools.java
@@ -16,11 +16,11 @@
  */
 package org.mxchange.addressbook.menu;
 
-import java.text.MessageFormat;
 import java.util.Iterator;
 import java.util.Map;
 import org.mxchange.addressbook.BaseAddressbookSystem;
 import org.mxchange.addressbook.menu.item.SelectableMenuItem;
+import org.mxchange.jcore.exceptions.MenuInitializationException;
 
 /**
  * Menu utilities
@@ -36,17 +36,16 @@ public class MenuTools extends BaseAddressbookSystem {
 	 * @param menus A Map with all menus and their entries
 	 * @param menuType Menu type
 	 * @return An array with available access chars
+	 * @throws org.mxchange.jcore.exceptions.MenuInitializationException If the menu cannot be initialized
 	 */
-	public static char[] getAccessKeysFromMenuMap (final Map<String, Menu> menus, final String menuType) {
+	public static char[] getAccessKeysFromMenuMap (final Map<String, Menu> menus, final String menuType) throws MenuInitializationException {
 		// First search for the proper menu class
 		Menu menu = menus.get(menuType);
 
 		// Is it there?
 		if (!(menu instanceof Menu)) {
 			// Not found
-			// TODO Rewrite to exception
-			System.err.println(MessageFormat.format("menu is not implementing Menu: {0}", menu)); //NOI18N
-			System.exit(1);
+			throw new MenuInitializationException(menu, menuType);
 		}
 
 		// Get iterator
-- 
2.39.5