]> 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 - 2018 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.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          */
364         public void deleteFaxData () {
365                 // Get fax number from bean helper
366                 DialableFaxNumber number = this.createFaxNumber();
367
368                 // Is all data set
369                 if (number == null) {
370                         // Not set, throw NPE
371                         throw new NullPointerException("faxNumber is null"); //NOI18N
372                 } else if (number.getPhoneId() == null) {
373                         // Throw NPE again
374                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
375                 } else if (number.getPhoneId() < 1) {
376                         // Invalid number
377                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
378                 } else if (number.getPhoneCountry() == null) {
379                         // Throw NPE
380                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
381                 } else if (number.getPhoneCountry().getCountryId() == null) {
382                         // Throw NPE
383                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
384                 } else if (number.getPhoneCountry().getCountryId() < 1) {
385                         // Throw NPE
386                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
387                 } else if (number.getPhoneAreaCode() == null) {
388                         // ... throw again
389                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
390                 } else if (number.getPhoneAreaCode() < 1) {
391                         // Id not valid
392                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
393                 } else if (number.getPhoneNumber() == null) {
394                         // Throw NPE again
395                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
396                 } else if (number.getPhoneNumber() < 1) {
397                         // Throw NPE again
398                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
399                 }
400
401                 // Call EJB
402                 this.adminPhoneBean.deleteFaxData(number);
403
404                 // Fire event
405                 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(number));
406         }
407
408         /**
409          * Deletes given land-line entry data
410          */
411         public void deleteLandLineData () {
412                 // Get land-line number from helper
413                 DialableLandLineNumber number = this.createLandLineNumber();
414
415                 // Is all data set
416                 if (number == null) {
417                         // Not set, throw NPE
418                         throw new NullPointerException("landLineNumber is null"); //NOI18N
419                 } else if (number.getPhoneId() == null) {
420                         // Throw NPE again
421                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
422                 } else if (number.getPhoneId() < 1) {
423                         // Invalid number
424                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
425                 } else if (number.getPhoneCountry() == null) {
426                         // Throw NPE
427                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
428                 } else if (number.getPhoneCountry().getCountryId() == null) {
429                         // Throw NPE
430                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
431                 } else if (number.getPhoneCountry().getCountryId() < 1) {
432                         // Throw NPE
433                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
434                 } else if (number.getPhoneAreaCode() == null) {
435                         // ... throw again
436                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
437                 } else if (number.getPhoneAreaCode() < 1) {
438                         // Id not valid
439                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
440                 } else if (number.getPhoneNumber() == null) {
441                         // Throw NPE again
442                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
443                 } else if (number.getPhoneNumber() < 1) {
444                         // Throw NPE again
445                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
446                 }
447
448                 // Call EJB
449                 this.adminPhoneBean.deleteLandLineData(number);
450
451                 // Fire event
452                 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(number));
453         }
454
455         /**
456          * Deletes given mobile entry data
457          */
458         public void deleteMobileData () {
459                 // Get mobile number from helper
460                 DialableMobileNumber number = this.createMobileNumber();
461
462                 // Is all data set
463                 if (number == null) {
464                         // Not set, throw NPE
465                         throw new NullPointerException("mobileNumber is null"); //NOI18N
466                 } else if (number.getPhoneId() == null) {
467                         // Throw NPE again
468                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
469                 } else if (number.getPhoneId() < 1) {
470                         // Invalid number
471                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
472                 } else if (number.getMobileProvider() == null) {
473                         // Throw NPE
474                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
475                 } else if (number.getMobileProvider().getProviderId() == null) {
476                         // ... throw again
477                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
478                 } else if (number.getMobileProvider().getProviderId() < 1) {
479                         // Id not valid
480                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
481                 } else if (number.getPhoneNumber() == null) {
482                         // Throw NPE again
483                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
484                 } else if (number.getPhoneNumber() < 1) {
485                         // Throw NPE again
486                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
487                 }
488
489                 // Call EJB
490                 this.adminPhoneBean.deleteMobileData(number);
491
492                 // Fire event
493                 this.mobileNumberDeletedEvent.fire(new AdminMobileNumberDeletedEvent(number));
494         }
495
496         /**
497          * Changes fax entry data
498          * <p>
499          * @return Redirect outcome
500          */
501         public String doChangeFaxNumber () {
502                 // Get fax number from bean helper
503                 DialableFaxNumber number = this.createFaxNumber();
504
505                 // Is all data set
506                 if (number == null) {
507                         // Not set, throw NPE
508                         throw new NullPointerException("faxNumber is null"); //NOI18N
509                 } else if (number.getPhoneId() == null) {
510                         // Throw NPE again
511                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
512                 } else if (number.getPhoneId() < 1) {
513                         // Invalid number
514                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
515                 } else if (number.getPhoneCountry() == null) {
516                         // Throw NPE
517                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
518                 } else if (number.getPhoneCountry().getCountryId() == null) {
519                         // Throw NPE
520                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
521                 } else if (number.getPhoneCountry().getCountryId() < 1) {
522                         // Throw NPE
523                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
524                 } else if (number.getPhoneAreaCode() == null) {
525                         // ... throw again
526                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
527                 } else if (number.getPhoneAreaCode() < 1) {
528                         // Id not valid
529                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
530                 } else if (number.getPhoneNumber() == null) {
531                         // Throw NPE again
532                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
533                 } else if (number.getPhoneNumber() < 1) {
534                         // Throw NPE again
535                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
536                 }
537
538                 // Is the mobile provider and number the same?
539                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
540                         // Show message
541                         this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
542
543                         // No difference in both together, no need to edit
544                         return ""; //NOI18N
545                 }
546
547                 // Set all data
548                 number.setPhoneCountry(this.getPhoneCountry());
549                 number.setPhoneAreaCode(this.getPhoneAreaCode());
550                 number.setPhoneNumber(this.getPhoneNumber());
551
552                 // Send to bean
553                 DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(number);
554
555                 // Fire event
556                 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
557
558                 // All fine, redirect
559                 return "admin_show_fax"; //NOI18N
560         }
561
562         /**
563          * Changes land-line entry data
564          * <p>
565          * @return Redirect outcome
566          */
567         public String doChangeLandLineNumber () {
568                 // Get land-line number from helper
569                 DialableLandLineNumber number = this.createLandLineNumber();
570
571                 // Is all data set
572                 if (number == null) {
573                         // Not set, throw NPE
574                         throw new NullPointerException("landLineNumber is null"); //NOI18N
575                 } else if (number.getPhoneId() == null) {
576                         // Throw NPE again
577                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
578                 } else if (number.getPhoneId() < 1) {
579                         // Invalid number
580                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
581                 } else if (number.getPhoneCountry() == null) {
582                         // Throw NPE
583                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
584                 } else if (number.getPhoneCountry().getCountryId() == null) {
585                         // Throw NPE
586                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
587                 } else if (number.getPhoneCountry().getCountryId() < 1) {
588                         // Throw NPE
589                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
590                 } else if (number.getPhoneAreaCode() == null) {
591                         // ... throw again
592                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
593                 } else if (number.getPhoneAreaCode() < 1) {
594                         // Id not valid
595                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
596                 } else if (number.getPhoneNumber() == null) {
597                         // Throw NPE again
598                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
599                 } else if (number.getPhoneNumber() < 1) {
600                         // Throw NPE again
601                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
602                 }
603
604                 // Is the mobile provider and number the same?
605                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
606                         // Show message
607                         this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
608
609                         // No difference in both together, no need to edit
610                         return ""; //NOI18N
611                 }
612
613                 // Set all data
614                 number.setPhoneCountry(this.getPhoneCountry());
615                 number.setPhoneAreaCode(this.getPhoneAreaCode());
616                 number.setPhoneNumber(this.getPhoneNumber());
617
618                 // Send to bean
619                 DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(number);
620
621                 // Fire event
622                 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
623
624                 // All fine, redirect
625                 return "admin_show_landline"; //NOI18N
626         }
627
628         /**
629          * Changes mobile entry data
630          * <p>
631          * @return Redirect outcome
632          */
633         public String doUpdateMobileNumber () {
634                 // Get mobile number from helper
635                 DialableMobileNumber number = this.createMobileNumber();
636
637                 // Is all data set
638                 if (number == null) {
639                         // Not set, throw NPE
640                         throw new NullPointerException("mobileNumber is null"); //NOI18N
641                 } else if (number.getPhoneId() == null) {
642                         // Throw NPE again
643                         throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
644                 } else if (number.getPhoneId() < 1) {
645                         // Invalid number
646                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
647                 } else if (number.getMobileProvider() == null) {
648                         // Throw NPE
649                         throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
650                 } else if (number.getMobileProvider().getProviderId() == null) {
651                         // ... throw again
652                         throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
653                 } else if (number.getMobileProvider().getProviderId() < 1) {
654                         // Id not valid
655                         throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", number.getMobileProvider().getProviderId())); //NOI18N
656                 } else if (number.getPhoneNumber() == null) {
657                         // Throw NPE again
658                         throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
659                 } else if (number.getPhoneNumber() < 1) {
660                         // Throw NPE again
661                         throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
662                 } else if (this.getMobileProvider() == null) {
663                         // Not provided
664                         this.showFacesMessage("form_edit_mobile:mobileProvider", "ERROR_ADMIN_NO_MOBILE_PROVIDER_SELECTED"); //NOI18N
665                         return ""; //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                         // Not provided
674                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_EMPTY_MOBILE_NUMBER"); //NOI18N
675                         return ""; //NOI18N
676                 }
677
678                 // Is the mobile provider and number the same?
679                 if ((Objects.equals(this.getMobileProvider(), number.getMobileProvider())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
680                         // Show message
681                         this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
682
683                         // No difference in both together, no need to edit
684                         return ""; //NOI18N
685                 }
686
687                 // Set all data
688                 number.setMobileProvider(this.getMobileProvider());
689                 number.setPhoneNumber(this.getPhoneNumber());
690
691                 // Send to bean
692                 DialableMobileNumber updatedNumber = this.adminPhoneBean.updateMobileData(number);
693
694                 // Fire event
695                 this.mobileNumberUpdatedEvent.fire(new AdminMobileNumberUpdatedEvent(updatedNumber));
696
697                 // All fine, redirect
698                 return "admin_show_mobile"; //NOI18N
699         }
700
701         /**
702          * Getter for chosen fax number
703          * <p>
704          * @return fax number
705          */
706         public DialableFaxNumber getFaxNumber () {
707                 return this.faxNumber;
708         }
709
710         /**
711          * Setter for chosen fax number
712          * <p>
713          * @param faxNumber fax number
714          */
715         public void setFaxNumber (final DialableFaxNumber faxNumber) {
716                 this.faxNumber = faxNumber;
717         }
718
719         /**
720          * Getter for chosen land-line number
721          * <p>
722          * @return land-line number
723          */
724         public DialableLandLineNumber getLandLineNumber () {
725                 return this.landLineNumber;
726         }
727
728         /**
729          * Setter for chosen land-line number
730          * <p>
731          * @param landLineNumber land-line number
732          */
733         public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
734                 this.landLineNumber = landLineNumber;
735         }
736
737         /**
738          * Getter for chosen mobile number
739          * <p>
740          * @return mobile number
741          */
742         public DialableMobileNumber getMobileNumber () {
743                 return this.mobileNumber;
744         }
745
746         /**
747          * Setter for chosen mobile number
748          * <p>
749          * @param mobileNumber mobile number
750          */
751         public void setMobileNumber (final DialableMobileNumber mobileNumber) {
752                 this.mobileNumber = mobileNumber;
753         }
754
755         /**
756          * Getter for mobile provider
757          * <p>
758          * @return Mobile provider
759          */
760         public MobileProvider getMobileProvider () {
761                 return this.mobileProvider;
762         }
763
764         /**
765          * Setter for mobile provider
766          * <p>
767          * @param mobileProvider Mobile provider
768          */
769         public void setMobileProvider (final MobileProvider mobileProvider) {
770                 this.mobileProvider = mobileProvider;
771         }
772
773         /**
774          * Getter for phone area code
775          * <p>
776          * @return Phone area code
777          */
778         public Integer getPhoneAreaCode () {
779                 return this.phoneAreaCode;
780         }
781
782         /**
783          * Setter for phone area code
784          * <p>
785          * @param phoneAreaCode Phone area code
786          */
787         public void setPhoneAreaCode (final Integer phoneAreaCode) {
788                 this.phoneAreaCode = phoneAreaCode;
789         }
790
791         /**
792          * Getter for phone country (for dial prefix)
793          * <p>
794          * @return Phone country
795          */
796         public Country getPhoneCountry () {
797                 return this.phoneCountry;
798         }
799
800         /**
801          * Setter for phone country (for dial prefix)
802          * <p>
803          * @param phoneCountry Phone country
804          */
805         public void setPhoneCountry (final Country phoneCountry) {
806                 this.phoneCountry = phoneCountry;
807         }
808
809         /**
810          * Getter for phone entry created timestamp
811          * <p>
812          * @return Phone entry created timestamp
813          */
814         @SuppressWarnings ("ReturnOfDateField")
815         public Date getPhoneEntryCreated () {
816                 return this.phoneEntryCreated;
817         }
818
819         /**
820          * Setter for phone entry created timestamp
821          * <p>
822          * @param phoneEntryCreated Phone entry created timestamp
823          */
824         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
825         public void setPhoneEntryCreated (final Date phoneEntryCreated) {
826                 this.phoneEntryCreated = phoneEntryCreated;
827         }
828
829         /**
830          * Getter for phone entry updated timestamp
831          * <p>
832          * @return Phone entry updated timestamp
833          */
834         @SuppressWarnings ("ReturnOfDateField")
835         public Date getPhoneEntryUpdated () {
836                 return this.phoneEntryUpdated;
837         }
838
839         /**
840          * Setter for phone entry updated timestamp
841          * <p>
842          * @param phoneEntryUpdated Phone entry updated timestamp
843          */
844         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
845         public void setPhoneEntryUpdated (final Date phoneEntryUpdated) {
846                 this.phoneEntryUpdated = phoneEntryUpdated;
847         }
848
849         /**
850          * Getter for phone id
851          * <p>
852          * @return Phone id
853          */
854         public Long getPhoneId () {
855                 return this.phoneId;
856         }
857
858         /**
859          * Setter for phone id
860          * <p>
861          * @param phoneId Phone id
862          */
863         public void setPhoneId (final Long phoneId) {
864                 this.phoneId = phoneId;
865         }
866
867         /**
868          * Getter for dial number without prefix
869          * <p>
870          * @return Dial number without prefix
871          */
872         public Long getPhoneNumber () {
873                 return this.phoneNumber;
874         }
875
876         /**
877          * Setter for dial number without prefix
878          * <p>
879          * @param phoneNumber Dial number without prefix
880          */
881         public void setPhoneNumber (final Long phoneNumber) {
882                 this.phoneNumber = phoneNumber;
883         }
884
885         /**
886          * Returns an instance of a DialableFaxNumber from all fields stored in this
887          * bean.
888          * <p>
889          * @return An instance of a DialableFaxNumber class
890          */
891         private DialableFaxNumber createFaxNumber () {
892                 // Initialize it
893                 DialableFaxNumber number = new FaxNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber());
894
895                 // Add all other data
896                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
897                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
898
899                 // Is id number set?
900                 if (this.getPhoneId() instanceof Long) {
901                         // Set it
902                         number.setPhoneId(this.getPhoneId());
903                 }
904
905                 // Return it
906                 return number;
907         }
908
909         /**
910          * Returns an instance of a DialableLandLineNumber from all fields stored in
911          * this bean.
912          * <p>
913          * @return An instance of a DialableLandLineNumber class
914          */
915         private DialableLandLineNumber createLandLineNumber () {
916                 // Initialize it
917                 DialableLandLineNumber number = new LandLineNumber(this.getPhoneCountry(), this.getPhoneAreaCode(), this.getPhoneNumber());
918
919                 // Add all other data
920                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
921                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
922
923                 // Is id number set?
924                 if (this.getPhoneId() instanceof Long) {
925                         // Set it
926                         number.setPhoneId(this.getPhoneId());
927                 }
928
929                 // Return it
930                 return number;
931         }
932
933         /**
934          * Returns an instance of a DialableMobileNumber from all fields stored in
935          * this bean.
936          * <p>
937          * @return An instance of a DialableMobileNumber class
938          */
939         private DialableMobileNumber createMobileNumber () {
940                 // Initialize it
941                 DialableMobileNumber number = new MobileNumber(this.getMobileProvider(), this.getPhoneNumber());
942
943                 // Add all other data
944                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
945                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
946
947                 // Is id number set?
948                 if (this.getPhoneId() instanceof Long) {
949                         // Set it
950                         number.setPhoneId(this.getPhoneId());
951                 }
952
953                 // Return it
954                 return number;
955         }
956
957 }