]> git.mxchange.org Git - jfinancials-war.git/blob - src/java/org/mxchange/jfinancials/beans/phone/FinancialsAdminPhoneWebRequestBean.java
updated jar(s)
[jfinancials-war.git] / src / java / org / mxchange / jfinancials / beans / phone / FinancialsAdminPhoneWebRequestBean.java
1 /*
2  * Copyright (C) 2016, 2017 Roland Häder
3  *
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.
8  *
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.
13  *
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/>.
16  */
17 package org.mxchange.jfinancials.beans.phone;
18
19 import java.text.MessageFormat;
20 import java.util.Calendar;
21 import java.util.List;
22 import java.util.Objects;
23 import javax.annotation.PostConstruct;
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.faces.view.facelets.FaceletException;
29 import javax.inject.Inject;
30 import javax.inject.Named;
31 import javax.naming.Context;
32 import javax.naming.InitialContext;
33 import javax.naming.NamingException;
34 import org.mxchange.jcountry.data.Country;
35 import org.mxchange.jfinancials.beans.BaseFinancialsController;
36 import org.mxchange.jfinancials.beans.helper.FinancialsWebRequestHelperController;
37 import org.mxchange.jphone.events.fax.deleted.AdminDeletedFaxNumberEvent;
38 import org.mxchange.jphone.events.fax.deleted.AdminFaxNumberDeletedEvent;
39 import org.mxchange.jphone.events.fax.removed.AdminFaxNumberRemovedFromListEvent;
40 import org.mxchange.jphone.events.fax.removed.AdminRemoveFaxNumberFromListEvent;
41 import org.mxchange.jphone.events.fax.updated.AdminFaxNumberUpdatedEvent;
42 import org.mxchange.jphone.events.fax.updated.AdminUpdatedFaxNumberEvent;
43 import org.mxchange.jphone.events.mobile.created.ObservableHelperCreatedMobileNumberEvent;
44 import org.mxchange.jphone.events.landline.deleted.AdminDeletedLandLineNumberEvent;
45 import org.mxchange.jphone.events.landline.deleted.AdminLandLineNumberDeletedEvent;
46 import org.mxchange.jphone.events.landline.removed.AdminLandLineNumberRemovedFromListEvent;
47 import org.mxchange.jphone.events.landline.removed.AdminRemoveLandLineNumberFromListEvent;
48 import org.mxchange.jphone.events.landline.updated.AdminLandLineNumberUpdatedEvent;
49 import org.mxchange.jphone.events.landline.updated.AdminUpdatedLandLineNumberEvent;
50 import org.mxchange.jphone.events.mobile.deleted.AdminDeletedMobileNumberEvent;
51 import org.mxchange.jphone.events.mobile.deleted.AdminMobileNumberDeletedEvent;
52 import org.mxchange.jphone.events.mobile.remove.AdminMobileNumberRemovedFromListEvent;
53 import org.mxchange.jphone.events.mobile.remove.AdminRemoveMobileNumberFromListEvent;
54 import org.mxchange.jphone.events.mobile.updated.AdminMobileNumberUpdatedEvent;
55 import org.mxchange.jphone.events.mobile.updated.AdminUpdatedMobileNumberEvent;
56 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
57 import org.mxchange.jphone.phonenumbers.fax.FaxNumber;
58 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
59 import org.mxchange.jphone.phonenumbers.landline.LandLineNumber;
60 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
61 import org.mxchange.jphone.phonenumbers.mobile.MobileNumber;
62 import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
63 import org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote;
64 import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent;
65 import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent;
66
67 /**
68  * Administrative bean (controller) for phone numbers
69  * <p>
70  * @author Roland Häder<roland@mxchange.org>
71  */
72 @Named ("adminPhoneController")
73 @RequestScoped
74 public class FinancialsAdminPhoneWebRequestBean extends BaseFinancialsController implements FinancialsAdminPhoneWebRequestController {
75
76         /**
77          * Call-stack position
78          */
79         private static final short THREAD_STACK = 5;
80
81         /**
82          * Serial number
83          */
84         private static final long serialVersionUID = 184_598_175_371_269_016L;
85
86         /**
87          * Remote EJB for phone number (administrative)
88          */
89         private AdminPhoneSessionBeanRemote adminPhoneBean;
90
91         /**
92          * Bean helper
93          */
94         @Inject
95         private FinancialsWebRequestHelperController beanHelper;
96
97         /**
98          * fax number
99          */
100         private DialableFaxNumber faxNumber;
101
102         /**
103          * Event being fired when an administrator has deleted fax number
104          */
105         @Inject
106         @Any
107         private Event<AdminDeletedFaxNumberEvent> faxNumberDeletedEvent;
108
109         /**
110          * Event being fired when an administrator has updated fax number
111          */
112         @Inject
113         @Any
114         private Event<AdminUpdatedFaxNumberEvent> faxNumberUpdatedEvent;
115
116         /**
117          * land-line number
118          */
119         private DialableLandLineNumber landLineNumber;
120
121         /**
122          * Event being fired when an administrator has deleted land-line number
123          */
124         @Inject
125         @Any
126         private Event<AdminDeletedLandLineNumberEvent> landLineNumberDeletedEvent;
127
128         /**
129          * Event being fired when an administrator has updated fax number
130          */
131         @Inject
132         @Any
133         private Event<AdminUpdatedLandLineNumberEvent> landLineNumberUpdatedEvent;
134
135         /**
136          * Chosen mobile number
137          */
138         private DialableMobileNumber mobileNumber;
139
140         /**
141          * Event being fired when an administrator has deleted mobile number
142          */
143         @Inject
144         @Any
145         private Event<AdminDeletedMobileNumberEvent> mobileNumberDeletedEvent;
146
147         /**
148          * Event being fired when an administrator has updated land-line number
149          */
150         @Inject
151         @Any
152         private Event<AdminUpdatedMobileNumberEvent> mobileNumberUpdatedEvent;
153
154         /**
155          * Mobile provider
156          */
157         private MobileProvider mobileProvider;
158
159         /**
160          * Area code (city dial prefix)
161          */
162         private Integer phoneAreaCode;
163
164         /**
165          * Generic hone controller
166          */
167         @Inject
168         private FinancialsPhoneWebApplicationController phoneController;
169
170         /**
171          * Country (for dial prefix)
172          */
173         private Country phoneCountry;
174
175         /**
176          * When the phone entry has been created (persisted)
177          */
178         private Calendar phoneEntryCreated;
179
180         /**
181          * When the phone entry has been updated
182          */
183         private Calendar phoneEntryUpdated;
184
185         /**
186          * Phone id (aka primary key)
187          */
188         private Long phoneId;
189
190         /**
191          * Phone number
192          */
193         private Long phoneNumber;
194
195         /**
196          * Event being fired when a list of all unsed fax numbers is being created.
197          */
198         @Inject
199         @Any
200         private Event<AdminRemoveFaxNumberFromListEvent> removeLinkedFaxNumbersEvent;
201
202         /**
203          * Event being fired when a list of all unsed land-line numbers is being
204          * created.
205          */
206         @Inject
207         @Any
208         private Event<AdminRemoveLandLineNumberFromListEvent> removeLinkedLandLineNumbersEvent;
209
210         /**
211          * Event being fired when a list of all unsed mobile numbers is being
212          * created.
213          */
214         @Inject
215         @Any
216         private Event<AdminRemoveMobileNumberFromListEvent> removeLinkedMobileNumbersEvent;
217
218         /**
219          * Default constructor
220          */
221         public FinancialsAdminPhoneWebRequestBean () {
222                 // Call super constructor
223                 super();
224
225                 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
226                 // System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
227         }
228
229         /**
230          * Observes events being fired when a bean helper has successfully created a
231          * fax number instance.
232          * <p>
233          * @param event Event being fired
234          */
235         public void afterHelperCreatedFaxNumberEvent (@Observes final ObservableCreatedFaxNumberEvent event) {
236                 // The event instance must be valid
237                 if (null == event) {
238                         // Throw NPE
239                         throw new NullPointerException("event is null"); //NOI18N
240                 } else if (event.getFaxNumber() == null) {
241                         // Throw NPE again
242                         throw new NullPointerException("event.faxNumber is null"); //NOI18N
243                 } else if (event.getFaxNumber().getPhoneId() == null) {
244                         // Throw NPE yet again
245                         throw new NullPointerException("event.faxNumber.phoneId is null"); //NOI18N
246                 } else if (event.getFaxNumber().getPhoneId() < 1) {
247                         // Throw NPE yet again
248                         throw new NullPointerException(MessageFormat.format("event.faxNumber.phoneId={0} is invalid", event.getFaxNumber().getPhoneId())); //NOI18N
249                 }
250
251                 // Get fax number from event
252                 DialableFaxNumber number = event.getFaxNumber();
253
254                 // Copy all data to this bean
255                 this.setPhoneId(number.getPhoneId());
256                 this.setPhoneCountry(number.getPhoneCountry());
257                 this.setPhoneAreaCode(number.getPhoneAreaCode());
258                 this.setPhoneNumber(number.getPhoneNumber());
259                 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
260                 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
261         }
262
263         /**
264          * Observes events being fired when a bean helper has successfully created a
265          * land-line number instance.
266          * <p>
267          * @param event Event being fired
268          */
269         public void afterHelperCreatedLandLineNumberEvent (@Observes final ObservableCreatedLandLineNumberEvent event) {
270                 // The event instance must be valid
271                 if (null == event) {
272                         // Throw NPE
273                         throw new NullPointerException("event is null"); //NOI18N
274                 } else if (event.getLandLineNumber() == null) {
275                         // Throw NPE again
276                         throw new NullPointerException("event.landLineNumber is null"); //NOI18N
277                 } else if (event.getLandLineNumber().getPhoneId() == null) {
278                         // Throw NPE yet again
279                         throw new NullPointerException("event.landLineNumber.phoneId is null"); //NOI18N
280                 } else if (event.getLandLineNumber().getPhoneId() < 1) {
281                         // Throw NPE yet again
282                         throw new NullPointerException(MessageFormat.format("event.landLineNumber.phoneId={0} is invalid", event.getLandLineNumber().getPhoneId())); //NOI18N
283                 }
284
285                 // Get fax number from event
286                 DialableLandLineNumber number = event.getLandLineNumber();
287
288                 // Copy all data to this bean
289                 this.setPhoneId(number.getPhoneId());
290                 this.setPhoneCountry(number.getPhoneCountry());
291                 this.setPhoneAreaCode(number.getPhoneAreaCode());
292                 this.setPhoneNumber(number.getPhoneNumber());
293                 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
294                 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
295         }
296
297         /**
298          * Observes events being fired when a bean helper has successfully created a
299          * mobile number instance.
300          * <p>
301          * @param event Event being fired
302          */
303         public void afterHelperCreatedMobileNumberEvent (@Observes final ObservableHelperCreatedMobileNumberEvent event) {
304                 // The event instance must be valid
305                 if (null == event) {
306                         // Throw NPE
307                         throw new NullPointerException("event is null"); //NOI18N
308                 } else if (event.getMobileNumber() == null) {
309                         // Throw NPE again
310                         throw new NullPointerException("event.mobileNumber is null"); //NOI18N
311                 } else if (event.getMobileNumber().getPhoneId() == null) {
312                         // Throw NPE yet again
313                         throw new NullPointerException("event.mobileNumber.phoneId is null"); //NOI18N
314                 } else if (event.getMobileNumber().getPhoneId() < 1) {
315                         // Throw NPE yet again
316                         throw new NullPointerException(MessageFormat.format("event.mobileNumber.phoneId={0} is invalid", event.getMobileNumber().getPhoneId())); //NOI18N
317                 }
318
319                 // Get fax number from event
320                 DialableMobileNumber number = event.getMobileNumber();
321
322                 // Copy all data to this bean
323                 this.setPhoneId(number.getPhoneId());
324                 this.setMobileProvider(number.getMobileProvider());
325                 this.setPhoneNumber(number.getPhoneNumber());
326                 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
327                 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
328         }
329
330         /**
331          * Returns a list of all unused ("non-linked") land-line numbers
332          * <p>
333          * @return List with all unused land-line numbers
334          */
335         public List<DialableFaxNumber> allNonLinkedFaxNumbers () {
336                 // Get list of all mobile numbers
337                 List<DialableFaxNumber> list = this.phoneController.allFaxNumbers();
338
339                 // Visit all controllers to reduce the list
340                 this.removeLinkedFaxNumbersEvent.fire(new AdminFaxNumberRemovedFromListEvent(list));
341
342                 // Return it
343                 return list;
344         }
345
346         /**
347          * Returns a list of all unused ("non-linked") land-line numbers
348          * <p>
349          * @return List with all unused land-line numbers
350          */
351         public List<DialableLandLineNumber> allNonLinkedLandLineNumbers () {
352                 // Get list of all mobile numbers
353                 List<DialableLandLineNumber> list = this.phoneController.allLandLineNumbers();
354
355                 // Visit all controllers to reduce the list
356                 this.removeLinkedLandLineNumbersEvent.fire(new AdminLandLineNumberRemovedFromListEvent(list));
357
358                 // Return it
359                 return list;
360         }
361
362         /**
363          * Returns a list of all unused ("non-linked") mobile numbers
364          * <p>
365          * @return List with all unused mobile numbers
366          */
367         public List<DialableMobileNumber> allNonLinkedMobileNumbers () {
368                 // Get list of all mobile numbers
369                 List<DialableMobileNumber> list = this.phoneController.allMobileNumbers();
370
371                 // Visit all controllers to reduce the list
372                 this.removeLinkedMobileNumbersEvent.fire(new AdminMobileNumberRemovedFromListEvent(list));
373
374                 // Return it
375                 return list;
376         }
377
378         /**
379          * Deletes given fax entry data
380          * <p>
381          * @return Redirect outcome
382          */
383         public String deleteFaxData () {
384                 // Get fax number from bean helper
385                 DialableFaxNumber number = this.createFaxNumber();
386
387                 // Is all data set
388                 if (number == null) {
389                         // Not set, throw NPE
390                         throw new NullPointerException("faxNumber is null"); //NOI18N
391                 } else if (number.getPhoneId() == null) {
392                         // Throw NPE again
393                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
394                 } else if (number.getPhoneId() < 1) {
395                         // Invalid number
396                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
397                 } else if (number.getPhoneCountry() == null) {
398                         // Throw NPE
399                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
400                 } else if (number.getPhoneCountry().getCountryId() == null) {
401                         // Throw NPE
402                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
403                 } else if (number.getPhoneCountry().getCountryId() < 1) {
404                         // Throw NPE
405                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
406                 } else if (number.getPhoneAreaCode() == null) {
407                         // ... throw again
408                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
409                 } else if (number.getPhoneAreaCode() < 1) {
410                         // Id not valid
411                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
412                 } else if (number.getPhoneNumber() == null) {
413                         // Throw NPE again
414                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
415                 } else if (number.getPhoneNumber() < 1) {
416                         // Throw NPE again
417                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
418                 }
419
420                 // Call EJB
421                 this.adminPhoneBean.deleteFaxData(number);
422
423                 // Fire event
424                 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(number));
425
426                 // All fine, redirect
427                 return "admin_list_fax"; //NOI18N
428         }
429
430         /**
431          * Deletes given land-line entry data
432          * <p>
433          * @return Redirect outcome
434          */
435         public String deleteLandLineData () {
436                 // Get land-line number from helper
437                 DialableLandLineNumber number = this.createLandLineNumber();
438
439                 // Is all data set
440                 if (number == null) {
441                         // Not set, throw NPE
442                         throw new NullPointerException("landLineNumber is null"); //NOI18N
443                 } else if (number.getPhoneId() == null) {
444                         // Throw NPE again
445                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
446                 } else if (number.getPhoneId() < 1) {
447                         // Invalid number
448                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
449                 } else if (number.getPhoneCountry() == null) {
450                         // Throw NPE
451                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
452                 } else if (number.getPhoneCountry().getCountryId() == null) {
453                         // Throw NPE
454                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
455                 } else if (number.getPhoneCountry().getCountryId() < 1) {
456                         // Throw NPE
457                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
458                 } else if (number.getPhoneAreaCode() == null) {
459                         // ... throw again
460                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
461                 } else if (number.getPhoneAreaCode() < 1) {
462                         // Id not valid
463                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
464                 } else if (number.getPhoneNumber() == null) {
465                         // Throw NPE again
466                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
467                 } else if (number.getPhoneNumber() < 1) {
468                         // Throw NPE again
469                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
470                 }
471
472                 // Call EJB
473                 this.adminPhoneBean.deleteLandLineData(number);
474
475                 // Fire event
476                 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(number));
477
478                 // All fine, redirect
479                 return "admin_list_landline"; //NOI18N
480         }
481
482         /**
483          * Deletes given mobile entry data
484          * <p>
485          * @return Redirect outcome
486          */
487         public String deleteMobileData () {
488                 // Get mobile number from helper
489                 DialableMobileNumber number = this.createMobileNumber();
490
491                 // Is all data set
492                 if (number == null) {
493                         // Not set, throw NPE
494                         throw new NullPointerException("mobileNumber is null"); //NOI18N
495                 } else if (number.getPhoneId() == null) {
496                         // Throw NPE again
497                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
498                 } else if (number.getPhoneId() < 1) {
499                         // Invalid number
500                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
501                 } else if (number.getMobileProvider() == null) {
502                         // Throw NPE
503                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
504                 } else if (number.getMobileProvider().getProviderId() == null) {
505                         // ... throw again
506                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
507                 } else if (number.getMobileProvider().getProviderId() < 1) {
508                         // Id not valid
509                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
510                 } else if (number.getPhoneNumber() == null) {
511                         // Throw NPE again
512                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
513                 } else if (number.getPhoneNumber() < 1) {
514                         // Throw NPE again
515                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
516                 }
517
518                 // Call EJB
519                 this.adminPhoneBean.deleteMobileData(number);
520
521                 // Fire event
522                 this.mobileNumberDeletedEvent.fire(new AdminMobileNumberDeletedEvent(number));
523
524                 // All fine, redirect
525                 return "admin_list_mobile"; //NOI18N
526         }
527
528         /**
529          * Changes fax entry data
530          * <p>
531          * @return Redirect outcome
532          */
533         public String doChangeFaxNumber () {
534                 // Get fax number from bean helper
535                 DialableFaxNumber number = this.createFaxNumber();
536
537                 // Is all data set
538                 if (number == null) {
539                         // Not set, throw NPE
540                         throw new NullPointerException("faxNumber is null"); //NOI18N
541                 } else if (number.getPhoneId() == null) {
542                         // Throw NPE again
543                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
544                 } else if (number.getPhoneId() < 1) {
545                         // Invalid number
546                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
547                 } else if (number.getPhoneCountry() == null) {
548                         // Throw NPE
549                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
550                 } else if (number.getPhoneCountry().getCountryId() == null) {
551                         // Throw NPE
552                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
553                 } else if (number.getPhoneCountry().getCountryId() < 1) {
554                         // Throw NPE
555                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
556                 } else if (number.getPhoneAreaCode() == null) {
557                         // ... throw again
558                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
559                 } else if (number.getPhoneAreaCode() < 1) {
560                         // Id not valid
561                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
562                 } else if (number.getPhoneNumber() == null) {
563                         // Throw NPE again
564                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
565                 } else if (number.getPhoneNumber() < 1) {
566                         // Throw NPE again
567                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
568                 }
569
570                 // Is the mobile provider and number the same?
571                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
572                         // Show message
573                         this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
574
575                         // No difference in both together, no need to edit
576                         return ""; //NOI18N
577                 }
578
579                 // Set all data
580                 number.setPhoneCountry(this.getPhoneCountry());
581                 number.setPhoneAreaCode(this.getPhoneAreaCode());
582                 number.setPhoneNumber(this.getPhoneNumber());
583
584                 // Send to bean
585                 DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(number);
586
587                 // Fire event
588                 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
589
590                 // All fine, redirect
591                 return "admin_show_fax"; //NOI18N
592         }
593
594         /**
595          * Changes land-line entry data
596          * <p>
597          * @return Redirect outcome
598          */
599         public String doChangeLandLineNumber () {
600                 // Get land-line number from helper
601                 DialableLandLineNumber number = this.createLandLineNumber();
602
603                 // Is all data set
604                 if (number == null) {
605                         // Not set, throw NPE
606                         throw new NullPointerException("landLineNumber is null"); //NOI18N
607                 } else if (number.getPhoneId() == null) {
608                         // Throw NPE again
609                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
610                 } else if (number.getPhoneId() < 1) {
611                         // Invalid number
612                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
613                 } else if (number.getPhoneCountry() == null) {
614                         // Throw NPE
615                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
616                 } else if (number.getPhoneCountry().getCountryId() == null) {
617                         // Throw NPE
618                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
619                 } else if (number.getPhoneCountry().getCountryId() < 1) {
620                         // Throw NPE
621                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
622                 } else if (number.getPhoneAreaCode() == null) {
623                         // ... throw again
624                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
625                 } else if (number.getPhoneAreaCode() < 1) {
626                         // Id not valid
627                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
628                 } else if (number.getPhoneNumber() == null) {
629                         // Throw NPE again
630                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
631                 } else if (number.getPhoneNumber() < 1) {
632                         // Throw NPE again
633                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
634                 }
635
636                 // Is the mobile provider and number the same?
637                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
638                         // Show message
639                         this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
640
641                         // No difference in both together, no need to edit
642                         return ""; //NOI18N
643                 }
644
645                 // Set all data
646                 number.setPhoneCountry(this.getPhoneCountry());
647                 number.setPhoneAreaCode(this.getPhoneAreaCode());
648                 number.setPhoneNumber(this.getPhoneNumber());
649
650                 // Send to bean
651                 DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(number);
652
653                 // Fire event
654                 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
655
656                 // All fine, redirect
657                 return "admin_show_landline"; //NOI18N
658         }
659
660         /**
661          * Changes mobile entry data
662          * <p>
663          * @return Redirect outcome
664          */
665         public String doUpdateMobileNumber () {
666                 // Get mobile number from helper
667                 DialableMobileNumber number = this.createMobileNumber();
668
669                 // Is all data set
670                 if (number == null) {
671                         // Not set, throw NPE
672                         throw new NullPointerException("mobileNumber is null"); //NOI18N
673                 } else if (number.getPhoneId() == null) {
674                         // Throw NPE again
675                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
676                 } else if (number.getPhoneId() < 1) {
677                         // Invalid number
678                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
679                 } else if (number.getMobileProvider() == null) {
680                         // Throw NPE
681                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
682                 } else if (number.getMobileProvider().getProviderId() == null) {
683                         // ... throw again
684                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
685                 } else if (number.getMobileProvider().getProviderId() < 1) {
686                         // Id not valid
687                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
688                 } else if (number.getPhoneNumber() == null) {
689                         // Throw NPE again
690                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
691                 } else if (number.getPhoneNumber() < 1) {
692                         // Throw NPE again
693                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
694                 } else if (this.getMobileProvider() == null) {
695                         // Not provided
696                         this.showFacesMessage("form_edit_mobile:mobileProvider", "ERROR_ADMIN_NO_MOBILE_PROVIDER_SELECTED"); //NOI18N
697                         return ""; //NOI18N
698                 } else if (this.getMobileProvider().getProviderId() == null) {
699                         // Throw NPE again ...
700                         throw new NullPointerException("this.mobileProvider.providerId is null"); //NOI18N
701                 } else if (this.getMobileProvider().getProviderId() < 0) {
702                         // Invalid id number
703                         throw new IllegalArgumentException(MessageFormat.format("this.mobileProvider.providerId={0} is not valid.", this.getMobileProvider().getProviderId())); //NOI18N
704                 } else if (this.getPhoneNumber() == null) {
705                         // Not provided
706                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_EMPTY_MOBILE_NUMBER"); //NOI18N
707                         return ""; //NOI18N
708                 }
709
710                 // Is the mobile provider and number the same?
711                 if ((Objects.equals(this.getMobileProvider(), number.getMobileProvider())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
712                         // Show message
713                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
714
715                         // No difference in both together, no need to edit
716                         return ""; //NOI18N
717                 }
718
719                 // Set all data
720                 number.setMobileProvider(this.getMobileProvider());
721                 number.setPhoneNumber(this.getPhoneNumber());
722
723                 // Send to bean
724                 DialableMobileNumber updatedNumber = this.adminPhoneBean.updateMobileData(number);
725
726                 // Fire event
727                 this.mobileNumberUpdatedEvent.fire(new AdminMobileNumberUpdatedEvent(updatedNumber));
728
729                 // All fine, redirect
730                 return "admin_show_mobile"; //NOI18N
731         }
732
733         /**
734          * Getter for chosen fax number
735          * <p>
736          * @return fax number
737          */
738         public DialableFaxNumber getFaxNumber () {
739                 return this.faxNumber;
740         }
741
742         /**
743          * Setter for chosen fax number
744          * <p>
745          * @param faxNumber fax number
746          */
747         public void setFaxNumber (final DialableFaxNumber faxNumber) {
748                 this.faxNumber = faxNumber;
749         }
750
751         /**
752          * Getter for chosen land-line number
753          * <p>
754          * @return land-line number
755          */
756         public DialableLandLineNumber getLandLineNumber () {
757                 return this.landLineNumber;
758         }
759
760         /**
761          * Setter for chosen land-line number
762          * <p>
763          * @param landLineNumber land-line number
764          */
765         public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
766                 this.landLineNumber = landLineNumber;
767         }
768
769         /**
770          * Getter for chosen mobile number
771          * <p>
772          * @return mobile number
773          */
774         public DialableMobileNumber getMobileNumber () {
775                 return this.mobileNumber;
776         }
777
778         /**
779          * Setter for chosen mobile number
780          * <p>
781          * @param mobileNumber mobile number
782          */
783         public void setMobileNumber (final DialableMobileNumber mobileNumber) {
784                 this.mobileNumber = mobileNumber;
785         }
786
787         /**
788          * Getter for mobile provider
789          * <p>
790          * @return Mobile provider
791          */
792         public MobileProvider getMobileProvider () {
793                 return this.mobileProvider;
794         }
795
796         /**
797          * Setter for mobile provider
798          * <p>
799          * @param mobileProvider Mobile provider
800          */
801         public void setMobileProvider (final MobileProvider mobileProvider) {
802                 this.mobileProvider = mobileProvider;
803         }
804
805         /**
806          * Getter for phone area code
807          * <p>
808          * @return Phone area code
809          */
810         public Integer getPhoneAreaCode () {
811                 return this.phoneAreaCode;
812         }
813
814         /**
815          * Setter for phone area code
816          * <p>
817          * @param phoneAreaCode Phone area code
818          */
819         public void setPhoneAreaCode (final Integer phoneAreaCode) {
820                 this.phoneAreaCode = phoneAreaCode;
821         }
822
823         /**
824          * Getter for phone country (for dial prefix)
825          * <p>
826          * @return Phone country
827          */
828         public Country getPhoneCountry () {
829                 return this.phoneCountry;
830         }
831
832         /**
833          * Setter for phone country (for dial prefix)
834          * <p>
835          * @param phoneCountry Phone country
836          */
837         public void setPhoneCountry (final Country phoneCountry) {
838                 this.phoneCountry = phoneCountry;
839         }
840
841         /**
842          * Getter for phone entry created timestamp
843          * <p>
844          * @return Phone entry created timestamp
845          */
846         @SuppressWarnings ("ReturnOfDateField")
847         public Calendar getPhoneEntryCreated () {
848                 return this.phoneEntryCreated;
849         }
850
851         /**
852          * Setter for phone entry created timestamp
853          * <p>
854          * @param phoneEntryCreated Phone entry created timestamp
855          */
856         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
857         public void setPhoneEntryCreated (final Calendar phoneEntryCreated) {
858                 this.phoneEntryCreated = phoneEntryCreated;
859         }
860
861         /**
862          * Getter for phone entry updated timestamp
863          * <p>
864          * @return Phone entry updated timestamp
865          */
866         @SuppressWarnings ("ReturnOfDateField")
867         public Calendar getPhoneEntryUpdated () {
868                 return this.phoneEntryUpdated;
869         }
870
871         /**
872          * Setter for phone entry updated timestamp
873          * <p>
874          * @param phoneEntryUpdated Phone entry updated timestamp
875          */
876         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
877         public void setPhoneEntryUpdated (final Calendar phoneEntryUpdated) {
878                 this.phoneEntryUpdated = phoneEntryUpdated;
879         }
880
881         /**
882          * Getter for phone id
883          * <p>
884          * @return Phone id
885          */
886         public Long getPhoneId () {
887                 return this.phoneId;
888         }
889
890         /**
891          * Setter for phone id
892          * <p>
893          * @param phoneId Phone id
894          */
895         public void setPhoneId (final Long phoneId) {
896                 this.phoneId = phoneId;
897         }
898
899         /**
900          * Getter for dial number without prefix
901          * <p>
902          * @return Dial number without prefix
903          */
904         public Long getPhoneNumber () {
905                 return this.phoneNumber;
906         }
907
908         /**
909          * Setter for dial number without prefix
910          * <p>
911          * @param phoneNumber Dial number without prefix
912          */
913         public void setPhoneNumber (final Long phoneNumber) {
914                 this.phoneNumber = phoneNumber;
915         }
916
917         /**
918          * Post-construction method
919          */
920         @PostConstruct
921         public void init () {
922                 // Try it
923                 try {
924                         // Get initial context
925                         Context context = new InitialContext();
926
927                         // Try to lookup the beans
928                         this.adminPhoneBean = (AdminPhoneSessionBeanRemote) context.lookup("java:global/jfinancials-ejb/adminPhone!org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote"); //NOI18N
929                 } catch (final NamingException e) {
930                         // Throw it again
931                         throw new FaceletException(e);
932                 }
933         }
934
935         /**
936          * Returns an instance of a DialableFaxNumber from all fields stored in this
937          * bean.
938          * <p>
939          * @return An instance of a DialableFaxNumber class
940          */
941         private DialableFaxNumber createFaxNumber () {
942                 // Initialize it
943                 DialableFaxNumber number = new FaxNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber());
944
945                 // Add all other data
946                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
947                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
948
949                 // Is id number set?
950                 if (this.getPhoneId() instanceof Long) {
951                         // Set it
952                         number.setPhoneId(this.getPhoneId());
953                 }
954
955                 // Return it
956                 return number;
957         }
958
959         /**
960          * Returns an instance of a DialableLandLineNumber from all fields stored in
961          * this bean.
962          * <p>
963          * @return An instance of a DialableLandLineNumber class
964          */
965         private DialableLandLineNumber createLandLineNumber () {
966                 // Initialize it
967                 DialableLandLineNumber number = new LandLineNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber());
968
969                 // Add all other data
970                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
971                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
972
973                 // Is id number set?
974                 if (this.getPhoneId() instanceof Long) {
975                         // Set it
976                         number.setPhoneId(this.getPhoneId());
977                 }
978
979                 // Return it
980                 return number;
981         }
982
983         /**
984          * Returns an instance of a DialableMobileNumber from all fields stored in
985          * this bean.
986          * <p>
987          * @return An instance of a DialableMobileNumber class
988          */
989         private DialableMobileNumber createMobileNumber () {
990                 // Initialize it
991                 DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getPhoneNumber());
992
993                 // Add all other data
994                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
995                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
996
997                 // Is id number set?
998                 if (this.getPhoneId() instanceof Long) {
999                         // Set it
1000                         number.setPhoneId(this.getPhoneId());
1001                 }
1002
1003                 // Return it
1004                 return number;
1005         }
1006
1007 }