]> git.mxchange.org Git - jfinancials-war.git/blob - src/java/org/mxchange/jfinancials/beans/phone/FinancialsAdminPhoneWebRequestBean.java
Please cherry-pick:
[jfinancials-war.git] / src / java / org / mxchange / jfinancials / beans / phone / FinancialsAdminPhoneWebRequestBean.java
1 /*
2  * Copyright (C) 2016 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.List;
21 import java.util.Objects;
22 import javax.annotation.PostConstruct;
23 import javax.enterprise.context.RequestScoped;
24 import javax.enterprise.event.Event;
25 import javax.enterprise.inject.Any;
26 import javax.faces.view.facelets.FaceletException;
27 import javax.inject.Inject;
28 import javax.inject.Named;
29 import javax.naming.Context;
30 import javax.naming.InitialContext;
31 import javax.naming.NamingException;
32 import org.mxchange.jcountry.data.Country;
33 import org.mxchange.jfinancials.beans.BaseFinancialsController;
34 import org.mxchange.jfinancials.beans.helper.FinancialsWebRequestHelperController;
35 import org.mxchange.jphone.events.fax.deleted.AdminDeletedFaxNumberEvent;
36 import org.mxchange.jphone.events.fax.deleted.AdminFaxNumberDeletedEvent;
37 import org.mxchange.jphone.events.fax.removed.AdminFaxNumberRemovedFromListEvent;
38 import org.mxchange.jphone.events.fax.removed.AdminRemoveFaxNumberFromListEvent;
39 import org.mxchange.jphone.events.fax.updated.AdminFaxNumberUpdatedEvent;
40 import org.mxchange.jphone.events.fax.updated.AdminUpdatedFaxNumberEvent;
41 import org.mxchange.jphone.events.landline.deleted.AdminDeletedLandLineNumberEvent;
42 import org.mxchange.jphone.events.landline.deleted.AdminLandLineNumberDeletedEvent;
43 import org.mxchange.jphone.events.landline.removed.AdminLandLineNumberRemovedFromListEvent;
44 import org.mxchange.jphone.events.landline.removed.AdminRemoveLandLineNumberFromListEvent;
45 import org.mxchange.jphone.events.landline.updated.AdminLandLineNumberUpdatedEvent;
46 import org.mxchange.jphone.events.landline.updated.AdminUpdatedLandLineNumberEvent;
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.phonenumbers.fax.DialableFaxNumber;
54 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
55 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
56 import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
57 import org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote;
58
59 /**
60  * Administrative bean (controller) for phone numbers
61  * <p>
62  * @author Roland Häder<roland@mxchange.org>
63  */
64 @Named ("adminPhoneController")
65 @RequestScoped
66 public class FinancialsAdminPhoneWebRequestBean extends BaseFinancialsController implements FinancialsAdminPhoneWebRequestController {
67
68         /**
69          * Call-stack position
70          */
71         private static final short THREAD_STACK = 5;
72
73         /**
74          * Serial number
75          */
76         private static final long serialVersionUID = 184_598_175_371_269_016L;
77
78         /**
79          * Remote EJB for phone number (administrative)
80          */
81         private AdminPhoneSessionBeanRemote adminPhoneBean;
82
83         /**
84          * Bean helper
85          */
86         @Inject
87         private FinancialsWebRequestHelperController beanHelper;
88
89         /**
90          *  fax number
91          */
92         private DialableFaxNumber choosenFaxNumber;
93
94         /**
95          *  land-line number
96          */
97         private DialableLandLineNumber choosenLandLineNumber;
98
99         /**
100          *  mobile number
101          */
102         private DialableMobileNumber choosenMobileNumber;
103
104         /**
105          * Event being fired when an administrator has deleted fax number
106          */
107         @Inject
108         @Any
109         private Event<AdminDeletedFaxNumberEvent> faxNumberDeletedEvent;
110
111         /**
112          * Event being fired when an administrator has updated fax number
113          */
114         @Inject
115         @Any
116         private Event<AdminUpdatedFaxNumberEvent> faxNumberUpdatedEvent;
117
118         /**
119          * Event being fired when an administrator has deleted land-line number
120          */
121         @Inject
122         @Any
123         private Event<AdminDeletedLandLineNumberEvent> landLineNumberDeletedEvent;
124
125         /**
126          * Event being fired when an administrator has updated fax number
127          */
128         @Inject
129         @Any
130         private Event<AdminUpdatedLandLineNumberEvent> landLineNumberUpdatedEvent;
131
132         /**
133          * Event being fired when an administrator has deleted mobile number
134          */
135         @Inject
136         @Any
137         private Event<AdminDeletedMobileNumberEvent> mobileNumberDeletedEvent;
138
139         /**
140          * Event being fired when an administrator has updated land-line number
141          */
142         @Inject
143         @Any
144         private Event<AdminUpdatedMobileNumberEvent> mobileNumberUpdatedEvent;
145
146         /**
147          * Mobile provider
148          */
149         private MobileProvider mobileProvider;
150
151         /**
152          * Area code (city dial prefix)
153          */
154         private Integer phoneAreaCode;
155
156         /**
157          * Generic hone controller
158          */
159         @Inject
160         private FinancialsPhoneWebApplicationController phoneController;
161
162         /**
163          * Country (for dial prefix)
164          */
165         private Country phoneCountry;
166
167         /**
168          * Phone number
169          */
170         private Long phoneNumber;
171
172         /**
173          * Event being fired when a list of all unsed fax numbers is being created.
174          */
175         @Inject
176         @Any
177         private Event<AdminRemoveFaxNumberFromListEvent> removeLinkedFaxNumbersEvent;
178
179         /**
180          * Event being fired when a list of all unsed land-line numbers is being
181          * created.
182          */
183         @Inject
184         @Any
185         private Event<AdminRemoveLandLineNumberFromListEvent> removeLinkedLandLineNumbersEvent;
186
187         /**
188          * Event being fired when a list of all unsed mobile numbers is being
189          * created.
190          */
191         @Inject
192         @Any
193         private Event<AdminRemoveMobileNumberFromListEvent> removeLinkedMobileNumbersEvent;
194
195         /**
196          * Default constructor
197          */
198         public FinancialsAdminPhoneWebRequestBean () {
199                 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
200                 // System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
201         }
202
203         @Override
204         public List<DialableFaxNumber> allNonLinkedFaxNumbers () {
205                 // Get list of all mobile numbers
206                 List<DialableFaxNumber> list = this.phoneController.allFaxNumbers();
207
208                 // Visit all controllers to reduce the list
209                 this.removeLinkedFaxNumbersEvent.fire(new AdminFaxNumberRemovedFromListEvent(list));
210
211                 // Return it
212                 return list;
213         }
214
215         @Override
216         public List<DialableLandLineNumber> allNonLinkedLandLineNumbers () {
217                 // Get list of all mobile numbers
218                 List<DialableLandLineNumber> list = this.phoneController.allLandLineNumbers();
219
220                 // Visit all controllers to reduce the list
221                 this.removeLinkedLandLineNumbersEvent.fire(new AdminLandLineNumberRemovedFromListEvent(list));
222
223                 // Return it
224                 return list;
225         }
226
227         @Override
228         public List<DialableMobileNumber> allNonLinkedMobileNumbers () {
229                 // Get list of all mobile numbers
230                 List<DialableMobileNumber> list = this.phoneController.allMobileNumbers();
231
232                 // Visit all controllers to reduce the list
233                 this.removeLinkedMobileNumbersEvent.fire(new AdminMobileNumberRemovedFromListEvent(list));
234
235                 // Return it
236                 return list;
237         }
238
239         @Override
240         public String deleteFaxData (final DialableFaxNumber faxNumber) {
241                 // Is all data set
242                 if (faxNumber == null) {
243                         // Not set, throw NPE
244                         throw new NullPointerException("faxNumber is null"); //NOI18N
245                 } else if (faxNumber.getPhoneId() == null) {
246                         // Throw NPE again
247                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
248                 } else if (faxNumber.getPhoneId() < 1) {
249                         // Invalid number
250                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N
251                 } else if (faxNumber.getPhoneCountry() == null) {
252                         // Throw NPE
253                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
254                 } else if (faxNumber.getPhoneCountry().getCountryId() == null) {
255                         // Throw NPE
256                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
257                 } else if (faxNumber.getPhoneCountry().getCountryId() < 1) {
258                         // Throw NPE
259                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", faxNumber.getPhoneCountry().getCountryId())); //NOI18N
260                 } else if (faxNumber.getPhoneAreaCode() == null) {
261                         // ... throw again
262                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
263                 } else if (faxNumber.getPhoneAreaCode() < 1) {
264                         // Id not valid
265                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", faxNumber.getPhoneAreaCode())); //NOI18N
266                 } else if (faxNumber.getPhoneNumber() == null) {
267                         // Throw NPE again
268                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
269                 } else if (faxNumber.getPhoneNumber() < 1) {
270                         // Throw NPE again
271                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", faxNumber.getPhoneNumber())); //NOI18N
272                 }
273
274                 // Call EJB
275                 this.adminPhoneBean.deleteFaxData(faxNumber);
276
277                 // Fire event
278                 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(faxNumber));
279
280                 // All fine, redirect
281                 return "admin_list_fax"; //NOI18N
282         }
283
284         @Override
285         public String deleteLandLineData (final DialableLandLineNumber landLineNumber) {
286                 // Is all data set
287                 if (landLineNumber == null) {
288                         // Not set, throw NPE
289                         throw new NullPointerException("landLineNumber is null"); //NOI18N
290                 } else if (landLineNumber.getPhoneId() == null) {
291                         // Throw NPE again
292                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
293                 } else if (landLineNumber.getPhoneId() < 1) {
294                         // Invalid number
295                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N
296                 } else if (landLineNumber.getPhoneCountry() == null) {
297                         // Throw NPE
298                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
299                 } else if (landLineNumber.getPhoneCountry().getCountryId() == null) {
300                         // Throw NPE
301                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
302                 } else if (landLineNumber.getPhoneCountry().getCountryId() < 1) {
303                         // Throw NPE
304                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", landLineNumber.getPhoneCountry().getCountryId())); //NOI18N
305                 } else if (landLineNumber.getPhoneAreaCode() == null) {
306                         // ... throw again
307                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
308                 } else if (landLineNumber.getPhoneAreaCode() < 1) {
309                         // Id not valid
310                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", landLineNumber.getPhoneAreaCode())); //NOI18N
311                 } else if (landLineNumber.getPhoneNumber() == null) {
312                         // Throw NPE again
313                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
314                 } else if (landLineNumber.getPhoneNumber() < 1) {
315                         // Throw NPE again
316                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", landLineNumber.getPhoneNumber())); //NOI18N
317                 }
318
319                 // Call EJB
320                 this.adminPhoneBean.deleteLandLineData(landLineNumber);
321
322                 // Fire event
323                 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(landLineNumber));
324
325                 // All fine, redirect
326                 return "admin_list_landline"; //NOI18N
327         }
328
329         @Override
330         public String deleteMobileData (final DialableMobileNumber mobileNumber) {
331                 // Is all data set
332                 if (mobileNumber == null) {
333                         // Not set, throw NPE
334                         throw new NullPointerException("mobileNumber is null"); //NOI18N
335                 } else if (mobileNumber.getPhoneId() == null) {
336                         // Throw NPE again
337                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
338                 } else if (mobileNumber.getPhoneId() < 1) {
339                         // Invalid number
340                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //NOI18N
341                 } else if (mobileNumber.getMobileProvider() == null) {
342                         // Throw NPE
343                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
344                 } else if (mobileNumber.getMobileProvider().getProviderId() == null) {
345                         // ... throw again
346                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
347                 } else if (mobileNumber.getMobileProvider().getProviderId() < 1) {
348                         // Id not valid
349                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N
350                 } else if (mobileNumber.getPhoneNumber() == null) {
351                         // Throw NPE again
352                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
353                 } else if (mobileNumber.getPhoneNumber() < 1) {
354                         // Throw NPE again
355                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", mobileNumber.getPhoneNumber())); //NOI18N
356                 }
357
358                 // Call EJB
359                 this.adminPhoneBean.deleteMobileData(mobileNumber);
360
361                 // Fire event
362                 this.mobileNumberDeletedEvent.fire(new AdminMobileNumberDeletedEvent(mobileNumber));
363
364                 // All fine, redirect
365                 return "admin_list_mobile"; //NOI18N
366         }
367
368         @Override
369         public String editFaxData (final DialableFaxNumber faxNumber) {
370                 // Is all data set
371                 if (faxNumber == null) {
372                         // Not set, throw NPE
373                         throw new NullPointerException("faxNumber is null"); //NOI18N
374                 } else if (faxNumber.getPhoneId() == null) {
375                         // Throw NPE again
376                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
377                 } else if (faxNumber.getPhoneId() < 1) {
378                         // Invalid number
379                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N
380                 } else if (faxNumber.getPhoneCountry() == null) {
381                         // Throw NPE
382                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
383                 } else if (faxNumber.getPhoneCountry().getCountryId() == null) {
384                         // Throw NPE
385                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
386                 } else if (faxNumber.getPhoneCountry().getCountryId() < 1) {
387                         // Throw NPE
388                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", faxNumber.getPhoneCountry().getCountryId())); //NOI18N
389                 } else if (faxNumber.getPhoneAreaCode() == null) {
390                         // ... throw again
391                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
392                 } else if (faxNumber.getPhoneAreaCode() < 1) {
393                         // Id not valid
394                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", faxNumber.getPhoneAreaCode())); //NOI18N
395                 } else if (faxNumber.getPhoneNumber() == null) {
396                         // Throw NPE again
397                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
398                 } else if (faxNumber.getPhoneNumber() < 1) {
399                         // Throw NPE again
400                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", faxNumber.getPhoneNumber())); //NOI18N
401                 }
402
403                 // Is the mobile provider and number the same?
404                 if ((Objects.equals(this.getPhoneCountry(), faxNumber.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), faxNumber.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), faxNumber.getPhoneNumber()))) {
405                         // Show message
406                         this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
407
408                         // No difference in both together, no need to edit
409                         return ""; //NOI18N
410                 }
411
412                 // Set all data
413                 faxNumber.setPhoneCountry(this.getPhoneCountry());
414                 faxNumber.setPhoneAreaCode(this.getPhoneAreaCode());
415                 faxNumber.setPhoneNumber(this.getPhoneNumber());
416
417                 // Send to bean
418                 DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(faxNumber);
419
420                 // Fire event
421                 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
422
423                 // All fine, redirect
424                 return "admin_show_fax"; //NOI18N
425         }
426
427         @Override
428         public String editLandLineData (final DialableLandLineNumber landLineNumber) {
429                 // Is all data set
430                 if (landLineNumber == null) {
431                         // Not set, throw NPE
432                         throw new NullPointerException("landLineNumber is null"); //NOI18N
433                 } else if (landLineNumber.getPhoneId() == null) {
434                         // Throw NPE again
435                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
436                 } else if (landLineNumber.getPhoneId() < 1) {
437                         // Invalid number
438                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N
439                 } else if (landLineNumber.getPhoneCountry() == null) {
440                         // Throw NPE
441                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
442                 } else if (landLineNumber.getPhoneCountry().getCountryId() == null) {
443                         // Throw NPE
444                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
445                 } else if (landLineNumber.getPhoneCountry().getCountryId() < 1) {
446                         // Throw NPE
447                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", landLineNumber.getPhoneCountry().getCountryId())); //NOI18N
448                 } else if (landLineNumber.getPhoneAreaCode() == null) {
449                         // ... throw again
450                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
451                 } else if (landLineNumber.getPhoneAreaCode() < 1) {
452                         // Id not valid
453                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", landLineNumber.getPhoneAreaCode())); //NOI18N
454                 } else if (landLineNumber.getPhoneNumber() == null) {
455                         // Throw NPE again
456                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
457                 } else if (landLineNumber.getPhoneNumber() < 1) {
458                         // Throw NPE again
459                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", landLineNumber.getPhoneNumber())); //NOI18N
460                 }
461
462                 // Is the mobile provider and number the same?
463                 if ((Objects.equals(this.getPhoneCountry(), landLineNumber.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), landLineNumber.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), landLineNumber.getPhoneNumber()))) {
464                         // Show message
465                         this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
466
467                         // No difference in both together, no need to edit
468                         return ""; //NOI18N
469                 }
470
471                 // Set all data
472                 landLineNumber.setPhoneCountry(this.getPhoneCountry());
473                 landLineNumber.setPhoneAreaCode(this.getPhoneAreaCode());
474                 landLineNumber.setPhoneNumber(this.getPhoneNumber());
475
476                 // Send to bean
477                 DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(landLineNumber);
478
479                 // Fire event
480                 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
481
482                 // All fine, redirect
483                 return "admin_show_landline"; //NOI18N
484         }
485
486         @Override
487         public String editMobileData (final DialableMobileNumber mobileNumber) {
488                 // Is all data set
489                 if (mobileNumber == null) {
490                         // Not set, throw NPE
491                         throw new NullPointerException("mobileNumber is null"); //NOI18N
492                 } else if (mobileNumber.getPhoneId() == null) {
493                         // Throw NPE again
494                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
495                 } else if (mobileNumber.getPhoneId() < 1) {
496                         // Invalid number
497                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //NOI18N
498                 } else if (mobileNumber.getMobileProvider() == null) {
499                         // Throw NPE
500                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
501                 } else if (mobileNumber.getMobileProvider().getProviderId() == null) {
502                         // ... throw again
503                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
504                 } else if (mobileNumber.getMobileProvider().getProviderId() < 1) {
505                         // Id not valid
506                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N
507                 } else if (mobileNumber.getPhoneNumber() == null) {
508                         // Throw NPE again
509                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
510                 } else if (mobileNumber.getPhoneNumber() < 1) {
511                         // Throw NPE again
512                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", mobileNumber.getPhoneNumber())); //NOI18N
513                 } else if (this.getMobileProvider() == null) {
514                         // Not provided
515                         this.showFacesMessage("form_edit_mobile:mobileProvider", "ERROR_ADMIN_NO_MOBILE_PROVIDER_SELECTED"); //NOI18N
516                         return ""; //NOI18N
517                 } else if (this.getMobileProvider().getProviderId() == null) {
518                         // Throw NPE again ...
519                         throw new NullPointerException("this.mobileProvider.providerId is null"); //NOI18N
520                 } else if (this.getMobileProvider().getProviderId() < 0) {
521                         // Invalid id number
522                         throw new IllegalArgumentException(MessageFormat.format("this.mobileProvider.providerId={0} is not valid.", this.getMobileProvider().getProviderId())); //NOI18N
523                 } else if (this.getPhoneNumber() == null) {
524                         // Not provided
525                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_EMPTY_MOBILE_NUMBER"); //NOI18N
526                         return ""; //NOI18N
527                 }
528
529                 // Is the mobile provider and number the same?
530                 if ((Objects.equals(this.getMobileProvider(), mobileNumber.getMobileProvider())) && (Objects.equals(this.getPhoneNumber(), mobileNumber.getPhoneNumber()))) {
531                         // Show message
532                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
533
534                         // No difference in both together, no need to edit
535                         return ""; //NOI18N
536                 }
537
538                 // Set all data
539                 mobileNumber.setMobileProvider(this.getMobileProvider());
540                 mobileNumber.setPhoneNumber(this.getPhoneNumber());
541
542                 // Send to bean
543                 DialableMobileNumber updatedNumber = this.adminPhoneBean.updateMobileData(mobileNumber);
544
545                 // Fire event
546                 this.mobileNumberUpdatedEvent.fire(new AdminMobileNumberUpdatedEvent(updatedNumber));
547
548                 // All fine, redirect
549                 return "admin_show_mobile"; //NOI18N
550         }
551
552         @Override
553         public DialableFaxNumber getFaxNumber () {
554                 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
555                 // System.out.println(MessageFormat.format("{0}: Returning this.choosenFaxNumber={1}, caller: {2}", this.getClass().getSimpleName(), this.choosenFaxNumber, caller));
556                 return this.choosenFaxNumber;
557         }
558
559         @Override
560         public void setFaxNumber (final DialableFaxNumber choosenFaxNumber) {
561                 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
562                 // System.out.println(MessageFormat.format("{0}: Settin choosenFaxNumber={1}, previous: this.choosenFaxNumber={2}, caller: {3}", this.getClass().getSimpleName(), choosenFaxNumber, this.choosenFaxNumber, caller));
563                 this.choosenFaxNumber = choosenFaxNumber;
564         }
565
566         @Override
567         public DialableLandLineNumber getLandLineNumber () {
568                 return this.choosenLandLineNumber;
569         }
570
571         @Override
572         public void setLandLineNumber (final DialableLandLineNumber choosenLandLineNumber) {
573                 this.choosenLandLineNumber = choosenLandLineNumber;
574         }
575
576         @Override
577         public DialableMobileNumber getMobileNumber () {
578                 return this.choosenMobileNumber;
579         }
580
581         @Override
582         public void setMobileNumber (final DialableMobileNumber choosenMobileNumber) {
583                 this.choosenMobileNumber = choosenMobileNumber;
584         }
585
586         @Override
587         public MobileProvider getMobileProvider () {
588                 return this.mobileProvider;
589         }
590
591         @Override
592         public void setMobileProvider (final MobileProvider mobileProvider) {
593                 this.mobileProvider = mobileProvider;
594         }
595
596         @Override
597         public Integer getPhoneAreaCode () {
598                 return this.phoneAreaCode;
599         }
600
601         @Override
602         public void setPhoneAreaCode (final Integer phoneAreaCode) {
603                 this.phoneAreaCode = phoneAreaCode;
604         }
605
606         @Override
607         public Country getPhoneCountry () {
608                 return this.phoneCountry;
609         }
610
611         @Override
612         public void setPhoneCountry (final Country phoneCountry) {
613                 this.phoneCountry = phoneCountry;
614         }
615
616         @Override
617         public Long getPhoneNumber () {
618                 return this.phoneNumber;
619         }
620
621         @Override
622         public void setPhoneNumber (final Long phoneNumber) {
623                 this.phoneNumber = phoneNumber;
624         }
625
626         /**
627          * Post-construction method
628          */
629         @PostConstruct
630         public void init () {
631                 // Try it
632                 try {
633                         // Get initial context
634                         Context context = new InitialContext();
635
636                         // Try to lookup the beans
637                         this.adminPhoneBean = (AdminPhoneSessionBeanRemote) context.lookup("java:global/jfinancials-ejb/adminPhone!org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote"); //NOI18N
638                 } catch (final NamingException e) {
639                         // Throw it again
640                         throw new FaceletException(e);
641                 }
642         }
643
644 }