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