From 0d25cbaaf30913ad0bd592cc883fcfe07983c16f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org> Date: Tue, 12 Sep 2017 21:18:42 +0200 Subject: [PATCH] Please cherry-pick: - removed export of basic company data, one day, an other approach rather than "single entity" export will maybe come MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder <roland@mxchange.org> --- ...ssbookAdminBusinessDataWebRequestBean.java | 4 +- .../AddressbookContactWebRequestBean.java | 83 +++++++++++-------- .../AddressbookBusinessContactConverter.java | 4 +- .../localization/bundle_de_DE.properties | 2 - .../localization/bundle_en_US.properties | 2 - web/WEB-INF/faces-config.xml | 4 - web/WEB-INF/templates/admin/admin_menu.tpl | 1 - 7 files changed, 52 insertions(+), 48 deletions(-) diff --git a/src/java/org/mxchange/addressbook/beans/business/basicdata/AddressbookAdminBusinessDataWebRequestBean.java b/src/java/org/mxchange/addressbook/beans/business/basicdata/AddressbookAdminBusinessDataWebRequestBean.java index ff365ab9..8bcd570c 100644 --- a/src/java/org/mxchange/addressbook/beans/business/basicdata/AddressbookAdminBusinessDataWebRequestBean.java +++ b/src/java/org/mxchange/addressbook/beans/business/basicdata/AddressbookAdminBusinessDataWebRequestBean.java @@ -26,7 +26,7 @@ import javax.inject.Named; import org.mxchange.addressbook.beans.BaseAddressbookController; import org.mxchange.jcontactsbusiness.events.basicdata.added.AdminAddedBusinessBasicDataEvent; import org.mxchange.jcontactsbusiness.events.basicdata.added.ObservableAdminAddedBusinessBasicDataEvent; -import org.mxchange.jcontactsbusiness.exceptions.basicdata.BusinessDataAlreadyAddedException; +import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicCompanyDataAlreadyAddedException; import org.mxchange.jcontactsbusiness.model.basicdata.AdminBasicCompanyDataSessionBeanRemote; import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData; import org.mxchange.jcontactsbusiness.model.basicdata.CompanyBasicData; @@ -232,7 +232,7 @@ public class AddressbookAdminBusinessDataWebRequestBean extends BaseAddressbookC // Fire event this.businessDataAddedEvent.fire(new AdminAddedBusinessBasicDataEvent(updatedBasicData)); - } catch (final BusinessDataAlreadyAddedException e) { + } catch (final BasicCompanyDataAlreadyAddedException e) { // Does already exist throw new FacesException(e); } diff --git a/src/java/org/mxchange/addressbook/beans/contact/AddressbookContactWebRequestBean.java b/src/java/org/mxchange/addressbook/beans/contact/AddressbookContactWebRequestBean.java index 24a6bcd8..39b3a48e 100644 --- a/src/java/org/mxchange/addressbook/beans/contact/AddressbookContactWebRequestBean.java +++ b/src/java/org/mxchange/addressbook/beans/contact/AddressbookContactWebRequestBean.java @@ -18,7 +18,6 @@ package org.mxchange.addressbook.beans.contact; import fish.payara.cdi.jsr107.impl.NamedCache; import java.text.MessageFormat; -import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; @@ -210,7 +209,9 @@ public class AddressbookContactWebRequestBean extends BaseAddressbookController /** * A list of all selectable contacts */ - private List<Contact> selectableContacts; + @Inject + @NamedCache (cacheName = "selectableContactsCache") + private Cache<Long, Contact> selectableContactsCache; /** * Street @@ -271,7 +272,7 @@ public class AddressbookContactWebRequestBean extends BaseAddressbookController this.uniqueAddContact(event.getAddedContact()); // Add to selectable contacts - this.selectableContacts.add(event.getAddedContact()); + this.selectableContactsCache.put(event.getAddedContact().getContactId(), event.getAddedContact()); } /** @@ -325,7 +326,7 @@ public class AddressbookContactWebRequestBean extends BaseAddressbookController } // Remove contact from list available contacts list - this.selectableContacts.remove(event.getLinkedUser().getUserContact()); + this.selectableContactsCache.remove(event.getLinkedUser().getUserContact().getContactId()); // Clear all data this.clear(); @@ -1025,56 +1026,52 @@ public class AddressbookContactWebRequestBean extends BaseAddressbookController */ @PostConstruct public void init () { - // Get all contacts - final List<Contact> selectable = new LinkedList<>(); - // Is cache there? if (!this.contactsCache.iterator().hasNext()) { // Get whole list - List<Contact> list = this.contactBean.allContacts(); + final List<Contact> contacts = this.contactBean.allContacts(); // Add all - for (final Iterator<Contact> iterator = list.iterator(); iterator.hasNext();) { - // Get next element - final Contact next = iterator.next(); - + for (final Contact contact : contacts) { // Add it to cache - this.contactsCache.put(next.getContactId(), next); - this.emailAddressCache.put(next.getContactId(), next.getContactEmailAddress()); - selectable.add(next); + this.contactsCache.put(contact.getContactId(), contact); + this.emailAddressCache.put(contact.getContactId(), contact.getContactEmailAddress()); } + } else if (this.selectableContactsCache.iterator().hasNext()) { + // Has already entries, avoid executing below code + return; } // Get all users - List<User> allUsers = this.userController.allUsers(); + final List<User> allUsers = this.userController.allUsers(); - // Get iterator - Iterator<Contact> iterator = selectable.iterator(); + // Get iterator from contacts cache + final Iterator<Cache.Entry<Long, Contact>> iterator = this.contactsCache.iterator(); - // Loop through it + // Loop through all contacts while (iterator.hasNext()) { // Get next element - Contact next = iterator.next(); - - // Get iterator - Iterator<User> userIterator = allUsers.iterator(); + final Cache.Entry<Long, Contact> next = iterator.next(); - // Loop through all users - while (userIterator.hasNext()) { - // Get user instance - User nextUser = userIterator.next(); + // Default is not found + boolean isFound = false; - // Is contact same? - if (Objects.equals(next, nextUser.getUserContact())) { - // Found same - iterator.remove(); + // User list is not empty, check each entry, if contact is found + for (final User user : allUsers) { + // Is the contact the same? + if (Objects.equals(user.getUserContact(), next.getValue())) { + // Found one + isFound = true; break; } } - } - // Set contact list - this.selectableContacts = selectable; + // Is contact not found? + if (!isFound) { + // Add it as selectable + this.selectableContactsCache.put(next.getKey(), next.getValue()); + } + } } @Override @@ -1131,7 +1128,23 @@ public class AddressbookContactWebRequestBean extends BaseAddressbookController * @return A list of all selectable contacts */ public List<Contact> selectableContacts () { - return Collections.unmodifiableList(this.selectableContacts); + // Init list + final List<Contact> selectableContacts = new LinkedList<>(); + + // Get iterator from cache + final Iterator<Cache.Entry<Long, Contact>> iterator = this.contactsCache.iterator(); + + // Loop through all contacts + while (iterator.hasNext()) { + // Get next element + final Cache.Entry<Long, Contact> next = iterator.next(); + + // Add entry's value to list + selectableContacts.add(next.getValue()); + } + + // Return list + return selectableContacts; } @Override diff --git a/src/java/org/mxchange/addressbook/converter/business/basicdata/AddressbookBusinessContactConverter.java b/src/java/org/mxchange/addressbook/converter/business/basicdata/AddressbookBusinessContactConverter.java index e718939d..f5cc9a9f 100644 --- a/src/java/org/mxchange/addressbook/converter/business/basicdata/AddressbookBusinessContactConverter.java +++ b/src/java/org/mxchange/addressbook/converter/business/basicdata/AddressbookBusinessContactConverter.java @@ -26,9 +26,9 @@ import javax.faces.validator.ValidatorException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; -import org.mxchange.jcontactsbusiness.exceptions.basicdata.BusinessDataNotFoundException; import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData; import org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote; +import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicCompanyDataNotFoundException; /** * Converter for contact id <-> valid business contact instance @@ -80,7 +80,7 @@ public class AddressbookBusinessContactConverter implements Converter<BusinessBa } catch (final NumberFormatException ex) { // Throw again throw new ConverterException(ex); - } catch (final BusinessDataNotFoundException ex) { + } catch (final BasicCompanyDataNotFoundException ex) { // Debug message // @TODO Not working with JNDI (no remote interface) this.loggerBeanLocal.logDebug(MessageFormat.format("{0}.getAsObject(): Exception: {1} - Returning null ...", this.getClass().getSimpleName(), ex)); //NOI18N } diff --git a/src/java/org/mxchange/localization/bundle_de_DE.properties b/src/java/org/mxchange/localization/bundle_de_DE.properties index eb5d18fc..adfecb2e 100644 --- a/src/java/org/mxchange/localization/bundle_de_DE.properties +++ b/src/java/org/mxchange/localization/bundle_de_DE.properties @@ -836,8 +836,6 @@ PAGE_TITLE_ADMIN_AREA=Administration ADMIN_MENU_BUSINESS_CONTACTS_TITLE=Geschaeftliche Kontakte LINK_ADMIN_LIST_BASIC_COMPANY_DATA=Stammdaten auflisten LINK_ADMIN_LIST_BASIC_COMPANY_DATA_TITLE=Listet Stammdaten auf -LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA=Stammdaten exportieren -LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA_TITLE=Exportiert Stammdaten PAGE_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=Stammdaten auflisten #@TODO Please fix German umlauts! CONTENT_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=Auflisten von Stammdaten diff --git a/src/java/org/mxchange/localization/bundle_en_US.properties b/src/java/org/mxchange/localization/bundle_en_US.properties index cfb8e99c..84536f2e 100644 --- a/src/java/org/mxchange/localization/bundle_en_US.properties +++ b/src/java/org/mxchange/localization/bundle_en_US.properties @@ -827,8 +827,6 @@ PAGE_TITLE_ADMIN_AREA=Administration ADMIN_MENU_BUSINESS_CONTACTS_TITLE=Business contacts LINK_ADMIN_LIST_BASIC_COMPANY_DATA=List basic company data LINK_ADMIN_LIST_BASIC_COMPANY_DATA_TITLE=Lists basic company data -LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA=Export basic company data -LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA_TITLE=Exports basic company data PAGE_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=List basic company data CONTENT_TITLE_ADMIN_LIST_BASIC_COMPANY_DATA=Lists basic company data ADMIN_BASIC_COMPANY_DATA_LIST_EMPTY=There are currently no basic company data in database. diff --git a/web/WEB-INF/faces-config.xml b/web/WEB-INF/faces-config.xml index 35ec8402..a8e21edb 100644 --- a/web/WEB-INF/faces-config.xml +++ b/web/WEB-INF/faces-config.xml @@ -112,10 +112,6 @@ <from-outcome>admin_list_basic_company_data</from-outcome> <to-view-id>/admin/basic_company_data/admin_basic_company_data_list.xhtml</to-view-id> </navigation-case> - <navigation-case> - <from-outcome>admin_export_basic_company_data</from-outcome> - <to-view-id>/admin/basic_company_data/admin_basic_company_data_export.xhtml</to-view-id> - </navigation-case> <navigation-case> <from-outcome>admin_list_branch_offices</from-outcome> <to-view-id>/admin/branch_offices/admin_branch_offices_list.xhtml</to-view-id> diff --git a/web/WEB-INF/templates/admin/admin_menu.tpl b/web/WEB-INF/templates/admin/admin_menu.tpl index 8da86ec5..e980a377 100644 --- a/web/WEB-INF/templates/admin/admin_menu.tpl +++ b/web/WEB-INF/templates/admin/admin_menu.tpl @@ -40,7 +40,6 @@ <ul> <li><h:link title="#{msg.LINK_ADMIN_LIST_BASIC_COMPANY_DATA_TITLE}" outcome="admin_list_basic_company_data" value="#{msg.LINK_ADMIN_LIST_BASIC_COMPANY_DATA}" /></li> - <li><h:link title="#{msg.LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA_TITLE}" outcome="admin_export_basic_company_data" value="#{msg.LINK_ADMIN_EXPORT_BASIC_COMPANY_DATA}" /></li> <li><h:link title="#{msg.LINK_ADMIN_LIST_BRANCH_OFFICES_TITLE}" outcome="admin_list_branch_offices" value="#{msg.LINK_ADMIN_LIST_BRANCH_OFFICES}" /></li> </ul> </ui:fragment> -- 2.39.5