2 * Copyright (C) 2016 - 2018 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.jfinancials.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.jcontactsbusiness.events.basicdata.added.AdminAddedBusinessBasicDataEvent;
27 import org.mxchange.jcontactsbusiness.events.basicdata.added.ObservableAdminAddedBusinessBasicDataEvent;
28 import org.mxchange.jcontactsbusiness.exceptions.basicdata.BasicDataAlreadyAddedException;
29 import org.mxchange.jcontactsbusiness.model.basicdata.AdminBasicCompanyDataSessionBeanRemote;
30 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
31 import org.mxchange.jcontactsbusiness.model.basicdata.BusinessBasicData;
32 import org.mxchange.jcontactsbusiness.model.employee.Employable;
33 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
34 import org.mxchange.jcountry.model.data.Country;
35 import org.mxchange.jfinancials.beans.BaseFinancialsBean;
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 ("adminBasicCompanyDataController")
49 public class FinancialsAdminBasicDataWebRequestBean extends BaseFinancialsBean implements FinancialsAdminBasicDataWebRequestController {
54 private static final long serialVersionUID = 56_189_028_928_374L;
57 * EJB for administrative purposes
59 @EJB (lookup = "java:global/jfinancials-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;
102 private String companyShortName;
107 private String companyTaxNumber;
110 * Owning user instance (which this company is assigned to)
112 private User companyUserOwner;
117 private String companyWebsiteUrl;
120 * Area code for fax number
122 private Integer faxAreaCode;
125 * Country for fax number
127 private Country faxCountry;
130 * Dial number for fax number
132 private Long faxNumber;
135 * Area code for land-line number
137 private Integer landLineAreaCode;
140 * Country for land-line number
142 private Country landLineCountry;
145 * Dial number for land-line number
147 private Long landLineNumber;
150 * Default constructor
152 public FinancialsAdminBasicDataWebRequestBean () {
153 // Call super constructor
158 * Adds a basic business data entry, if not yet found.
161 public void addBusinessBasicData () {
162 // Check if company short name is set
163 if (this.getCompanyShortName() == null) {
165 throw new NullPointerException("this.companyShortName is null"); //NOI18N
166 } else if (this.getCompanyShortName().isEmpty()) {
168 throw new IllegalArgumentException("this.companyShortName is empty"); //NOI18N
172 BasicData basicData = new BusinessBasicData(this.getCompanyShortName());
174 // Set all opther remaining data
175 basicData.setCompanyComments(this.getCompanyComments());
176 basicData.setCompanyContactEmployee(this.getCompanyContactEmployee());
177 basicData.setCompanyEmailAddress(this.getCompanyEmailAddress());
178 basicData.setCompanyFounder(this.getCompanyFounder());
179 basicData.setCompanyHeadquarterData(this.getCompanyHeadQuarter());
180 basicData.setCompanyName(this.getCompanyName());
181 basicData.setCompanyTaxNumber(this.getCompanyTaxNumber());
182 basicData.setCompanyUserOwner(this.getCompanyUserOwner());
183 basicData.setCompanyWebsiteUrl(this.getCompanyWebsiteUrl());
186 // @TODO basicData.setCompanyLogo();
187 // Generate phone number
188 DialableLandLineNumber landLine = new LandLineNumber(this.getLandLineCountry(), this.getLandLineAreaCode(), this.getLandLineNumber());
189 DialableFaxNumber fax = new FaxNumber(this.getFaxCountry(), this.getFaxAreaCode(), this.getFaxNumber());
191 // Don't set null or wrong references
192 if ((landLine instanceof DialableLandLineNumber) && (landLine.getPhoneCountry() instanceof Country) && (this.getLandLineAreaCode() != null) && (this.getLandLineNumber() != null) && (this.getLandLineAreaCode() > 0) && (this.getLandLineNumber() > 0)) {
193 // Now the number must be given
194 if (landLine.getPhoneAreaCode() == null) {
196 throw new NullPointerException("phone.phoneAreaCode is null"); //NOI18N
197 } else if (landLine.getPhoneAreaCode() < 1) {
199 throw new IllegalArgumentException("phone.phoneAreaCode is zero or below."); //NOI18N
200 } else if (landLine.getPhoneNumber() == null) {
202 throw new NullPointerException("phone.phoneNumber is null"); //NOI18N
203 } else if (landLine.getPhoneNumber() < 1) {
205 throw new IllegalArgumentException("phone.phoneNumber is zero or below."); //NOI18N
209 basicData.setCompanyLandLineNumber(landLine);
212 // Don't set null or wrong references
213 if ((fax instanceof DialableFaxNumber) && (fax.getPhoneCountry() instanceof Country) && (this.getFaxAreaCode() != null) && (this.getFaxNumber() != null) && (this.getFaxAreaCode() > 0) && (this.getFaxNumber() > 0)) {
214 // Now the number must be given
215 if (fax.getPhoneAreaCode() == null) {
217 throw new NullPointerException("fax.phoneAreaCode is null"); //NOI18N
218 } else if (fax.getPhoneAreaCode() < 1) {
220 throw new IllegalArgumentException("fax.phoneAreaCode is zero or below."); //NOI18N
221 } else if (fax.getPhoneNumber() == null) {
223 throw new NullPointerException("fax.phoneNumber is null"); //NOI18N
224 } else if (fax.getPhoneNumber() < 1) {
226 throw new IllegalArgumentException("fax.phoneNumber is zero or below."); //NOI18N
230 basicData.setCompanyFaxNumber(fax);
233 // Now try to send to EJB and get an updated version back
236 final BasicData updatedBasicData = this.adminBasicCompanyDataBean.addBusinessBasicData(basicData);
239 this.businessDataAddedEvent.fire(new AdminAddedBusinessBasicDataEvent(updatedBasicData));
240 } catch (final BasicDataAlreadyAddedException e) {
241 // Does already exist
242 throw new FacesException(e);
247 * Getter for comments
251 public String getCompanyComments () {
252 return this.companyComments;
256 * Setter for comments
258 * @param companyComments Comments
260 public void setCompanyComments (final String companyComments) {
261 this.companyComments = companyComments;
265 * Getter for employee as contact person
267 * @return Employable as contact person
269 public Employable getCompanyContactEmployee () {
270 return this.companyContactEmployee;
274 * Setter for employee as contact person
276 * @param companyContactEmployee Employable as contact person
278 public void setCompanyContactEmployee (final Employable companyContactEmployee) {
279 this.companyContactEmployee = companyContactEmployee;
283 * Getter for company's (main) email address
285 * @return Company's (main) email address
287 public String getCompanyEmailAddress () {
288 return this.companyEmailAddress;
292 * Setter for company's (main) email address
294 * @param companyEmailAddress Company's (main) email address
296 public void setCompanyEmailAddress (final String companyEmailAddress) {
297 this.companyEmailAddress = companyEmailAddress;
301 * Getter for company founder
303 * @return Company founder
305 public Employable getCompanyFounder () {
306 return this.companyFounder;
310 * Setter for company founder
312 * @param companyFounder Company founder
314 public void setCompanyFounder (final Employable companyFounder) {
315 this.companyFounder = companyFounder;
319 * Getter for headquarter data
321 * @return Headquarter data
323 public Headquarter getCompanyHeadQuarter () {
324 return this.companyHeadQuarter;
328 * Setter for headquarter data
330 * @param companyHeadQuarter Headquarter data
332 public void setCompanyHeadQuarter (final Headquarter companyHeadQuarter) {
333 this.companyHeadQuarter = companyHeadQuarter;
337 * Getter for company name
339 * @return Company name
341 public String getCompanyName () {
342 return this.companyName;
346 * Setter for company name
348 * @param companyName Company name
350 public void setCompanyName (final String companyName) {
351 this.companyName = companyName;
355 * Getter for company short name
357 * @return Company short name
359 public String getCompanyShortName () {
360 return this.companyShortName;
364 * Setter for company short name
366 * @param companyShortName Company short name
368 public void setCompanyShortName (final String companyShortName) {
369 this.companyShortName = companyShortName;
373 * Getter for company tax number
375 * @return Company tax number
377 public String getCompanyTaxNumber () {
378 return this.companyTaxNumber;
382 * Setter for company tax number
384 * @param companyTaxNumber Company tax number
386 public void setCompanyTaxNumber (final String companyTaxNumber) {
387 this.companyTaxNumber = companyTaxNumber;
391 * Getter for owning user instance
393 * @return Owning user instance
395 public User getCompanyUserOwner () {
396 return this.companyUserOwner;
400 * Setter for owning user instance
402 * @param companyUserOwner Owning user instance
404 public void setCompanyUserOwner (final User companyUserOwner) {
405 this.companyUserOwner = companyUserOwner;
409 * Getter for company web site URL
411 * @return Company web site URL
413 public String getCompanyWebsiteUrl () {
414 return this.companyWebsiteUrl;
418 * Getter for company web site URL
420 * @param companyWebsiteUrl Company web site URL
422 public void setCompanyWebsiteUrl (final String companyWebsiteUrl) {
423 this.companyWebsiteUrl = companyWebsiteUrl;
427 * Getter for fax number's area code
429 * @return Fax number's area code
431 public Integer getFaxAreaCode () {
432 return this.faxAreaCode;
436 * Setter for fax number's area code
438 * @param faxAreaCode Fax number's area code
440 public void setFaxAreaCode (final Integer faxAreaCode) {
441 this.faxAreaCode = faxAreaCode;
445 * Getter for fax's country instance
447 * @return Fax' country instance
449 public Country getFaxCountry () {
450 return this.faxCountry;
454 * Setter for fax's country instance
456 * @param faxCountry Fax' country instance
458 public void setFaxCountry (final Country faxCountry) {
459 this.faxCountry = faxCountry;
463 * Getter for fax number
467 public Long getFaxNumber () {
468 return this.faxNumber;
472 * Setter for fax number
474 * @param faxNumber Fax number
476 public void setFaxNumber (final Long faxNumber) {
477 this.faxNumber = faxNumber;
481 * Getter for land-line number's area code
483 * @return Land-line number's area code
485 public Integer getLandLineAreaCode () {
486 return this.landLineAreaCode;
490 * Setter for land-line number's area code
492 * @param landLineAreaCode Land-line number's area code
494 public void setLandLineAreaCode (final Integer landLineAreaCode) {
495 this.landLineAreaCode = landLineAreaCode;
499 * Getter for land-line number's country instance
501 * @return Land-line number's country instance
503 public Country getLandLineCountry () {
504 return this.landLineCountry;
508 * Setter for land-line number's country instance
510 * @param landLineCountry Land-line number's country instance
512 public void setLandLineCountry (final Country landLineCountry) {
513 this.landLineCountry = landLineCountry;
517 * Getter for land-line number
519 * @return Land-line number
521 public Long getLandLineNumber () {
522 return this.landLineNumber;
526 * Setter for land-line number
528 * @param landLineNumber Land-line number
530 public void setLandLineNumber (final Long landLineNumber) {
531 this.landLineNumber = landLineNumber;