2 * Copyright (C) 2016 - 2022 Free Software Foundation
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License as
6 * published by the Free Software Foundation, either version 3 of the
7 * License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Affero General Public License for more details.
14 * You should have received a copy of the GNU Affero General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package org.mxchange.addressbook.beans.business.basicdata;
20 import javax.enterprise.context.RequestScoped;
21 import javax.enterprise.event.Event;
22 import javax.enterprise.inject.Any;
23 import javax.faces.FacesException;
24 import javax.inject.Inject;
25 import javax.inject.Named;
26 import org.mxchange.addressbook.beans.BaseAddressbookBean;
27 import org.mxchange.jcontactsbusiness.events.basicdata.added.AdminAddedBusinessBasicDataEvent;
28 import org.mxchange.jcontactsbusiness.events.basicdata.added.ObservableAdminAddedBusinessBasicDataEvent;
29 import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicDataAlreadyAddedException;
30 import org.mxchange.jcontactsbusiness.model.basicdata.AdminBasicCompanyDataSessionBeanRemote;
31 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
32 import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
33 import org.mxchange.jcontactsbusiness.model.employee.Employable;
34 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
35 import org.mxchange.jcountry.model.data.Country;
36 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
37 import org.mxchange.jphone.model.phonenumbers.fax.FaxNumber;
38 import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
39 import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumber;
40 import org.mxchange.jusercore.model.user.User;
43 * An administrative business contact bean (controller)
45 * @author Roland Häder<roland@mxchange.org>
47 @Named ("adminCompanyDataController")
49 public class AddressbookAdminBasicDataWebRequestBean extends BaseAddressbookBean implements AddressbookAdminBasicDataWebRequestController {
54 private static final long serialVersionUID = 56_189_028_928_374L;
57 * EJB for administrative purposes
59 @EJB (lookup = "java:global/addressbook-ejb/adminBasicCompanyData!org.mxchange.jcontactsbusiness.model.basicdata.AdminBasicCompanyDataSessionBeanRemote")
60 private AdminBasicCompanyDataSessionBeanRemote adminBasicCompanyDataBean;
63 * An event being fired when basic business data has been added
67 private Event<ObservableAdminAddedBusinessBasicDataEvent> businessDataAddedEvent;
70 * Comments for this company
72 private String companyComments;
75 * An employee as contact person with this company
77 private Employable companyContactEmployee;
80 * Companies (main) email address (example: info@company.example)
82 private String companyEmailAddress;
87 private Employable companyFounder;
90 * Headquarter data for this company
92 private Headquarter companyHeadQuarter;
97 private String companyName;
100 * Company's road number
102 private String companyRoadNumber;
107 private String companyShortName;
112 private String companyTaxNumber;
115 * Owning user instance (which this company is assigned to)
117 private User companyUserOwner;
122 private String companyWebsiteUrl;
125 * Area code for fax number
127 private Integer faxAreaCode;
130 * Country for fax number
132 private Country faxCountry;
135 * Dial number for fax number
137 private Long faxNumber;
140 * Area code for land-line number
142 private Integer landLineAreaCode;
145 * Country for land-line number
147 private Country landLineCountry;
150 * Dial number for land-line number
152 private Long landLineNumber;
155 * Default constructor
157 public AddressbookAdminBasicDataWebRequestBean () {
158 // Call super constructor
163 * Adds a basic business data entry, if not yet found.
165 public void addBusinessBasicData () {
166 // Check if company short name is set
167 if (this.getCompanyShortName() == null) {
169 throw new NullPointerException("this.companyShortName is null"); //NOI18N
170 } else if (this.getCompanyShortName().isEmpty()) {
172 throw new IllegalArgumentException("this.companyShortName is empty"); //NOI18N
173 } else if ((this.getCompanyName() != null) && (this.getCompanyName().isEmpty())) {
175 throw new IllegalArgumentException("this.companyName is set empty"); //NOI18N
179 final BasicData basicData = new BusinessBasicData(this.getCompanyShortName());
181 // Set all opther remaining data
182 basicData.setCompanyComments(this.getCompanyComments());
183 basicData.setCompanyContactEmployee(this.getCompanyContactEmployee());
184 basicData.setCompanyEmailAddress(this.getCompanyEmailAddress());
185 basicData.setCompanyFounder(this.getCompanyFounder());
186 basicData.setCompanyHeadquarterData(this.getCompanyHeadQuarter());
187 basicData.setCompanyName(this.getCompanyName());
188 basicData.setCompanyRoadNumber(this.getCompanyRoadNumber());
189 basicData.setCompanyTaxNumber(this.getCompanyTaxNumber());
190 basicData.setCompanyUserOwner(this.getCompanyUserOwner());
191 basicData.setCompanyWebsiteUrl(this.getCompanyWebsiteUrl());
194 // @TODO basicData.setCompanyLogo();
196 DialableLandLineNumber landLine = null;
197 DialableFaxNumber fax = null;
199 // Are all 3 fields set?
200 if (this.getLandLineAreaCode() != null && this.getLandLineCountry() instanceof Country && this.getLandLineNumber() != null) {
201 // Initialize land number number instance
202 landLine = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
205 // Are all 3 fields set?
206 if (this.getFaxAreaCode() != null && this.getFaxCountry() instanceof Country && this.getFaxNumber() != null) {
207 // Initialzie fax number instance
208 fax = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
211 // Don't set null or wrong references
212 if ((landLine instanceof DialableLandLineNumber) && (landLine.getPhoneCountry() instanceof Country) && (this.getLandLineAreaCode() != null) && (this.getLandLineNumber() != null) && (this.getLandLineAreaCode() > 0) && (this.getLandLineNumber() > 0)) {
213 // Now the number must be given
214 if (landLine.getPhoneAreaCode() == null) {
216 throw new NullPointerException("phone.phoneAreaCode is null"); //NOI18N
217 } else if (landLine.getPhoneAreaCode() < 1) {
219 throw new IllegalArgumentException("phone.phoneAreaCode is zero or below."); //NOI18N
220 } else if (landLine.getPhoneNumber() == null) {
222 throw new NullPointerException("phone.phoneNumber is null"); //NOI18N
223 } else if (landLine.getPhoneNumber() < 1) {
225 throw new IllegalArgumentException("phone.phoneNumber is zero or below."); //NOI18N
229 basicData.setCompanyLandLineNumber(landLine);
232 // Don't set null or wrong references
233 if ((fax instanceof DialableFaxNumber) && (fax.getPhoneCountry() instanceof Country) && (this.getFaxAreaCode() != null) && (this.getFaxNumber() != null) && (this.getFaxAreaCode() > 0) && (this.getFaxNumber() > 0)) {
234 // Now the number must be given
235 if (fax.getPhoneAreaCode() == null) {
237 throw new NullPointerException("fax.phoneAreaCode is null"); //NOI18N
238 } else if (fax.getPhoneAreaCode() < 1) {
240 throw new IllegalArgumentException("fax.phoneAreaCode is zero or below."); //NOI18N
241 } else if (fax.getPhoneNumber() == null) {
243 throw new NullPointerException("fax.phoneNumber is null"); //NOI18N
244 } else if (fax.getPhoneNumber() < 1) {
246 throw new IllegalArgumentException("fax.phoneNumber is zero or below."); //NOI18N
250 basicData.setCompanyFaxNumber(fax);
254 final BasicData updatedBasicData;
256 // Now try to send to EJB and get an updated version back
259 updatedBasicData = this.adminBasicCompanyDataBean.addBusinessBasicData(basicData);
260 } catch (final BasicDataAlreadyAddedException e) {
261 // Does already exist
262 throw new FacesException(e);
266 this.businessDataAddedEvent.fire(new AdminAddedBusinessBasicDataEvent(updatedBasicData));
270 * Getter for comments
274 public String getCompanyComments () {
275 return this.companyComments;
279 * Setter for comments
281 * @param companyComments Comments
283 public void setCompanyComments (final String companyComments) {
284 this.companyComments = companyComments;
288 * Getter for employee as contact person
290 * @return Employable as contact person
292 public Employable getCompanyContactEmployee () {
293 return this.companyContactEmployee;
297 * Setter for employee as contact person
299 * @param companyContactEmployee Employable as contact person
301 public void setCompanyContactEmployee (final Employable companyContactEmployee) {
302 this.companyContactEmployee = companyContactEmployee;
306 * Getter for company's (main) email address
308 * @return Company's (main) email address
310 public String getCompanyEmailAddress () {
311 return this.companyEmailAddress;
315 * Setter for company's (main) email address
317 * @param companyEmailAddress Company's (main) email address
319 public void setCompanyEmailAddress (final String companyEmailAddress) {
320 this.companyEmailAddress = companyEmailAddress;
324 * Getter for company founder
326 * @return Company founder
328 public Employable getCompanyFounder () {
329 return this.companyFounder;
333 * Setter for company founder
335 * @param companyFounder Company founder
337 public void setCompanyFounder (final Employable companyFounder) {
338 this.companyFounder = companyFounder;
342 * Getter for headquarter data
344 * @return Headquarter data
346 public Headquarter getCompanyHeadQuarter () {
347 return this.companyHeadQuarter;
351 * Setter for headquarter data
353 * @param companyHeadQuarter Headquarter data
355 public void setCompanyHeadQuarter (final Headquarter companyHeadQuarter) {
356 this.companyHeadQuarter = companyHeadQuarter;
360 * Getter for company name
362 * @return Company name
364 public String getCompanyName () {
365 return this.companyName;
369 * Setter for company name
371 * @param companyName Company name
373 public void setCompanyName (final String companyName) {
374 this.companyName = companyName;
378 * Getter for company's road number
380 * @return Company's road number
382 public String getCompanyRoadNumber () {
383 return this.companyRoadNumber;
387 * Setter for company's road number
389 * @param companyRoadNumber Company's road number
391 public void setCompanyRoadNumber (final String companyRoadNumber) {
392 this.companyRoadNumber = companyRoadNumber;
396 * Getter for company short name
398 * @return Company short name
400 public String getCompanyShortName () {
401 return this.companyShortName;
405 * Setter for company short name
407 * @param companyShortName Company short name
409 public void setCompanyShortName (final String companyShortName) {
410 this.companyShortName = companyShortName;
414 * Getter for company tax number
416 * @return Company tax number
418 public String getCompanyTaxNumber () {
419 return this.companyTaxNumber;
423 * Setter for company tax number
425 * @param companyTaxNumber Company tax number
427 public void setCompanyTaxNumber (final String companyTaxNumber) {
428 this.companyTaxNumber = companyTaxNumber;
432 * Getter for owning user instance
434 * @return Owning user instance
436 public User getCompanyUserOwner () {
437 return this.companyUserOwner;
441 * Setter for owning user instance
443 * @param companyUserOwner Owning user instance
445 public void setCompanyUserOwner (final User companyUserOwner) {
446 this.companyUserOwner = companyUserOwner;
450 * Getter for company web site URL
452 * @return Company web site URL
454 public String getCompanyWebsiteUrl () {
455 return this.companyWebsiteUrl;
459 * Getter for company web site URL
461 * @param companyWebsiteUrl Company web site URL
463 public void setCompanyWebsiteUrl (final String companyWebsiteUrl) {
464 this.companyWebsiteUrl = companyWebsiteUrl;
468 * Getter for fax number's area code
470 * @return Fax number's area code
472 public Integer getFaxAreaCode () {
473 return this.faxAreaCode;
477 * Setter for fax number's area code
479 * @param faxAreaCode Fax number's area code
481 public void setFaxAreaCode (final Integer faxAreaCode) {
482 this.faxAreaCode = faxAreaCode;
486 * Getter for fax's country instance
488 * @return Fax' country instance
490 public Country getFaxCountry () {
491 return this.faxCountry;
495 * Setter for fax's country instance
497 * @param faxCountry Fax' country instance
499 public void setFaxCountry (final Country faxCountry) {
500 this.faxCountry = faxCountry;
504 * Getter for fax number
508 public Long getFaxNumber () {
509 return this.faxNumber;
513 * Setter for fax number
515 * @param faxNumber Fax number
517 public void setFaxNumber (final Long faxNumber) {
518 this.faxNumber = faxNumber;
522 * Getter for land-line number's area code
524 * @return Land-line number's area code
526 public Integer getLandLineAreaCode () {
527 return this.landLineAreaCode;
531 * Setter for land-line number's area code
533 * @param landLineAreaCode Land-line number's area code
535 public void setLandLineAreaCode (final Integer landLineAreaCode) {
536 this.landLineAreaCode = landLineAreaCode;
540 * Getter for land-line number's country instance
542 * @return Land-line number's country instance
544 public Country getLandLineCountry () {
545 return this.landLineCountry;
549 * Setter for land-line number's country instance
551 * @param landLineCountry Land-line number's country instance
553 public void setLandLineCountry (final Country landLineCountry) {
554 this.landLineCountry = landLineCountry;
558 * Getter for land-line number
560 * @return Land-line number
562 public Long getLandLineNumber () {
563 return this.landLineNumber;
567 * Setter for land-line number
569 * @param landLineNumber Land-line number
571 public void setLandLineNumber (final Long landLineNumber) {
572 this.landLineNumber = landLineNumber;