]> git.mxchange.org Git - pizzaservice-war.git/blob - src/java/org/mxchange/pizzaapplication/beans/phone/PizzaAdminPhoneWebRequestBean.java
Please cherry-pick:
[pizzaservice-war.git] / src / java / org / mxchange / pizzaapplication / beans / phone / PizzaAdminPhoneWebRequestBean.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.pizzaapplication.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.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.deleted.AdminDeletedLandLineNumberEvent;
40 import org.mxchange.jphone.events.landline.deleted.AdminLandLineNumberDeletedEvent;
41 import org.mxchange.jphone.events.landline.removed.AdminLandLineNumberRemovedFromListEvent;
42 import org.mxchange.jphone.events.landline.removed.AdminRemoveLandLineNumberFromListEvent;
43 import org.mxchange.jphone.events.landline.updated.AdminLandLineNumberUpdatedEvent;
44 import org.mxchange.jphone.events.landline.updated.AdminUpdatedLandLineNumberEvent;
45 import org.mxchange.jphone.events.mobile.deleted.AdminDeletedMobileNumberEvent;
46 import org.mxchange.jphone.events.mobile.deleted.AdminMobileNumberDeletedEvent;
47 import org.mxchange.jphone.events.mobile.remove.AdminMobileNumberRemovedFromListEvent;
48 import org.mxchange.jphone.events.mobile.remove.AdminRemoveMobileNumberFromListEvent;
49 import org.mxchange.jphone.events.mobile.updated.AdminMobileNumberUpdatedEvent;
50 import org.mxchange.jphone.events.mobile.updated.AdminUpdatedMobileNumberEvent;
51 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
52 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
53 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
54 import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
55 import org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote;
56 import org.mxchange.pizzaapplication.beans.BasePizzaController;
57 import org.mxchange.pizzaapplication.beans.helper.PizzaWebRequestHelperController;
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 PizzaAdminPhoneWebRequestBean extends BasePizzaController implements PizzaAdminPhoneWebRequestController {
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 PizzaWebRequestHelperController beanHelper;
88
89         /**
90          * fax number
91          */
92         private DialableFaxNumber faxNumber;
93
94         /**
95          * Event being fired when an administrator has deleted fax number
96          */
97         @Inject
98         @Any
99         private Event<AdminDeletedFaxNumberEvent> faxNumberDeletedEvent;
100
101         /**
102          * Event being fired when an administrator has updated fax number
103          */
104         @Inject
105         @Any
106         private Event<AdminUpdatedFaxNumberEvent> faxNumberUpdatedEvent;
107
108         /**
109          * land-line number
110          */
111         private DialableLandLineNumber landLineNumber;
112
113         /**
114          * Event being fired when an administrator has deleted land-line number
115          */
116         @Inject
117         @Any
118         private Event<AdminDeletedLandLineNumberEvent> landLineNumberDeletedEvent;
119
120         /**
121          * Event being fired when an administrator has updated fax number
122          */
123         @Inject
124         @Any
125         private Event<AdminUpdatedLandLineNumberEvent> landLineNumberUpdatedEvent;
126
127         /**
128          * Chosen mobile number
129          */
130         private DialableMobileNumber mobileNumber;
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 PizzaPhoneWebApplicationController 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 PizzaAdminPhoneWebRequestBean () {
199                 // Call super constructor
200                 super();
201
202                 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
203                 // System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
204         }
205
206         /**
207          * Returns a list of all unused ("non-linked") land-line numbers
208          * <p>
209          * @return List with all unused land-line numbers
210          */
211         public List<DialableFaxNumber> allNonLinkedFaxNumbers () {
212                 // Get list of all mobile numbers
213                 List<DialableFaxNumber> list = this.phoneController.allFaxNumbers();
214
215                 // Visit all controllers to reduce the list
216                 this.removeLinkedFaxNumbersEvent.fire(new AdminFaxNumberRemovedFromListEvent(list));
217
218                 // Return it
219                 return list;
220         }
221
222         /**
223          * Returns a list of all unused ("non-linked") land-line numbers
224          * <p>
225          * @return List with all unused land-line numbers
226          */
227         public List<DialableLandLineNumber> allNonLinkedLandLineNumbers () {
228                 // Get list of all mobile numbers
229                 List<DialableLandLineNumber> list = this.phoneController.allLandLineNumbers();
230
231                 // Visit all controllers to reduce the list
232                 this.removeLinkedLandLineNumbersEvent.fire(new AdminLandLineNumberRemovedFromListEvent(list));
233
234                 // Return it
235                 return list;
236         }
237
238         /**
239          * Returns a list of all unused ("non-linked") mobile numbers
240          * <p>
241          * @return List with all unused mobile numbers
242          */
243         public List<DialableMobileNumber> allNonLinkedMobileNumbers () {
244                 // Get list of all mobile numbers
245                 List<DialableMobileNumber> list = this.phoneController.allMobileNumbers();
246
247                 // Visit all controllers to reduce the list
248                 this.removeLinkedMobileNumbersEvent.fire(new AdminMobileNumberRemovedFromListEvent(list));
249
250                 // Return it
251                 return list;
252         }
253
254         /**
255          * Deletes given fax entry data
256          * <p>
257          * @return Redirect outcome
258          */
259         public String deleteFaxData () {
260                 // Get fax number from bean helper
261                 DialableFaxNumber number = this.beanHelper.getFaxNumber();
262
263                 // Is all data set
264                 if (number == null) {
265                         // Not set, throw NPE
266                         throw new NullPointerException("faxNumber is null"); //NOI18N
267                 } else if (number.getPhoneId() == null) {
268                         // Throw NPE again
269                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
270                 } else if (number.getPhoneId() < 1) {
271                         // Invalid number
272                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
273                 } else if (number.getPhoneCountry() == null) {
274                         // Throw NPE
275                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
276                 } else if (number.getPhoneCountry().getCountryId() == null) {
277                         // Throw NPE
278                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
279                 } else if (number.getPhoneCountry().getCountryId() < 1) {
280                         // Throw NPE
281                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
282                 } else if (number.getPhoneAreaCode() == null) {
283                         // ... throw again
284                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
285                 } else if (number.getPhoneAreaCode() < 1) {
286                         // Id not valid
287                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
288                 } else if (number.getPhoneNumber() == null) {
289                         // Throw NPE again
290                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
291                 } else if (number.getPhoneNumber() < 1) {
292                         // Throw NPE again
293                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
294                 }
295
296                 // Call EJB
297                 this.adminPhoneBean.deleteFaxData(number);
298
299                 // Fire event
300                 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(number));
301
302                 // All fine, redirect
303                 return "admin_list_fax"; //NOI18N
304         }
305
306         /**
307          * Deletes given land-line entry data
308          * <p>
309          * @return Redirect outcome
310          */
311         public String deleteLandLineData () {
312                 // Get land-line number from helper
313                 DialableLandLineNumber number = this.beanHelper.getLandLineNumber();
314
315                 // Is all data set
316                 if (number == null) {
317                         // Not set, throw NPE
318                         throw new NullPointerException("landLineNumber is null"); //NOI18N
319                 } else if (number.getPhoneId() == null) {
320                         // Throw NPE again
321                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
322                 } else if (number.getPhoneId() < 1) {
323                         // Invalid number
324                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
325                 } else if (number.getPhoneCountry() == null) {
326                         // Throw NPE
327                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
328                 } else if (number.getPhoneCountry().getCountryId() == null) {
329                         // Throw NPE
330                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
331                 } else if (number.getPhoneCountry().getCountryId() < 1) {
332                         // Throw NPE
333                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
334                 } else if (number.getPhoneAreaCode() == null) {
335                         // ... throw again
336                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
337                 } else if (number.getPhoneAreaCode() < 1) {
338                         // Id not valid
339                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
340                 } else if (number.getPhoneNumber() == null) {
341                         // Throw NPE again
342                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
343                 } else if (number.getPhoneNumber() < 1) {
344                         // Throw NPE again
345                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
346                 }
347
348                 // Call EJB
349                 this.adminPhoneBean.deleteLandLineData(number);
350
351                 // Fire event
352                 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(number));
353
354                 // All fine, redirect
355                 return "admin_list_landline"; //NOI18N
356         }
357
358         /**
359          * Deletes given mobile entry data
360          * <p>
361          * @return Redirect outcome
362          */
363         public String deleteMobileData () {
364                 // Get mobile number from helper
365                 DialableMobileNumber number = this.beanHelper.getMobileNumber();
366
367                 // Is all data set
368                 if (number == null) {
369                         // Not set, throw NPE
370                         throw new NullPointerException("mobileNumber is null"); //NOI18N
371                 } else if (number.getPhoneId() == null) {
372                         // Throw NPE again
373                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
374                 } else if (number.getPhoneId() < 1) {
375                         // Invalid number
376                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
377                 } else if (number.getMobileProvider() == null) {
378                         // Throw NPE
379                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
380                 } else if (number.getMobileProvider().getProviderId() == null) {
381                         // ... throw again
382                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
383                 } else if (number.getMobileProvider().getProviderId() < 1) {
384                         // Id not valid
385                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
386                 } else if (number.getPhoneNumber() == null) {
387                         // Throw NPE again
388                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
389                 } else if (number.getPhoneNumber() < 1) {
390                         // Throw NPE again
391                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
392                 }
393
394                 // Call EJB
395                 this.adminPhoneBean.deleteMobileData(number);
396
397                 // Fire event
398                 this.mobileNumberDeletedEvent.fire(new AdminMobileNumberDeletedEvent(number));
399
400                 // All fine, redirect
401                 return "admin_list_mobile"; //NOI18N
402         }
403
404         /**
405          * Changes fax entry data
406          * <p>
407          * @return Redirect outcome
408          */
409         public String doChangeFaxNumber () {
410                 // Get fax number from bean helper
411                 DialableFaxNumber number = this.beanHelper.getFaxNumber();
412
413                 // Is all data set
414                 if (number == null) {
415                         // Not set, throw NPE
416                         throw new NullPointerException("faxNumber is null"); //NOI18N
417                 } else if (number.getPhoneId() == null) {
418                         // Throw NPE again
419                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
420                 } else if (number.getPhoneId() < 1) {
421                         // Invalid number
422                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
423                 } else if (number.getPhoneCountry() == null) {
424                         // Throw NPE
425                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
426                 } else if (number.getPhoneCountry().getCountryId() == null) {
427                         // Throw NPE
428                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
429                 } else if (number.getPhoneCountry().getCountryId() < 1) {
430                         // Throw NPE
431                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
432                 } else if (number.getPhoneAreaCode() == null) {
433                         // ... throw again
434                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
435                 } else if (number.getPhoneAreaCode() < 1) {
436                         // Id not valid
437                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
438                 } else if (number.getPhoneNumber() == null) {
439                         // Throw NPE again
440                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
441                 } else if (number.getPhoneNumber() < 1) {
442                         // Throw NPE again
443                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
444                 }
445
446                 // Is the mobile provider and number the same?
447                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
448                         // Show message
449                         this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
450
451                         // No difference in both together, no need to edit
452                         return ""; //NOI18N
453                 }
454
455                 // Set all data
456                 number.setPhoneCountry(this.getPhoneCountry());
457                 number.setPhoneAreaCode(this.getPhoneAreaCode());
458                 number.setPhoneNumber(this.getPhoneNumber());
459
460                 // Send to bean
461                 DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(number);
462
463                 // Fire event
464                 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
465
466                 // All fine, redirect
467                 return "admin_show_fax"; //NOI18N
468         }
469
470         /**
471          * Changes land-line entry data
472          * <p>
473          * @return Redirect outcome
474          */
475         public String doChangeLandLineNumber () {
476                 // Get land-line number from helper
477                 DialableLandLineNumber number = this.beanHelper.getLandLineNumber();
478
479                 // Is all data set
480                 if (number == null) {
481                         // Not set, throw NPE
482                         throw new NullPointerException("landLineNumber is null"); //NOI18N
483                 } else if (number.getPhoneId() == null) {
484                         // Throw NPE again
485                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
486                 } else if (number.getPhoneId() < 1) {
487                         // Invalid number
488                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
489                 } else if (number.getPhoneCountry() == null) {
490                         // Throw NPE
491                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
492                 } else if (number.getPhoneCountry().getCountryId() == null) {
493                         // Throw NPE
494                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
495                 } else if (number.getPhoneCountry().getCountryId() < 1) {
496                         // Throw NPE
497                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
498                 } else if (number.getPhoneAreaCode() == null) {
499                         // ... throw again
500                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
501                 } else if (number.getPhoneAreaCode() < 1) {
502                         // Id not valid
503                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
504                 } else if (number.getPhoneNumber() == null) {
505                         // Throw NPE again
506                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
507                 } else if (number.getPhoneNumber() < 1) {
508                         // Throw NPE again
509                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
510                 }
511
512                 // Is the mobile provider and number the same?
513                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
514                         // Show message
515                         this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
516
517                         // No difference in both together, no need to edit
518                         return ""; //NOI18N
519                 }
520
521                 // Set all data
522                 number.setPhoneCountry(this.getPhoneCountry());
523                 number.setPhoneAreaCode(this.getPhoneAreaCode());
524                 number.setPhoneNumber(this.getPhoneNumber());
525
526                 // Send to bean
527                 DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(number);
528
529                 // Fire event
530                 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
531
532                 // All fine, redirect
533                 return "admin_show_landline"; //NOI18N
534         }
535
536         /**
537          * Changes mobile entry data
538          * <p>
539          * @return Redirect outcome
540          */
541         public String doUpdateMobileNumber () {
542                 // Get mobile number from helper
543                 DialableMobileNumber number = this.beanHelper.getMobileNumber();
544
545                 // Is all data set
546                 if (number == null) {
547                         // Not set, throw NPE
548                         throw new NullPointerException("mobileNumber is null"); //NOI18N
549                 } else if (number.getPhoneId() == null) {
550                         // Throw NPE again
551                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
552                 } else if (number.getPhoneId() < 1) {
553                         // Invalid number
554                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
555                 } else if (number.getMobileProvider() == null) {
556                         // Throw NPE
557                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
558                 } else if (number.getMobileProvider().getProviderId() == null) {
559                         // ... throw again
560                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
561                 } else if (number.getMobileProvider().getProviderId() < 1) {
562                         // Id not valid
563                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
564                 } else if (number.getPhoneNumber() == null) {
565                         // Throw NPE again
566                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
567                 } else if (number.getPhoneNumber() < 1) {
568                         // Throw NPE again
569                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
570                 } else if (this.getMobileProvider() == null) {
571                         // Not provided
572                         this.showFacesMessage("form_edit_mobile:mobileProvider", "ERROR_ADMIN_NO_MOBILE_PROVIDER_SELECTED"); //NOI18N
573                         return ""; //NOI18N
574                 } else if (this.getMobileProvider().getProviderId() == null) {
575                         // Throw NPE again ...
576                         throw new NullPointerException("this.mobileProvider.providerId is null"); //NOI18N
577                 } else if (this.getMobileProvider().getProviderId() < 0) {
578                         // Invalid id number
579                         throw new IllegalArgumentException(MessageFormat.format("this.mobileProvider.providerId={0} is not valid.", this.getMobileProvider().getProviderId())); //NOI18N
580                 } else if (this.getPhoneNumber() == null) {
581                         // Not provided
582                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_EMPTY_MOBILE_NUMBER"); //NOI18N
583                         return ""; //NOI18N
584                 }
585
586                 // Is the mobile provider and number the same?
587                 if ((Objects.equals(this.getMobileProvider(), number.getMobileProvider())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
588                         // Show message
589                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
590
591                         // No difference in both together, no need to edit
592                         return ""; //NOI18N
593                 }
594
595                 // Set all data
596                 number.setMobileProvider(this.getMobileProvider());
597                 number.setPhoneNumber(this.getPhoneNumber());
598
599                 // Send to bean
600                 DialableMobileNumber updatedNumber = this.adminPhoneBean.updateMobileData(number);
601
602                 // Fire event
603                 this.mobileNumberUpdatedEvent.fire(new AdminMobileNumberUpdatedEvent(updatedNumber));
604
605                 // All fine, redirect
606                 return "admin_show_mobile"; //NOI18N
607         }
608
609         /**
610          * Getter for chosen fax number
611          * <p>
612          * @return fax number
613          */
614         public DialableFaxNumber getFaxNumber () {
615                 return this.faxNumber;
616         }
617
618         /**
619          * Setter for chosen fax number
620          * <p>
621          * @param faxNumber fax number
622          */
623         public void setFaxNumber (final DialableFaxNumber faxNumber) {
624                 this.faxNumber = faxNumber;
625         }
626
627         /**
628          * Getter for chosen land-line number
629          * <p>
630          * @return land-line number
631          */
632         public DialableLandLineNumber getLandLineNumber () {
633                 return this.landLineNumber;
634         }
635
636         /**
637          * Setter for chosen land-line number
638          * <p>
639          * @param landLineNumber land-line number
640          */
641         public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
642                 this.landLineNumber = landLineNumber;
643         }
644
645         /**
646          * Getter for chosen mobile number
647          * <p>
648          * @return mobile number
649          */
650         public DialableMobileNumber getMobileNumber () {
651                 return this.mobileNumber;
652         }
653
654         /**
655          * Setter for chosen mobile number
656          * <p>
657          * @param mobileNumber mobile number
658          */
659         public void setMobileNumber (final DialableMobileNumber mobileNumber) {
660                 this.mobileNumber = mobileNumber;
661         }
662
663         /**
664          * Getter for mobile provider
665          * <p>
666          * @return Mobile provider
667          */
668         public MobileProvider getMobileProvider () {
669                 return this.mobileProvider;
670         }
671
672         /**
673          * Setter for mobile provider
674          * <p>
675          * @param mobileProvider Mobile provider
676          */
677         public void setMobileProvider (final MobileProvider mobileProvider) {
678                 this.mobileProvider = mobileProvider;
679         }
680
681         /**
682          * Getter for phone area code
683          * <p>
684          * @return Phone area code
685          */
686         public Integer getPhoneAreaCode () {
687                 return this.phoneAreaCode;
688         }
689
690         /**
691          * Setter for phone area code
692          * <p>
693          * @param phoneAreaCode Phone area code
694          */
695         public void setPhoneAreaCode (final Integer phoneAreaCode) {
696                 this.phoneAreaCode = phoneAreaCode;
697         }
698
699         /**
700          * Getter for phone country (for dial prefix)
701          * <p>
702          * @return Phone country
703          */
704         public Country getPhoneCountry () {
705                 return this.phoneCountry;
706         }
707
708         /**
709          * Setter for phone country (for dial prefix)
710          * <p>
711          * @param phoneCountry Phone country
712          */
713         public void setPhoneCountry (final Country phoneCountry) {
714                 this.phoneCountry = phoneCountry;
715         }
716
717         /**
718          * Getter for dial number without prefix
719          * <p>
720          * @return Dial number without prefix
721          */
722         public Long getPhoneNumber () {
723                 return this.phoneNumber;
724         }
725
726         /**
727          * Setter for dial number without prefix
728          * <p>
729          * @param phoneNumber Dial number without prefix
730          */
731         public void setPhoneNumber (final Long phoneNumber) {
732                 this.phoneNumber = phoneNumber;
733         }
734
735         /**
736          * Post-construction method
737          */
738         @PostConstruct
739         public void init () {
740                 // Try it
741                 try {
742                         // Get initial context
743                         Context context = new InitialContext();
744
745                         // Try to lookup the beans
746                         this.adminPhoneBean = (AdminPhoneSessionBeanRemote) context.lookup("java:global/pizzaservice-ejb/adminPhone!org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote"); //NOI18N
747                 } catch (final NamingException e) {
748                         // Throw it again
749                         throw new FaceletException(e);
750                 }
751         }
752
753 }