2 * Copyright (C) 2016, 2020 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.phone;
19 import java.text.MessageFormat;
20 import java.util.Calendar;
21 import java.util.List;
22 import java.util.Objects;
24 import javax.enterprise.context.RequestScoped;
25 import javax.enterprise.event.Event;
26 import javax.enterprise.event.Observes;
27 import javax.enterprise.inject.Any;
28 import javax.inject.Inject;
29 import javax.inject.Named;
30 import org.mxchange.addressbook.beans.BaseAddressbookController;
31 import org.mxchange.jcountry.model.data.Country;
32 import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent;
33 import org.mxchange.jphone.events.fax.deleted.AdminDeletedFaxNumberEvent;
34 import org.mxchange.jphone.events.fax.deleted.AdminFaxNumberDeletedEvent;
35 import org.mxchange.jphone.events.fax.removed.AdminFaxNumberRemovedFromListEvent;
36 import org.mxchange.jphone.events.fax.removed.AdminRemoveFaxNumberFromListEvent;
37 import org.mxchange.jphone.events.fax.updated.AdminFaxNumberUpdatedEvent;
38 import org.mxchange.jphone.events.fax.updated.AdminUpdatedFaxNumberEvent;
39 import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent;
40 import org.mxchange.jphone.events.landline.deleted.AdminDeletedLandLineNumberEvent;
41 import org.mxchange.jphone.events.landline.deleted.AdminLandLineNumberDeletedEvent;
42 import org.mxchange.jphone.events.landline.removed.AdminLandLineNumberRemovedFromListEvent;
43 import org.mxchange.jphone.events.landline.removed.AdminRemoveLandLineNumberFromListEvent;
44 import org.mxchange.jphone.events.landline.updated.AdminLandLineNumberUpdatedEvent;
45 import org.mxchange.jphone.events.landline.updated.AdminUpdatedLandLineNumberEvent;
46 import org.mxchange.jphone.events.mobile.created.ObservableCreatedMobileNumberEvent;
47 import org.mxchange.jphone.events.mobile.deleted.AdminDeletedMobileNumberEvent;
48 import org.mxchange.jphone.events.mobile.deleted.AdminMobileNumberDeletedEvent;
49 import org.mxchange.jphone.events.mobile.remove.AdminMobileNumberRemovedFromListEvent;
50 import org.mxchange.jphone.events.mobile.remove.AdminRemoveMobileNumberFromListEvent;
51 import org.mxchange.jphone.events.mobile.updated.AdminMobileNumberUpdatedEvent;
52 import org.mxchange.jphone.events.mobile.updated.AdminUpdatedMobileNumberEvent;
53 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
54 import org.mxchange.jphone.model.phonenumbers.fax.FaxNumber;
55 import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
56 import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumber;
57 import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
58 import org.mxchange.jphone.model.phonenumbers.mobile.MobileNumber;
59 import org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProvider;
60 import org.mxchange.jphone.model.phonenumbers.phone.AdminPhoneSessionBeanRemote;
63 * Administrative bean (controller) for phone numbers
65 * @author Roland Häder<roland@mxchange.org>
67 @Named ("adminPhoneController")
69 public class AddressbookAdminPhoneWebRequestBean extends BaseAddressbookController implements AddressbookAdminPhoneWebRequestController {
74 private static final short THREAD_STACK = 5;
79 private static final long serialVersionUID = 184_598_175_371_269_016L;
82 * Remote EJB for phone number (administrative)
84 @EJB (lookup = "java:global/addressbook-ejb/adminPhone!org.mxchange.jphone.model.phonenumbers.phone.AdminPhoneSessionBeanRemote")
85 private AdminPhoneSessionBeanRemote adminPhoneBean;
90 private DialableFaxNumber faxNumber;
93 * Event being fired when an administrator has deleted fax number
97 private Event<AdminDeletedFaxNumberEvent> faxNumberDeletedEvent;
100 * Event being fired when an administrator has updated fax number
104 private Event<AdminUpdatedFaxNumberEvent> faxNumberUpdatedEvent;
109 private DialableLandLineNumber landLineNumber;
112 * Event being fired when an administrator has deleted land-line number
116 private Event<AdminDeletedLandLineNumberEvent> landLineNumberDeletedEvent;
119 * Event being fired when an administrator has updated fax number
123 private Event<AdminUpdatedLandLineNumberEvent> landLineNumberUpdatedEvent;
126 * Chosen mobile number
128 private DialableMobileNumber mobileNumber;
131 * Event being fired when an administrator has deleted mobile number
135 private Event<AdminDeletedMobileNumberEvent> mobileNumberDeletedEvent;
138 * Event being fired when an administrator has updated land-line number
142 private Event<AdminUpdatedMobileNumberEvent> mobileNumberUpdatedEvent;
147 private MobileProvider mobileProvider;
150 * Area code (city dial prefix)
152 private Integer phoneAreaCode;
155 * Generic hone controller
158 private AddressbookPhoneWebRequestController phoneController;
161 * Country (for dial prefix)
163 private Country phoneCountry;
166 * When the phone entry has been created (persisted)
168 private Calendar phoneEntryCreated;
171 * When the phone entry has been updated
173 private Calendar phoneEntryUpdated;
176 * Phone id (aka primary key)
178 private Long phoneId;
183 private Long phoneNumber;
186 * Event being fired when a list of all unsed fax numbers is being created.
190 private Event<AdminRemoveFaxNumberFromListEvent> removeLinkedFaxNumbersEvent;
193 * Event being fired when a list of all unsed land-line numbers is being
198 private Event<AdminRemoveLandLineNumberFromListEvent> removeLinkedLandLineNumbersEvent;
201 * Event being fired when a list of all unsed mobile numbers is being
206 private Event<AdminRemoveMobileNumberFromListEvent> removeLinkedMobileNumbersEvent;
209 * Default constructor
211 public AddressbookAdminPhoneWebRequestBean () {
212 // Call super constructor
215 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
216 // System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
220 * Observes events being fired when a bean helper has successfully created a
221 * fax number instance.
223 * @param event Event being fired
225 public void afterCreatedFaxNumberEvent (@Observes final ObservableCreatedFaxNumberEvent event) {
226 // The event instance must be valid
229 throw new NullPointerException("event is null"); //NOI18N
230 } else if (event.getFaxNumber() == null) {
232 throw new NullPointerException("event.faxNumber is null"); //NOI18N
233 } else if (event.getFaxNumber().getPhoneId() == null) {
234 // Throw NPE yet again
235 throw new NullPointerException("event.faxNumber.phoneId is null"); //NOI18N
236 } else if (event.getFaxNumber().getPhoneId() < 1) {
237 // Throw NPE yet again
238 throw new NullPointerException(MessageFormat.format("event.faxNumber.phoneId={0} is invalid", event.getFaxNumber().getPhoneId())); //NOI18N
241 // Get fax number from event
242 DialableFaxNumber number = event.getFaxNumber();
244 // Copy all data to this bean
245 this.setPhoneId(number.getPhoneId());
246 this.setPhoneCountry(number.getPhoneCountry());
247 this.setPhoneAreaCode(number.getPhoneAreaCode());
248 this.setPhoneNumber(number.getPhoneNumber());
249 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
250 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
254 * Observes events being fired when a bean helper has successfully created a
255 * land-line number instance.
257 * @param event Event being fired
259 public void afterCreatedLandLineNumberEvent (@Observes final ObservableCreatedLandLineNumberEvent event) {
260 // The event instance must be valid
263 throw new NullPointerException("event is null"); //NOI18N
264 } else if (event.getLandLineNumber() == null) {
266 throw new NullPointerException("event.landLineNumber is null"); //NOI18N
267 } else if (event.getLandLineNumber().getPhoneId() == null) {
268 // Throw NPE yet again
269 throw new NullPointerException("event.landLineNumber.phoneId is null"); //NOI18N
270 } else if (event.getLandLineNumber().getPhoneId() < 1) {
271 // Throw NPE yet again
272 throw new NullPointerException(MessageFormat.format("event.landLineNumber.phoneId={0} is invalid", event.getLandLineNumber().getPhoneId())); //NOI18N
275 // Get fax number from event
276 DialableLandLineNumber number = event.getLandLineNumber();
278 // Copy all data to this bean
279 this.setPhoneId(number.getPhoneId());
280 this.setPhoneCountry(number.getPhoneCountry());
281 this.setPhoneAreaCode(number.getPhoneAreaCode());
282 this.setPhoneNumber(number.getPhoneNumber());
283 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
284 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
288 * Observes events being fired when a bean helper has successfully created a
289 * mobile number instance.
291 * @param event Event being fired
293 public void afterCreatedMobileNumberEvent (@Observes final ObservableCreatedMobileNumberEvent event) {
294 // The event instance must be valid
297 throw new NullPointerException("event is null"); //NOI18N
298 } else if (event.getMobileNumber() == null) {
300 throw new NullPointerException("event.mobileNumber is null"); //NOI18N
301 } else if (event.getMobileNumber().getPhoneId() == null) {
302 // Throw NPE yet again
303 throw new NullPointerException("event.mobileNumber.phoneId is null"); //NOI18N
304 } else if (event.getMobileNumber().getPhoneId() < 1) {
305 // Throw NPE yet again
306 throw new NullPointerException(MessageFormat.format("event.mobileNumber.phoneId={0} is invalid", event.getMobileNumber().getPhoneId())); //NOI18N
309 // Get fax number from event
310 DialableMobileNumber number = event.getMobileNumber();
312 // Copy all data to this bean
313 this.setPhoneId(number.getPhoneId());
314 this.setMobileProvider(number.getMobileProvider());
315 this.setPhoneNumber(number.getPhoneNumber());
316 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
317 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
321 * Returns a list of all unused ("non-linked") land-line numbers
323 * @return List with all unused land-line numbers
325 public List<DialableFaxNumber> allNonLinkedFaxNumbers () {
326 // Get list of all mobile numbers
327 List<DialableFaxNumber> list = this.phoneController.allFaxNumbers();
329 // Visit all controllers to reduce the list
330 this.removeLinkedFaxNumbersEvent.fire(new AdminFaxNumberRemovedFromListEvent(list));
337 * Returns a list of all unused ("non-linked") land-line numbers
339 * @return List with all unused land-line numbers
341 public List<DialableLandLineNumber> allNonLinkedLandLineNumbers () {
342 // Get list of all mobile numbers
343 List<DialableLandLineNumber> list = this.phoneController.allLandLineNumbers();
345 // Visit all controllers to reduce the list
346 this.removeLinkedLandLineNumbersEvent.fire(new AdminLandLineNumberRemovedFromListEvent(list));
353 * Returns a list of all unused ("non-linked") mobile numbers
355 * @return List with all unused mobile numbers
357 public List<DialableMobileNumber> allNonLinkedMobileNumbers () {
358 // Get list of all mobile numbers
359 List<DialableMobileNumber> list = this.phoneController.allMobileNumbers();
361 // Visit all controllers to reduce the list
362 this.removeLinkedMobileNumbersEvent.fire(new AdminMobileNumberRemovedFromListEvent(list));
369 * Deletes given fax entry data
371 * @return Redirect outcome
373 public String deleteFaxData () {
374 // Get fax number from bean helper
375 DialableFaxNumber number = this.createFaxNumber();
378 if (number == null) {
379 // Not set, throw NPE
380 throw new NullPointerException("faxNumber is null"); //NOI18N
381 } else if (number.getPhoneId() == null) {
383 throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
384 } else if (number.getPhoneId() < 1) {
386 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
387 } else if (number.getPhoneCountry() == null) {
389 throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
390 } else if (number.getPhoneCountry().getCountryId() == null) {
392 throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
393 } else if (number.getPhoneCountry().getCountryId() < 1) {
395 throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
396 } else if (number.getPhoneAreaCode() == null) {
398 throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
399 } else if (number.getPhoneAreaCode() < 1) {
401 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
402 } else if (number.getPhoneNumber() == null) {
404 throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
405 } else if (number.getPhoneNumber() < 1) {
407 throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
411 this.adminPhoneBean.deleteFaxData(number);
414 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(number));
416 // All fine, redirect
417 return "admin_list_fax"; //NOI18N
421 * Deletes given land-line entry data
423 * @return Redirect outcome
425 public String deleteLandLineData () {
426 // Get land-line number from helper
427 DialableLandLineNumber number = this.createLandLineNumber();
430 if (number == null) {
431 // Not set, throw NPE
432 throw new NullPointerException("landLineNumber is null"); //NOI18N
433 } else if (number.getPhoneId() == null) {
435 throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
436 } else if (number.getPhoneId() < 1) {
438 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
439 } else if (number.getPhoneCountry() == null) {
441 throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
442 } else if (number.getPhoneCountry().getCountryId() == null) {
444 throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
445 } else if (number.getPhoneCountry().getCountryId() < 1) {
447 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
448 } else if (number.getPhoneAreaCode() == null) {
450 throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
451 } else if (number.getPhoneAreaCode() < 1) {
453 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
454 } else if (number.getPhoneNumber() == null) {
456 throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
457 } else if (number.getPhoneNumber() < 1) {
459 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
463 this.adminPhoneBean.deleteLandLineData(number);
466 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(number));
468 // All fine, redirect
469 return "admin_list_landline"; //NOI18N
473 * Deletes given mobile entry data
475 * @return Redirect outcome
477 public String deleteMobileData () {
478 // Get mobile number from helper
479 DialableMobileNumber number = this.createMobileNumber();
482 if (number == null) {
483 // Not set, throw NPE
484 throw new NullPointerException("mobileNumber is null"); //NOI18N
485 } else if (number.getPhoneId() == null) {
487 throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
488 } else if (number.getPhoneId() < 1) {
490 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
491 } else if (number.getMobileProvider() == null) {
493 throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
494 } else if (number.getMobileProvider().getProviderId() == null) {
496 throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
497 } else if (number.getMobileProvider().getProviderId() < 1) {
499 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
500 } else if (number.getPhoneNumber() == null) {
502 throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
503 } else if (number.getPhoneNumber() < 1) {
505 throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
509 this.adminPhoneBean.deleteMobileData(number);
512 this.mobileNumberDeletedEvent.fire(new AdminMobileNumberDeletedEvent(number));
514 // All fine, redirect
515 return "admin_list_mobile"; //NOI18N
519 * Changes fax entry data
521 * @return Redirect outcome
523 public String doChangeFaxNumber () {
524 // Get fax number from bean helper
525 DialableFaxNumber number = this.createFaxNumber();
528 if (number == null) {
529 // Not set, throw NPE
530 throw new NullPointerException("faxNumber is null"); //NOI18N
531 } else if (number.getPhoneId() == null) {
533 throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
534 } else if (number.getPhoneId() < 1) {
536 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
537 } else if (number.getPhoneCountry() == null) {
539 throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
540 } else if (number.getPhoneCountry().getCountryId() == null) {
542 throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
543 } else if (number.getPhoneCountry().getCountryId() < 1) {
545 throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
546 } else if (number.getPhoneAreaCode() == null) {
548 throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
549 } else if (number.getPhoneAreaCode() < 1) {
551 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
552 } else if (number.getPhoneNumber() == null) {
554 throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
555 } else if (number.getPhoneNumber() < 1) {
557 throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
560 // Is the mobile provider and number the same?
561 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
563 this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
565 // No difference in both together, no need to edit
570 number.setPhoneCountry(this.getPhoneCountry());
571 number.setPhoneAreaCode(this.getPhoneAreaCode());
572 number.setPhoneNumber(this.getPhoneNumber());
575 DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(number);
578 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
580 // All fine, redirect
581 return "admin_show_fax"; //NOI18N
585 * Changes land-line entry data
587 * @return Redirect outcome
589 public String doChangeLandLineNumber () {
590 // Get land-line number from helper
591 DialableLandLineNumber number = this.createLandLineNumber();
594 if (number == null) {
595 // Not set, throw NPE
596 throw new NullPointerException("landLineNumber is null"); //NOI18N
597 } else if (number.getPhoneId() == null) {
599 throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
600 } else if (number.getPhoneId() < 1) {
602 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
603 } else if (number.getPhoneCountry() == null) {
605 throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
606 } else if (number.getPhoneCountry().getCountryId() == null) {
608 throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
609 } else if (number.getPhoneCountry().getCountryId() < 1) {
611 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
612 } else if (number.getPhoneAreaCode() == null) {
614 throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
615 } else if (number.getPhoneAreaCode() < 1) {
617 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
618 } else if (number.getPhoneNumber() == null) {
620 throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
621 } else if (number.getPhoneNumber() < 1) {
623 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
626 // Is the mobile provider and number the same?
627 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
629 this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
631 // No difference in both together, no need to edit
636 number.setPhoneCountry(this.getPhoneCountry());
637 number.setPhoneAreaCode(this.getPhoneAreaCode());
638 number.setPhoneNumber(this.getPhoneNumber());
641 DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(number);
644 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
646 // All fine, redirect
647 return "admin_show_landline"; //NOI18N
651 * Changes mobile entry data
653 * @return Redirect outcome
655 public String doUpdateMobileNumber () {
656 // Get mobile number from helper
657 DialableMobileNumber number = this.createMobileNumber();
660 if (number == null) {
661 // Not set, throw NPE
662 throw new NullPointerException("mobileNumber is null"); //NOI18N
663 } else if (number.getPhoneId() == null) {
665 throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
666 } else if (number.getPhoneId() < 1) {
668 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
669 } else if (number.getMobileProvider() == null) {
671 throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
672 } else if (number.getMobileProvider().getProviderId() == null) {
674 throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
675 } else if (number.getMobileProvider().getProviderId() < 1) {
677 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
678 } else if (number.getPhoneNumber() == null) {
680 throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
681 } else if (number.getPhoneNumber() < 1) {
683 throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
684 } else if (this.getMobileProvider() == null) {
686 this.showFacesMessage("form_edit_mobile:mobileProvider", "ERROR_ADMIN_NO_MOBILE_PROVIDER_SELECTED"); //NOI18N
688 } else if (this.getMobileProvider().getProviderId() == null) {
689 // Throw NPE again ...
690 throw new NullPointerException("this.mobileProvider.providerId is null"); //NOI18N
691 } else if (this.getMobileProvider().getProviderId() < 0) {
693 throw new IllegalArgumentException(MessageFormat.format("this.mobileProvider.providerId={0} is not valid.", this.getMobileProvider().getProviderId())); //NOI18N
694 } else if (this.getPhoneNumber() == null) {
696 this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_EMPTY_MOBILE_NUMBER"); //NOI18N
700 // Is the mobile provider and number the same?
701 if ((Objects.equals(this.getMobileProvider(), number.getMobileProvider())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
703 this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
705 // No difference in both together, no need to edit
710 number.setMobileProvider(this.getMobileProvider());
711 number.setPhoneNumber(this.getPhoneNumber());
714 DialableMobileNumber updatedNumber = this.adminPhoneBean.updateMobileData(number);
717 this.mobileNumberUpdatedEvent.fire(new AdminMobileNumberUpdatedEvent(updatedNumber));
719 // All fine, redirect
720 return "admin_show_mobile"; //NOI18N
724 * Getter for chosen fax number
728 public DialableFaxNumber getFaxNumber () {
729 return this.faxNumber;
733 * Setter for chosen fax number
735 * @param faxNumber fax number
737 public void setFaxNumber (final DialableFaxNumber faxNumber) {
738 this.faxNumber = faxNumber;
742 * Getter for chosen land-line number
744 * @return land-line number
746 public DialableLandLineNumber getLandLineNumber () {
747 return this.landLineNumber;
751 * Setter for chosen land-line number
753 * @param landLineNumber land-line number
755 public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
756 this.landLineNumber = landLineNumber;
760 * Getter for chosen mobile number
762 * @return mobile number
764 public DialableMobileNumber getMobileNumber () {
765 return this.mobileNumber;
769 * Setter for chosen mobile number
771 * @param mobileNumber mobile number
773 public void setMobileNumber (final DialableMobileNumber mobileNumber) {
774 this.mobileNumber = mobileNumber;
778 * Getter for mobile provider
780 * @return Mobile provider
782 public MobileProvider getMobileProvider () {
783 return this.mobileProvider;
787 * Setter for mobile provider
789 * @param mobileProvider Mobile provider
791 public void setMobileProvider (final MobileProvider mobileProvider) {
792 this.mobileProvider = mobileProvider;
796 * Getter for phone area code
798 * @return Phone area code
800 public Integer getPhoneAreaCode () {
801 return this.phoneAreaCode;
805 * Setter for phone area code
807 * @param phoneAreaCode Phone area code
809 public void setPhoneAreaCode (final Integer phoneAreaCode) {
810 this.phoneAreaCode = phoneAreaCode;
814 * Getter for phone country (for dial prefix)
816 * @return Phone country
818 public Country getPhoneCountry () {
819 return this.phoneCountry;
823 * Setter for phone country (for dial prefix)
825 * @param phoneCountry Phone country
827 public void setPhoneCountry (final Country phoneCountry) {
828 this.phoneCountry = phoneCountry;
832 * Getter for phone entry created timestamp
834 * @return Phone entry created timestamp
836 @SuppressWarnings ("ReturnOfDateField")
837 public Calendar getPhoneEntryCreated () {
838 return this.phoneEntryCreated;
842 * Setter for phone entry created timestamp
844 * @param phoneEntryCreated Phone entry created timestamp
846 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
847 public void setPhoneEntryCreated (final Calendar phoneEntryCreated) {
848 this.phoneEntryCreated = phoneEntryCreated;
852 * Getter for phone entry updated timestamp
854 * @return Phone entry updated timestamp
856 @SuppressWarnings ("ReturnOfDateField")
857 public Calendar getPhoneEntryUpdated () {
858 return this.phoneEntryUpdated;
862 * Setter for phone entry updated timestamp
864 * @param phoneEntryUpdated Phone entry updated timestamp
866 @SuppressWarnings ("AssignmentToDateFieldFromParameter")
867 public void setPhoneEntryUpdated (final Calendar phoneEntryUpdated) {
868 this.phoneEntryUpdated = phoneEntryUpdated;
872 * Getter for phone id
876 public Long getPhoneId () {
881 * Setter for phone id
883 * @param phoneId Phone id
885 public void setPhoneId (final Long phoneId) {
886 this.phoneId = phoneId;
890 * Getter for dial number without prefix
892 * @return Dial number without prefix
894 public Long getPhoneNumber () {
895 return this.phoneNumber;
899 * Setter for dial number without prefix
901 * @param phoneNumber Dial number without prefix
903 public void setPhoneNumber (final Long phoneNumber) {
904 this.phoneNumber = phoneNumber;
908 * Returns an instance of a DialableFaxNumber from all fields stored in this
911 * @return An instance of a DialableFaxNumber class
913 private DialableFaxNumber createFaxNumber () {
915 DialableFaxNumber number = new FaxNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber());
917 // Add all other data
918 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
919 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
922 if (this.getPhoneId() instanceof Long) {
924 number.setPhoneId(this.getPhoneId());
932 * Returns an instance of a DialableLandLineNumber from all fields stored in
935 * @return An instance of a DialableLandLineNumber class
937 private DialableLandLineNumber createLandLineNumber () {
939 DialableLandLineNumber number = new LandLineNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber());
941 // Add all other data
942 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
943 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
946 if (this.getPhoneId() instanceof Long) {
948 number.setPhoneId(this.getPhoneId());
956 * Returns an instance of a DialableMobileNumber from all fields stored in
959 * @return An instance of a DialableMobileNumber class
961 private DialableMobileNumber createMobileNumber () {
963 DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getPhoneNumber());
965 // Add all other data
966 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
967 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
970 if (this.getPhoneId() instanceof Long) {
972 number.setPhoneId(this.getPhoneId());