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