/*
- * Copyright (C) 2016 - 2018 Free Software Foundation
+ * Copyright (C) 2016 - 2022 Free Software Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
*/
package org.mxchange.jfinancials.beans.business.basicdata;
-import fish.payara.cdi.jsr107.impl.NamedCache;
-import java.text.MessageFormat;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-import javax.annotation.PostConstruct;
-import javax.cache.Cache;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
-import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Named;
-import org.mxchange.jcontactsbusiness.events.basicdata.added.ObservableAdminAddedBusinessBasicDataEvent;
-import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicDataNotFoundException;
import org.mxchange.jcontactsbusiness.model.basicdata.AdminBasicCompanyDataSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote;
-import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
import org.mxchange.jcountry.model.data.Country;
import org.mxchange.jfinancials.beans.BaseFinancialsBean;
import org.mxchange.jfinancials.beans.user.login.FinancialsUserLoginWebSessionController;
* <p>
* @author Roland Häder<roland@mxchange.org>
*/
-@Named ("basicCompanyDataController")
+@Named ("basicDataController")
@RequestScoped
public class FinancialsBasicDataWebRequestBean extends BaseFinancialsBean implements FinancialsBasicDataWebRequestController {
@EJB (lookup = "java:global/jfinancials-ejb/adminBasicCompanyData!org.mxchange.jcontactsbusiness.model.basicdata.AdminBasicCompanyDataSessionBeanRemote", description = "A stateless session bean for administrative purposes.")
private AdminBasicCompanyDataSessionBeanRemote adminBasicCompanyDataBean;
- /**
- * List of all basic company data
- */
- private final List<BasicData> allBasicData;
-
- /**
- * A list of all registered companies (globally)
- */
- @Inject
- @NamedCache (cacheName = "basicDataCache")
- private Cache<Long, BasicData> basicDataCache;
-
- /**
- * EJB for general basic business data purposes
- */
- @EJB (lookup = "java:global/jfinancials-ejb/basicCompanyData!org.mxchange.jcontactsbusiness.model.basicdata.BasicCompanyDataSessionBeanRemote", description = "A stateless session bean for general purposes.")
- private BasicCompanyDataSessionBeanRemote businessDataBean;
-
/**
* Comments for this company
*/
*/
private Long faxNumber;
- /**
- * List of filtered basic company data
- */
- private List<BasicData> filteredBasicCompanyData;
-
/**
* Area code for land-line number
*/
public FinancialsBasicDataWebRequestBean () {
// Call super constructor
super();
-
- // Init list
- this.allBasicData = new LinkedList<>();
- }
-
- /**
- * Observers events being fired when an administrator has added company
- * basic data.
- * <p>
- * @param event Event being fired
- */
- public void afterAdminAddedBasicCompanyDataEvent (@Observes final ObservableAdminAddedBusinessBasicDataEvent event) {
- // Is the parameter valid?
- if (null == event) {
- // Throw NPE
- throw new NullPointerException("event is null"); //NOI18N
- } else if (event.getBasicData() == null) {
- // Throw NPE again
- throw new NullPointerException("event.basicData is null"); //NOI18N
- } else if (event.getBasicData().getBasicDataId() == null) {
- // Throw NPE again
- throw new NullPointerException("event.basicData.basicDataId is null"); //NOI18N
- } else if (event.getBasicData().getBasicDataId() < 1) {
- // Throw IAE
- throw new IllegalArgumentException(MessageFormat.format("event.basicData.basicDataId={0} is invalid", event.getBasicData().getBasicDataId())); //NOI18N
- } else if (event.getBasicData().getCompanyName() == null) {
- // Throw NPE again
- throw new NullPointerException("event.basicData.companyName is null"); //NOI18N
- } else if (event.getBasicData().getCompanyName().isEmpty()) {
- // Throw IAE again
- throw new IllegalArgumentException("event.basicData.companyName is empty"); //NOI18N
- }
-
- // Add it to list
- this.basicDataCache.put(event.getBasicData().getBasicDataId(), event.getBasicData());
- this.allBasicData.add(event.getBasicData());
- }
-
- /**
- * Getter for a list of all business contacts
- * <p>
- * @return A list of all business contacts
- */
- @SuppressWarnings ("ReturnOfCollectionOrArrayField")
- public List<BasicData> allBasicData () {
- return this.allBasicData;
- }
-
- @Override
- public BasicData findBasicDataById (final Long basicDataId) throws BasicDataNotFoundException {
- // Validate parameter
- if (null == basicDataId) {
- // Throw NPE
- throw new NullPointerException("basicDataId is null"); //NOI18N
- } else if (basicDataId < 1) {
- // Throw IAE
- throw new IllegalArgumentException(MessageFormat.format("basicDataId={0} is invalid", basicDataId)); //NOI18N
- } else if (!this.basicDataCache.containsKey(basicDataId)) {
- // Not found
- throw new BasicDataNotFoundException(basicDataId);
- }
-
- // Get it from cache
- final BasicData basicData = this.basicDataCache.get(basicDataId);
-
- // Return it
- return basicData;
}
/**
this.faxNumber = faxNumber;
}
- /**
- * Getter for filtered basic company data
- * <p>
- * @return Filtered basic company data
- */
- @SuppressWarnings ("ReturnOfCollectionOrArrayField")
- public List<BasicData> getFilteredBasicCompanyData () {
- return this.filteredBasicCompanyData;
- }
-
- /**
- * Setter for filtered basic company data
- * <p>
- * @param filteredBasicCompanyData Filtered basic company data
- */
- @SuppressWarnings ("AssignmentToCollectionOrArrayFieldFromParameter")
- public void setFilteredBasicCompanyData (final List<BasicData> filteredBasicCompanyData) {
- this.filteredBasicCompanyData = filteredBasicCompanyData;
- }
-
/**
* Getter for land-line number's area code
* <p>
this.landLineNumber = landLineNumber;
}
- /**
- * Initializer method
- */
- @PostConstruct
- public void initializeList () {
- // Is cache there?
- if (!this.basicDataCache.iterator().hasNext()) {
- // Get whole list
- final List<BasicData> basicDatas = this.businessDataBean.allBusinessBasicData();
-
- // Add all
- for (final BasicData basicData : basicDatas) {
- // Add it to cache
- this.basicDataCache.put(basicData.getBasicDataId(), basicData);
- }
- }
-
- // Is cache there and list is not full?
- if ((this.allBasicData.isEmpty()) && (this.basicDataCache.iterator().hasNext())) {
- // Get iterator
- final Iterator<Cache.Entry<Long, BasicData>> iterator = this.basicDataCache.iterator();
-
- // Build up list
- while (iterator.hasNext()) {
- // GEt next element
- final Cache.Entry<Long, BasicData> next = iterator.next();
-
- // Add to list
- this.allBasicData.add(next.getValue());
- }
-
- // Sort list
- this.allBasicData.sort(new Comparator<BasicData>() {
- @Override
- public int compare (final BasicData o1, final BasicData o2) {
- return o1.getBasicDataId() > o2.getBasicDataId() ? 1 : o1.getBasicDataId() < o2.getBasicDataId() ? -1 : 0;
- }
- });
- }
- }
-
- @Override
- public Boolean isCompanyNameUsed (final String companyName) {
- // Validate parameter
- if (null == companyName) {
- // Throw NPE
- throw new NullPointerException("companyName is null"); //NOI18N
- } else if (companyName.isEmpty()) {
- // Throw IAE
- throw new IllegalArgumentException("companyName is empty"); //NOI18N
- }
-
- // Default is not found
- boolean isFound = false;
-
- // Check all entries
- for (final BasicData basicData : this.allBasicData()) {
- // Is same company name?
- if (Objects.equals(basicData.getCompanyName(), companyName)) {
- // Found it
- isFound = true;
- break;
- }
- }
-
- // Return flag
- return isFound;
- }
-
- @Override
- public Boolean isEmailAddressRegistered (final String emailAddress) {
- // Validate parameter
- if (null == emailAddress) {
- // Throw NPE
- throw new NullPointerException("emailAddress is null"); //NOI18N
- } else if (emailAddress.isEmpty()) {
- // Throw IAE
- throw new IllegalArgumentException("emailAddress is empty"); //NOI18N
- }
-
- // Default is not found
- boolean isFound = false;
-
- // Check all entries
- for (final BasicData basicData : this.allBasicData()) {
- // Is email address used?
- if (Objects.equals(basicData.getCompanyEmailAddress(), emailAddress)) {
- // Found it
- isFound = true;
- break;
- }
- }
-
- // Return flag
- return isFound;
- }
-
/**
* Clears this bean
*/