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