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