/*
- * Copyright (C) 2015 Roland Haeder
+ * Copyright (C) 2016 Roland Häder
*
* 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
package org.mxchange.addressbook.client.console;
import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.Arrays;
import org.mxchange.jcore.application.Application;
import org.mxchange.jcore.exceptions.MenuInitializationException;
import org.mxchange.jcore.exceptions.UnhandledUserChoiceException;
+import org.mxchange.jcountry.data.Country;
+import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
+import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
+import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
/**
* A client for the console
* <p>
- * @author Roland Haeder
+ * @author Roland Häder<roland@mxchange.org>
*/
public class ConsoleClient extends BaseAddressbookClient implements AddressbookClient {
*/
public ConsoleClient (final Application application) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("application={0} - CALLED!", application)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("application={0} - CALLED!", application)); //NOI18N
// Set application instance
this.setApplication(application);
this.scanner = new Scanner(System.in, "UTF-8"); //NOI18N
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void displayAddressBox (final Contact contact) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
// Is it null?
if (null == contact) {
}
// Simple display ...
- this.outputMessage(MessageFormat.format("Strasse, PLZ Ort, Land: {0}\n{1} {2}\n{3}", contact.getStreet(), contact.getZipCode(), contact.getCity(), contact.getCountryCode()));
+ this.outputMessage(MessageFormat.format("Strasse, PLZ Ort, Land: {0}\n{1} {2}\n{3}", contact.getContactStreet(), contact.getContactZipCode(), contact.getContactCity(), contact.getContactCountry()));
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void displayNameBox (final Contact contact) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
// Is it null?
if (null == contact) {
// Get translated gender as the user may want to see "Mr.", "Mrs."
String gender = GenderUtils.getTranslatedGender(contact);
- // Get company name
- String companyName = contact.getCompanyName();
-
- // If it is empty/null, then assume private contact
- if ((null == companyName) || (companyName.isEmpty())) {
- // Now put all together: gender, surname, family name
- // TODO Use mask
- this.outputMessage(MessageFormat.format("Anrede, Vorname, Name: {0} {1} {2}", gender, contact.getFirstName(), contact.getFamilyName()));
- } else {
- // Company contact
- this.outputMessage(MessageFormat.format("Firma: {0}\nAnsprechpartner: {1} {2} {3}", companyName, gender, contact.getFirstName(), contact.getFamilyName()));
- }
+ // Now put all together: gender, surname, family name
+ this.outputMessage(MessageFormat.format("Anrede, Vorname, Name: {0} {1} {2}", gender, contact.getContactFirstName(), contact.getContactFamilyName()));
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void displayOtherDataBox (final Contact contact) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
// Is it null?
if (null == contact) {
throw new NullPointerException("contact is null"); //NOI18N
}
- // Cellphone and such ...
- this.outputMessage(MessageFormat.format("Telefonnumer: {0}\nFaxnummer: {1}\nHandy: {2}\nKommentar:\n{3}", contact.getPhoneNumber(), contact.getFaxNumber(), contact.getCellphoneNumber(), contact.getComment()));
+ // Mobile and such ...
+ this.outputMessage(MessageFormat.format("Telefonnumer: {0}\nFaxnummer: {1}\nHandy: {2}\nKommentar:\n{3}", contact.getContactLandLineNumber(), contact.getContactFaxNumber(), contact.getContactMobileNumber(), contact.getContactComment()));
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void doChangeOwnAddressData (final Contact contact) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
// Is it null?
if (null == contact) {
String city = manager.enterOwnCity();
// Get country code
- String countryCode = manager.enterOwnCountryCode();
+ Country country = manager.enterOwnCountryCode();
// Update address data
- contact.setStreet(streetNumber);
- contact.setZipCode(zipCode);
- contact.setCity(city);
- contact.setCountryCode(countryCode);
+ contact.setContactStreet(streetNumber);
+ contact.setContactZipCode(zipCode);
+ contact.setContactCity(city);
+ contact.setContactCountry(country);
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void doChangeOwnNameData (final Contact contact) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
// Is it null?
if (null == contact) {
// Family name
String familyName = manager.enterOwnFamilyName();
- // And company
- String companyName = manager.enterOwnCompanyName();
-
// Update contact instance
- contact.setGender(gender);
- contact.setFirstName(firstName);
- contact.setFamilyName(familyName);
- contact.setCompanyName(companyName);
+ contact.setContactGender(gender);
+ contact.setContactFirstName(firstName);
+ contact.setContactFamilyName(familyName);
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void doChangeOwnOtherData (final Contact contact) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - CALLED!", contact)); //NOI18N
// Is it null?
if (null == contact) {
ContactFacade manager = (ContactFacade) this.getFacade();
// Phone number
- String phoneNumber = manager.enterOwnPhoneNumber();
+ DialableLandLineNumber phoneNumber = manager.enterOwnPhoneNumber();
// Phone number
- String cellphonePhoneNumber = manager.enterOwnCellNumber();
+ DialableMobileNumber mobileNumber = manager.enterOwnCellNumber();
// Fax number
- String faxNumber = manager.enterOwnFaxNumber();
+ DialableFaxNumber faxNumber = manager.enterOwnFaxNumber();
// Email address
String email = manager.enterOwnEmailAddress();
String comment = manager.enterOwnComment();
// Update contact instance
- contact.setPhoneNumber(phoneNumber);
- contact.setCellphoneNumber(cellphonePhoneNumber);
- contact.setFaxNumber(faxNumber);
- contact.setEmailAddress(email);
- contact.setComment(comment);
+ contact.setContactLandLineNumber(phoneNumber);
+ contact.setContactMobileNumber(mobileNumber);
+ contact.setContactFaxNumber(faxNumber);
+ contact.setContactEmailAddress(email);
+ contact.setContactComment(comment);
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public Contact doEnterOwnData () {
// Trace message
- this.getLogger().logTrace("CALLED!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("CALLED!"); //NOI18N
// Get manager and cast it
ContactFacade manager = (ContactFacade) this.getFacade();
// And 3rd for family name
String familyName = manager.enterOwnFamilyName();
- // Company name ...
- String companyName = manager.enterOwnCompanyName();
-
// Construct UserContact instance
- Contact contact = new UserContact(gender, firstName, familyName, companyName);
+ Contact contact = new UserContact(gender, firstName, familyName);
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} - EXIT!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} - EXIT!", contact)); //NOI18N
// And return object
return contact;
@Override
public void doShutdown () throws SQLException, IOException {
// Trace message
- this.getLogger().logTrace("CALLED!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("CALLED!"); //NOI18N
// Parent call
super.doShutdown();
// TODO Add other shutdown stuff
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
public void doUserMenuChoice () throws UnhandledUserChoiceException, MenuInitializationException {
// Trace message
- this.getLogger().logTrace("CALLED!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("CALLED!"); //NOI18N
// Get all access keys from menu
char[] accessKeys = MenuTools.getAccessKeysFromMenuMap(this.getMenus(), this.getCurrentMenu());
// Get manager and cast it
ContactFacade manager = (ContactFacade) this.getFacade();
- // Try it!
- try {
- // TODO Rewrite this ugly switch() block
- switch (choice) {
- case '1':
- try {
- // Enter/add own data
- manager.doEnterOwnData();
- } catch (final ContactAlreadyAddedException ex) {
- // Already added
- this.outputMessage("Sie haben bereits Ihre eigenen Daten eingegeben.");
- }
- break;
-
- case '2': // Change own data
- manager.doChangeOwnData();
- break;
-
- case '3': // Add new addess
- manager.doAddOtherAddress();
- break;
-
- case '4': // List contacts
- manager.doListContacts();
- break;
-
- case '5': // Search addresses
- manager.doSearchContacts();
- break;
-
- case '6': // Change other addess
- manager.doChangeOtherAddress();
- break;
-
- case '7': // Delete other address
- manager.doDeleteOtherAddress();
- break;
-
- case '0':
- try {
- // Program exit
- this.getApplication().doShutdown();
- } catch (final SQLException | IOException ex) {
- this.abortProgramWithException(ex);
- }
- break;
-
- default:
- // TODO throw own exception
- throw new UnhandledUserChoiceException(MessageFormat.format("Choice '{0}' not handled yet.", choice)); //NOI18N
- }
- } catch (final IOException | SQLException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
- // Something bad happened
- this.abortProgramWithException(ex);
+ // TODO Rewrite this ugly switch() block
+ switch (choice) {
+ case '1':
+ try {
+ // Enter/add own data
+ manager.doEnterOwnData();
+ } catch (final ContactAlreadyAddedException ex) {
+ // Already added
+ this.outputMessage("Sie haben bereits Ihre eigenen Daten eingegeben.");
+ }
+ break;
+
+ case '2': // Change own data
+ manager.doChangeOwnData();
+ break;
+
+ case '3': // Add new addess
+ manager.doAddOtherAddress();
+ break;
+
+ case '4': // List contacts
+ manager.doListContacts();
+ break;
+
+ case '5': // Search addresses
+ manager.doSearchContacts();
+ break;
+
+ case '6': // Change other addess
+ manager.doChangeOtherAddress();
+ break;
+
+ case '7': // Delete other address
+ manager.doDeleteOtherAddress();
+ break;
+
+ case '0':
+ try {
+ // Program exit
+ this.getApplication().doShutdown();
+ } catch (final SQLException | IOException ex) {
+ this.abortProgramWithException(ex);
+ }
+ break;
+
+ default:
+ // TODO throw own exception
+ throw new UnhandledUserChoiceException(MessageFormat.format("Choice '{0}' not handled yet.", choice)); //NOI18N
}
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
+ @SuppressWarnings ("UseOfSystemOutOrSystemErr")
public char enterChar (final char[] validChars, final String message) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("validChars={0},message={1} - CALLED!", Arrays.toString(validChars), message)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("validChars={0},message={1} - CALLED!", Arrays.toString(validChars), message)); //NOI18N
// The validChars must not null be null and filled with at least one char
if (null == validChars) {
}
// Trace message
- this.getLogger().logTrace(MessageFormat.format("input={0} - EXIT!", input)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("input={0} - EXIT!", input)); //NOI18N
// Return read char
return input;
@Override
public Gender enterGender (final String message) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("message={0} - CALLED!", message)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("message={0} - CALLED!", message)); //NOI18N
// Get valid chars
char[] validChars = Gender.validChars();
assert (g instanceof Gender) : "g is not set."; //NOI18N
// Trace message
- this.getLogger().logTrace(MessageFormat.format("g={0} - EXIT!", g)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("g={0} - EXIT!", g)); //NOI18N
// Return it
return g;
}
@Override
+ @SuppressWarnings ("UseOfSystemOutOrSystemErr")
public int enterInt (final int minimum, final int maximum, final String message) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("minimum={0},maximum={1},message={2} - CALLED!", minimum, maximum, message)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("minimum={0},maximum={1},message={2} - CALLED!", minimum, maximum, message)); //NOI18N
// Minimum should not be below zero
assert (minimum >= 0) : MessageFormat.format("minimum={0} is below zero", minimum); //NOI18N
}
// Trace message
- this.getLogger().logTrace(MessageFormat.format("input={0} - EXIT!", input)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("input={0} - EXIT!", input)); //NOI18N
// Return it
return input;
}
@Override
+ @SuppressWarnings ("UseOfSystemOutOrSystemErr")
public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty) {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("minLength={0},maxLength={1},message={2}allowEmpty={3} - CALLED!", minLength, maxLength, message, allowEmpty)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("minLength={0},maxLength={1},message={2}allowEmpty={3} - CALLED!", minLength, maxLength, message, allowEmpty)); //NOI18N
// Check on length, e.g. country codes are excactly 2 chars long
assert (maxLength >= minLength);
}
// Trace message
- this.getLogger().logTrace(MessageFormat.format("input={0} - EXIT!", input)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("input={0} - EXIT!", input)); //NOI18N
// Return it
return input;
@Override
public void init () {
// Trace message
- this.getLogger().logTrace("CALLED!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("CALLED!"); //NOI18N
// Init contact manager here
try {
this.fillMenuMap();
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
@Override
+ @SuppressWarnings ("UseOfSystemOutOrSystemErr")
public void outputMessage (final String message) {
System.out.println(message);
}
public void showWelcome () {
this.outputMessage(MessageFormat.format("Welcome to {0}", AddressbookApplication.printableTitle())); //NOI18N
this.outputMessage(""); //NOI18N
- this.outputMessage("Copyright(c) 2015 by Roland Haeder, this is free software"); //NOI18N
+ this.outputMessage("Copyright(c) 2016 by Roland Häder, this is free software"); //NOI18N
// Debug message
- this.getLogger().logDebug("Intro shown to user"); //NOI18N
+ this.getLoggerBeanLocal().logDebug("Intro shown to user"); //NOI18N
}
@Override
public void userChooseChangeContactData (final Contact contact) throws UnhandledUserChoiceException {
// Trace message
- this.getLogger().logTrace(MessageFormat.format("contact={0} CALLED!", contact)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("contact={0} CALLED!", contact)); //NOI18N
// Contact must not be null
if (null == contact) {
}
// Ask the user for editing [name], [a]ddress or [other] data
- char choice = this.enterChar(new char[] {'n', 'a', 'o', 'x'}, "Welchen Daten möchten Sie ändern? (n=Namensdaten, a=Anschriftsdaten, o=Andere, x=Zurück zur Hauptauswahl) ");
+ char choice = this.enterChar(new char[]{'n', 'a', 'o', 'x'}, "Welchen Daten möchten Sie ändern? (n=Namensdaten, a=Anschriftsdaten, o=Andere, x=Zurück zur Hauptauswahl) ");
// Get manager and cast it
ContactFacade manager = (ContactFacade) this.getFacade();
}
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
/**
String input = this.readString();
// Debug message
- this.getLogger().logDebug(MessageFormat.format("input={0}", input)); //NOI18N
+ this.getLoggerBeanLocal().logDebug(MessageFormat.format("input={0}", input)); //NOI18N
// This must be only one character
if (input.length() != 1) {
String input = this.readString();
// Debug message
- this.getLogger().logDebug(MessageFormat.format("input={0}", input)); //NOI18N
+ this.getLoggerBeanLocal().logDebug(MessageFormat.format("input={0}", input)); //NOI18N
// Init number with invalid value
int num = -1;
num = Integer.parseInt(input);
} catch (final NumberFormatException e) {
this.outputMessage("Bitte geben Sie nur Zahlen ein!");
- this.getLogger().logWarning(MessageFormat.format("No numbers-only entered. input={0},message={1}", input, e.getMessage())); //NOI18N
+ this.getLoggerBeanLocal().logWarning(MessageFormat.format("No numbers-only entered. input={0},message={1}", input, e.getMessage())); //NOI18N
}
// Trace message
- this.getLogger().logTrace(MessageFormat.format("num={0} - EXIT!", num)); //NOI18N
+ this.getLoggerBeanLocal().logTrace(MessageFormat.format("num={0} - EXIT!", num)); //NOI18N
// Return read number
return num;
}
@Override
- protected final void fillMenuMap () {
+ protected void fillMenuMap () {
// Trace message
- this.getLogger().logTrace("CALLED!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("CALLED!"); //NOI18N
// Initialize first (main) menu
Menu menu = new ConsoleMenu("main", this); //NOI18N
this.getMenus().put("main", menu); //NOI18N
// Trace message
- this.getLogger().logTrace("EXIT!"); //NOI18N
+ this.getLoggerBeanLocal().logTrace("EXIT!"); //NOI18N
}
}