]> git.mxchange.org Git - addressbook-war.git/blob - src/java/org/mxchange/addressbook/beans/phone/AddressbookAdminPhoneWebRequestBean.java
ae4499d3bae04979dc1de14f6a03d106a014fa50
[addressbook-war.git] / src / java / org / mxchange / addressbook / beans / phone / AddressbookAdminPhoneWebRequestBean.java
1 /*
2  * Copyright (C) 2016 - 2022 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.addressbook.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.addressbook.beans.BaseAddressbookBean;
32 import org.mxchange.addressbook.beans.phone.list.AddressbookPhoneListWebViewController;
33 import org.mxchange.jcountry.model.data.Country;
34 import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent;
35 import org.mxchange.jphone.events.fax.deleted.AdminDeletedFaxNumberEvent;
36 import org.mxchange.jphone.events.fax.deleted.AdminFaxNumberDeletedEvent;
37 import org.mxchange.jphone.events.fax.removed.AdminFaxNumberRemovedFromListEvent;
38 import org.mxchange.jphone.events.fax.removed.AdminRemoveFaxNumberFromListEvent;
39 import org.mxchange.jphone.events.fax.updated.AdminFaxNumberUpdatedEvent;
40 import org.mxchange.jphone.events.fax.updated.AdminUpdatedFaxNumberEvent;
41 import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent;
42 import org.mxchange.jphone.events.landline.deleted.AdminDeletedLandLineNumberEvent;
43 import org.mxchange.jphone.events.landline.deleted.AdminLandLineNumberDeletedEvent;
44 import org.mxchange.jphone.events.landline.removed.AdminLandLineNumberRemovedFromListEvent;
45 import org.mxchange.jphone.events.landline.removed.AdminRemoveLandLineNumberFromListEvent;
46 import org.mxchange.jphone.events.landline.updated.AdminLandLineNumberUpdatedEvent;
47 import org.mxchange.jphone.events.landline.updated.AdminUpdatedLandLineNumberEvent;
48 import org.mxchange.jphone.events.mobile.remove.AdminRemoveMobileNumberFromListEvent;
49 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
50 import org.mxchange.jphone.model.phonenumbers.fax.FaxNumber;
51 import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
52 import org.mxchange.jphone.model.phonenumbers.landline.LandLineNumber;
53 import org.mxchange.jphone.model.phonenumbers.mobileprovider.MobileProvider;
54 import org.mxchange.jphone.model.phonenumbers.phone.AdminPhoneSessionBeanRemote;
55
56 /**
57  * Administrative bean (controller) for phone numbers
58  * <p>
59  * @author Roland Häder<roland@mxchange.org>
60  */
61 @Named ("adminPhoneController")
62 @RequestScoped
63 public class AddressbookAdminPhoneWebRequestBean extends BaseAddressbookBean implements AddressbookAdminPhoneWebRequestController {
64
65         /**
66          * Call-stack position
67          */
68         private static final short THREAD_STACK = 5;
69
70         /**
71          * Serial number
72          */
73         private static final long serialVersionUID = 184_598_175_371_269_016L;
74
75         /**
76          * Remote EJB for phone number (administrative)
77          */
78         @EJB (lookup = "java:global/addressbook-ejb/adminPhone!org.mxchange.jphone.model.phonenumbers.phone.AdminPhoneSessionBeanRemote")
79         private AdminPhoneSessionBeanRemote adminPhoneBean;
80
81         /**
82          * fax number
83          */
84         private DialableFaxNumber faxNumber;
85
86         /**
87          * Event being fired when an administrator has deleted fax number
88          */
89         @Inject
90         @Any
91         private Event<AdminDeletedFaxNumberEvent> faxNumberDeletedEvent;
92
93         /**
94          * Event being fired when an administrator has updated fax number
95          */
96         @Inject
97         @Any
98         private Event<AdminUpdatedFaxNumberEvent> faxNumberUpdatedEvent;
99
100         /**
101          * land-line number
102          */
103         private DialableLandLineNumber landLineNumber;
104
105         /**
106          * Event being fired when an administrator has deleted land-line number
107          */
108         @Inject
109         @Any
110         private Event<AdminDeletedLandLineNumberEvent> landLineNumberDeletedEvent;
111
112         /**
113          * Event being fired when an administrator has updated fax number
114          */
115         @Inject
116         @Any
117         private Event<AdminUpdatedLandLineNumberEvent> landLineNumberUpdatedEvent;
118
119         /**
120          * Mobile provider instance
121          */
122         private MobileProvider mobileProvider;
123
124         /**
125          * Area code (city dial prefix)
126          */
127         private Integer phoneAreaCode;
128
129         /**
130          * Country (for dial prefix)
131          */
132         private Country phoneCountry;
133
134         /**
135          * When the phone entry has been created (persisted)
136          */
137         private Date phoneEntryCreated;
138
139         /**
140          * When the phone entry has been updated
141          */
142         private Date phoneEntryUpdated;
143
144         /**
145          * Phone id (aka primary key)
146          */
147         private Long phoneId;
148
149         /**
150          * Generic hone controller
151          */
152         @Inject
153         private AddressbookPhoneListWebViewController phoneListController;
154
155         /**
156          * Phone number
157          */
158         private Long phoneNumber;
159
160         /**
161          * Event being fired when a list of all unsed fax numbers is being created.
162          */
163         @Inject
164         @Any
165         private Event<AdminRemoveFaxNumberFromListEvent> removeLinkedFaxNumbersEvent;
166
167         /**
168          * Event being fired when a list of all unsed land-line numbers is being
169          * created.
170          */
171         @Inject
172         @Any
173         private Event<AdminRemoveLandLineNumberFromListEvent> removeLinkedLandLineNumbersEvent;
174
175         /**
176          * Event being fired when a list of all unsed mobile numbers is being
177          * created.
178          */
179         @Inject
180         @Any
181         private Event<AdminRemoveMobileNumberFromListEvent> removeLinkedMobileNumbersEvent;
182
183         /**
184          * Default constructor
185          */
186         public AddressbookAdminPhoneWebRequestBean () {
187                 // Call super constructor
188                 super();
189         }
190
191         /**
192          * Observes events being fired when a bean helper has successfully created a
193          * land-line number instance.
194          * <p>
195          * @param event Event being fired
196          */
197         public void afterCreatedFaxNumberEvent (@Observes final ObservableCreatedFaxNumberEvent event) {
198                 // The event instance must be valid
199                 if (null == event) {
200                         // Throw NPE
201                         throw new NullPointerException("event is null"); //NOI18N
202                 } else if (event.getFaxNumber() == null) {
203                         // Throw NPE again
204                         throw new NullPointerException("event.landLineNumber is null"); //NOI18N
205                 } else if (event.getFaxNumber().getPhoneId() == null) {
206                         // Throw NPE yet again
207                         throw new NullPointerException("event.landLineNumber.phoneId is null"); //NOI18N
208                 } else if (event.getFaxNumber().getPhoneId() < 1) {
209                         // Throw NPE yet again
210                         throw new NullPointerException(MessageFormat.format("event.landLineNumber.phoneId={0} is invalid", event.getFaxNumber().getPhoneId())); //NOI18N
211                 }
212
213                 // Get fax number from event
214                 final DialableFaxNumber number = event.getFaxNumber();
215
216                 // Copy all data to this bean
217                 this.setPhoneId(number.getPhoneId());
218                 this.setPhoneCountry(number.getPhoneCountry());
219                 this.setPhoneAreaCode(number.getPhoneAreaCode());
220                 this.setPhoneNumber(number.getPhoneNumber());
221                 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
222                 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
223         }
224
225         /**
226          * Observes events being fired when a bean helper has successfully created a
227          * land-line number instance.
228          * <p>
229          * @param event Event being fired
230          */
231         public void afterCreatedLandLineNumberEvent (@Observes final ObservableCreatedLandLineNumberEvent event) {
232                 // The event instance must be valid
233                 if (null == event) {
234                         // Throw NPE
235                         throw new NullPointerException("event is null"); //NOI18N
236                 } else if (event.getLandLineNumber() == null) {
237                         // Throw NPE again
238                         throw new NullPointerException("event.landLineNumber is null"); //NOI18N
239                 } else if (event.getLandLineNumber().getPhoneId() == null) {
240                         // Throw NPE yet again
241                         throw new NullPointerException("event.landLineNumber.phoneId is null"); //NOI18N
242                 } else if (event.getLandLineNumber().getPhoneId() < 1) {
243                         // Throw NPE yet again
244                         throw new NullPointerException(MessageFormat.format("event.landLineNumber.phoneId={0} is invalid", event.getLandLineNumber().getPhoneId())); //NOI18N
245                 }
246
247                 // Get fax number from event
248                 final DialableLandLineNumber number = event.getLandLineNumber();
249
250                 // Copy all data to this bean
251                 this.setPhoneId(number.getPhoneId());
252                 this.setPhoneCountry(number.getPhoneCountry());
253                 this.setPhoneAreaCode(number.getPhoneAreaCode());
254                 this.setPhoneNumber(number.getPhoneNumber());
255                 this.setPhoneEntryCreated(number.getPhoneEntryCreated());
256                 this.setPhoneEntryUpdated(number.getPhoneEntryUpdated());
257         }
258
259         /**
260          * Returns a list of all unused ("non-linked") land-line numbers
261          * <p>
262          * @return List with all unused land-line numbers
263          */
264         public List<DialableFaxNumber> allNonLinkedFaxNumbers () {
265                 // Get list of all mobile numbers
266                 final List<DialableFaxNumber> numbers = this.phoneListController.getAllFaxNumbers();
267
268                 // Visit all controllers to reduce the list
269                 this.removeLinkedFaxNumbersEvent.fire(new AdminFaxNumberRemovedFromListEvent(numbers));
270
271                 // Return it
272                 return numbers;
273         }
274
275         /**
276          * Returns a list of all unused ("non-linked") land-line numbers
277          * <p>
278          * @return List with all unused land-line numbers
279          */
280         public List<DialableLandLineNumber> allNonLinkedLandLineNumbers () {
281                 // Get list of all mobile numbers
282                 final List<DialableLandLineNumber> numbers = this.phoneListController.getAllLandLineNumbers();
283
284                 // Visit all controllers to reduce the list
285                 this.removeLinkedLandLineNumbersEvent.fire(new AdminLandLineNumberRemovedFromListEvent(numbers));
286
287                 // Return it
288                 return numbers;
289         }
290
291         /**
292          * Deletes given fax entry data
293          * <p>
294          */
295         public void deleteFaxData () {
296                 // Get fax number from bean helper
297                 final DialableFaxNumber number = this.createFaxNumber();
298
299                 // Is all data set
300                 if (number == null) {
301                         // Not set, throw NPE
302                         throw new NullPointerException("faxNumber is null"); //NOI18N
303                 } else if (number.getPhoneId() == null) {
304                         // Throw NPE again
305                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
306                 } else if (number.getPhoneId() < 1) {
307                         // Invalid number
308                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
309                 } else if (number.getPhoneCountry() == null) {
310                         // Throw NPE
311                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
312                 } else if (number.getPhoneCountry().getCountryId() == null) {
313                         // Throw NPE
314                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
315                 } else if (number.getPhoneCountry().getCountryId() < 1) {
316                         // Throw NPE
317                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
318                 } else if (number.getPhoneAreaCode() == null) {
319                         // ... throw again
320                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
321                 } else if (number.getPhoneAreaCode() < 1) {
322                         // Id not valid
323                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
324                 } else if (number.getPhoneNumber() == null) {
325                         // Throw NPE again
326                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
327                 } else if (number.getPhoneNumber() < 1) {
328                         // Throw NPE again
329                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
330                 }
331
332                 // Call EJB
333                 this.adminPhoneBean.deleteFaxData(number);
334
335                 // Fire event
336                 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(number));
337         }
338
339         /**
340          * Deletes given land-line entry data
341          */
342         public void deleteLandLineData () {
343                 // Get land-line number from helper
344                 final DialableLandLineNumber number = this.createLandLineNumber();
345
346                 // Is all data set
347                 if (number == null) {
348                         // Not set, throw NPE
349                         throw new NullPointerException("landLineNumber is null"); //NOI18N
350                 } else if (number.getPhoneId() == null) {
351                         // Throw NPE again
352                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
353                 } else if (number.getPhoneId() < 1) {
354                         // Invalid number
355                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
356                 } else if (number.getPhoneCountry() == null) {
357                         // Throw NPE
358                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
359                 } else if (number.getPhoneCountry().getCountryId() == null) {
360                         // Throw NPE
361                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
362                 } else if (number.getPhoneCountry().getCountryId() < 1) {
363                         // Throw NPE
364                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
365                 } else if (number.getPhoneAreaCode() == null) {
366                         // ... throw again
367                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
368                 } else if (number.getPhoneAreaCode() < 1) {
369                         // Id not valid
370                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
371                 } else if (number.getPhoneNumber() == null) {
372                         // Throw NPE again
373                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
374                 } else if (number.getPhoneNumber() < 1) {
375                         // Throw NPE again
376                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
377                 }
378
379                 // Call EJB
380                 this.adminPhoneBean.deleteLandLineData(number);
381
382                 // Fire event
383                 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(number));
384         }
385
386         /**
387          * Changes fax entry data
388          * <p>
389          * @return Redirect outcome
390          */
391         public String doChangeFaxNumber () {
392                 // Get fax number from bean helper
393                 final DialableFaxNumber number = this.createFaxNumber();
394
395                 // Is all data set
396                 if (number == null) {
397                         // Not set, throw NPE
398                         throw new NullPointerException("faxNumber is null"); //NOI18N
399                 } else if (number.getPhoneId() == null) {
400                         // Throw NPE again
401                         throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
402                 } else if (number.getPhoneId() < 1) {
403                         // Invalid number
404                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
405                 } else if (number.getPhoneCountry() == null) {
406                         // Throw NPE
407                         throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
408                 } else if (number.getPhoneCountry().getCountryId() == null) {
409                         // Throw NPE
410                         throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
411                 } else if (number.getPhoneCountry().getCountryId() < 1) {
412                         // Throw NPE
413                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
414                 } else if (number.getPhoneAreaCode() == null) {
415                         // ... throw again
416                         throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
417                 } else if (number.getPhoneAreaCode() < 1) {
418                         // Id not valid
419                         throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
420                 } else if (number.getPhoneNumber() == null) {
421                         // Throw NPE again
422                         throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
423                 } else if (number.getPhoneNumber() < 1) {
424                         // Throw NPE again
425                         throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
426                 }
427
428                 // Is the mobile provider and number the same?
429                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
430                         // Show message
431                         this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED", FacesMessage.SEVERITY_WARN); //NOI18N
432
433                         // No difference in both together, no need to edit
434                         return ""; //NOI18N
435                 }
436
437                 // Set all data
438                 number.setPhoneCountry(this.getPhoneCountry());
439                 number.setPhoneAreaCode(this.getPhoneAreaCode());
440                 number.setPhoneNumber(this.getPhoneNumber());
441
442                 // Send to bean
443                 final DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(number);
444
445                 // Fire event
446                 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
447
448                 // All fine, redirect
449                 return "admin_show_fax"; //NOI18N
450         }
451
452         /**
453          * Changes land-line entry data
454          * <p>
455          * @return Redirect outcome
456          */
457         public String doChangeLandLineNumber () {
458                 // Get land-line number from helper
459                 final DialableLandLineNumber number = this.createLandLineNumber();
460
461                 // Is all data set
462                 if (number == null) {
463                         // Not set, throw NPE
464                         throw new NullPointerException("landLineNumber is null"); //NOI18N
465                 } else if (number.getPhoneId() == null) {
466                         // Throw NPE again
467                         throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
468                 } else if (number.getPhoneId() < 1) {
469                         // Invalid number
470                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", number.getPhoneId())); //NOI18N
471                 } else if (number.getPhoneCountry() == null) {
472                         // Throw NPE
473                         throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
474                 } else if (number.getPhoneCountry().getCountryId() == null) {
475                         // Throw NPE
476                         throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
477                 } else if (number.getPhoneCountry().getCountryId() < 1) {
478                         // Throw NPE
479                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", number.getPhoneCountry().getCountryId())); //NOI18N
480                 } else if (number.getPhoneAreaCode() == null) {
481                         // ... throw again
482                         throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
483                 } else if (number.getPhoneAreaCode() < 1) {
484                         // Id not valid
485                         throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", number.getPhoneAreaCode())); //NOI18N
486                 } else if (number.getPhoneNumber() == null) {
487                         // Throw NPE again
488                         throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
489                 } else if (number.getPhoneNumber() < 1) {
490                         // Throw NPE again
491                         throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", number.getPhoneNumber())); //NOI18N
492                 }
493
494                 // Is the mobile provider and number the same?
495                 if ((Objects.equals(this.getPhoneCountry(), number.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), number.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), number.getPhoneNumber()))) {
496                         // Show message
497                         this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED", FacesMessage.SEVERITY_WARN); //NOI18N
498
499                         // No difference in both together, no need to edit
500                         return ""; //NOI18N
501                 }
502
503                 // Set all data
504                 number.setPhoneCountry(this.getPhoneCountry());
505                 number.setPhoneAreaCode(this.getPhoneAreaCode());
506                 number.setPhoneNumber(this.getPhoneNumber());
507
508                 // Send to bean
509                 final DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(number);
510
511                 // Fire event
512                 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
513
514                 // All fine, redirect
515                 return "admin_show_landline"; //NOI18N
516         }
517
518         /**
519          * Getter for chosen fax number
520          * <p>
521          * @return fax number
522          */
523         public DialableFaxNumber getFaxNumber () {
524                 return this.faxNumber;
525         }
526
527         /**
528          * Setter for chosen fax number
529          * <p>
530          * @param faxNumber fax number
531          */
532         public void setFaxNumber (final DialableFaxNumber faxNumber) {
533                 this.faxNumber = faxNumber;
534         }
535
536         /**
537          * Getter for chosen land-line number
538          * <p>
539          * @return land-line number
540          */
541         public DialableLandLineNumber getLandLineNumber () {
542                 return this.landLineNumber;
543         }
544
545         /**
546          * Setter for chosen land-line number
547          * <p>
548          * @param landLineNumber land-line number
549          */
550         public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
551                 this.landLineNumber = landLineNumber;
552         }
553
554         /**
555          * Getter for mobile provider
556          * <p>
557          * @return An instance of a MobileProvider class
558          */
559         public MobileProvider getMobileProvider () {
560                 return this.mobileProvider;
561         }
562
563         /**
564          * Setter for mobile provider
565          * <p>
566          * @param mobileProvider An instance of a MobileProvider class
567          */
568         public void setMobileProvider (final MobileProvider mobileProvider) {
569                 this.mobileProvider = mobileProvider;
570         }
571
572         /**
573          * Getter for phone area code
574          * <p>
575          * @return Phone area code
576          */
577         public Integer getPhoneAreaCode () {
578                 return this.phoneAreaCode;
579         }
580
581         /**
582          * Setter for phone area code
583          * <p>
584          * @param phoneAreaCode Phone area code
585          */
586         public void setPhoneAreaCode (final Integer phoneAreaCode) {
587                 this.phoneAreaCode = phoneAreaCode;
588         }
589
590         /**
591          * Getter for phone country (for dial prefix)
592          * <p>
593          * @return Phone country
594          */
595         public Country getPhoneCountry () {
596                 return this.phoneCountry;
597         }
598
599         /**
600          * Setter for phone country (for dial prefix)
601          * <p>
602          * @param phoneCountry Phone country
603          */
604         public void setPhoneCountry (final Country phoneCountry) {
605                 this.phoneCountry = phoneCountry;
606         }
607
608         /**
609          * Getter for phone entry created timestamp
610          * <p>
611          * @return Phone entry created timestamp
612          */
613         @SuppressWarnings ("ReturnOfDateField")
614         public Date getPhoneEntryCreated () {
615                 return this.phoneEntryCreated;
616         }
617
618         /**
619          * Setter for phone entry created timestamp
620          * <p>
621          * @param phoneEntryCreated Phone entry created timestamp
622          */
623         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
624         public void setPhoneEntryCreated (final Date phoneEntryCreated) {
625                 this.phoneEntryCreated = phoneEntryCreated;
626         }
627
628         /**
629          * Getter for phone entry updated timestamp
630          * <p>
631          * @return Phone entry updated timestamp
632          */
633         @SuppressWarnings ("ReturnOfDateField")
634         public Date getPhoneEntryUpdated () {
635                 return this.phoneEntryUpdated;
636         }
637
638         /**
639          * Setter for phone entry updated timestamp
640          * <p>
641          * @param phoneEntryUpdated Phone entry updated timestamp
642          */
643         @SuppressWarnings ("AssignmentToDateFieldFromParameter")
644         public void setPhoneEntryUpdated (final Date phoneEntryUpdated) {
645                 this.phoneEntryUpdated = phoneEntryUpdated;
646         }
647
648         /**
649          * Getter for phone id
650          * <p>
651          * @return Phone id
652          */
653         public Long getPhoneId () {
654                 return this.phoneId;
655         }
656
657         /**
658          * Setter for phone id
659          * <p>
660          * @param phoneId Phone id
661          */
662         public void setPhoneId (final Long phoneId) {
663                 this.phoneId = phoneId;
664         }
665
666         /**
667          * Getter for dial number without prefix
668          * <p>
669          * @return Dial number without prefix
670          */
671         public Long getPhoneNumber () {
672                 return this.phoneNumber;
673         }
674
675         /**
676          * Setter for dial number without prefix
677          * <p>
678          * @param phoneNumber Dial number without prefix
679          */
680         public void setPhoneNumber (final Long phoneNumber) {
681                 this.phoneNumber = phoneNumber;
682         }
683
684         /**
685          * Returns an instance of a DialableFaxNumber from all fields stored in this
686          * bean.
687          * <p>
688          * @return An instance of a DialableFaxNumber class
689          */
690         private DialableFaxNumber createFaxNumber () {
691                 // Initialize it
692                 final DialableFaxNumber number = new FaxNumber(
693                                                                 this.getPhoneCountry(),
694                                                                 this.getPhoneAreaCode(),
695                                                                 this.getPhoneNumber()
696                                                 );
697
698                 // Add all other data
699                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
700                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
701
702                 // Is id number set?
703                 if (this.getPhoneId() instanceof Long) {
704                         // Set it
705                         number.setPhoneId(this.getPhoneId());
706                 }
707
708                 // Return it
709                 return number;
710         }
711
712         /**
713          * Returns an instance of a DialableLandLineNumber from all fields stored in
714          * this bean.
715          * <p>
716          * @return An instance of a DialableLandLineNumber class
717          */
718         private DialableLandLineNumber createLandLineNumber () {
719                 // Initialize it
720                 final DialableLandLineNumber number = new LandLineNumber(
721                                                                          this.getPhoneCountry(),
722                                                                          this.getPhoneAreaCode(),
723                                                                          this.getPhoneNumber()
724                                                          );
725
726                 // Add all other data
727                 number.setPhoneEntryCreated(this.getPhoneEntryCreated());
728                 number.setPhoneEntryUpdated(this.getPhoneEntryUpdated());
729
730                 // Is id number set?
731                 if (this.getPhoneId() instanceof Long) {
732                         // Set it
733                         number.setPhoneId(this.getPhoneId());
734                 }
735
736                 // Return it
737                 return number;
738         }
739
740 }