2 * Copyright (C) 2016, 2017 Roland Häder
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.
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.
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/>.
17 package org.mxchange.jjobs.beans.phone;
19 import java.text.MessageFormat;
20 import java.util.List;
21 import java.util.Locale;
22 import java.util.MissingResourceException;
23 import java.util.Objects;
24 import java.util.ResourceBundle;
25 import javax.annotation.PostConstruct;
26 import javax.enterprise.context.RequestScoped;
27 import javax.enterprise.event.Event;
28 import javax.enterprise.inject.Any;
29 import javax.faces.application.FacesMessage;
30 import javax.faces.context.FacesContext;
31 import javax.faces.view.facelets.FaceletException;
32 import javax.inject.Inject;
33 import javax.inject.Named;
34 import javax.naming.Context;
35 import javax.naming.InitialContext;
36 import javax.naming.NamingException;
37 import org.mxchange.jcountry.data.Country;
38 import org.mxchange.jjobs.beans.BaseJobsController;
39 import org.mxchange.jjobs.beans.helper.JobsWebRequestHelperController;
40 import org.mxchange.jphone.events.fax.deleted.AdminDeletedFaxNumberEvent;
41 import org.mxchange.jphone.events.fax.deleted.AdminFaxNumberDeletedEvent;
42 import org.mxchange.jphone.events.fax.removed.AdminFaxNumberRemovedFromListEvent;
43 import org.mxchange.jphone.events.fax.removed.AdminRemoveFaxNumberFromListEvent;
44 import org.mxchange.jphone.events.fax.updated.AdminFaxNumberUpdatedEvent;
45 import org.mxchange.jphone.events.fax.updated.AdminUpdatedFaxNumberEvent;
46 import org.mxchange.jphone.events.landline.deleted.AdminDeletedLandLineNumberEvent;
47 import org.mxchange.jphone.events.landline.deleted.AdminLandLineNumberDeletedEvent;
48 import org.mxchange.jphone.events.landline.removed.AdminLandLineNumberRemovedFromListEvent;
49 import org.mxchange.jphone.events.landline.removed.AdminRemoveLandLineNumberFromListEvent;
50 import org.mxchange.jphone.events.landline.updated.AdminLandLineNumberUpdatedEvent;
51 import org.mxchange.jphone.events.landline.updated.AdminUpdatedLandLineNumberEvent;
52 import org.mxchange.jphone.events.mobile.deleted.AdminDeletedMobileNumberEvent;
53 import org.mxchange.jphone.events.mobile.deleted.AdminMobileNumberDeletedEvent;
54 import org.mxchange.jphone.events.mobile.remove.AdminMobileNumberRemovedFromListEvent;
55 import org.mxchange.jphone.events.mobile.remove.AdminRemoveMobileNumberFromListEvent;
56 import org.mxchange.jphone.events.mobile.updated.AdminMobileNumberUpdatedEvent;
57 import org.mxchange.jphone.events.mobile.updated.AdminUpdatedMobileNumberEvent;
58 import org.mxchange.jphone.phonenumbers.fax.DialableFaxNumber;
59 import org.mxchange.jphone.phonenumbers.landline.DialableLandLineNumber;
60 import org.mxchange.jphone.phonenumbers.mobile.DialableMobileNumber;
61 import org.mxchange.jphone.phonenumbers.mobileprovider.MobileProvider;
62 import org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote;
65 * Administrative controller (bean) for phone numbers
67 * @author Roland Häder<roland@mxchange.org>
69 @Named ("adminPhoneController")
71 public abstract class JobsAdminPhoneWebRequestBean extends BaseJobsController implements JobsAdminPhoneWebRequestController {
76 private static final short THREAD_STACK = 5;
81 private static final long serialVersionUID = 184_598_175_371_269_016L;
84 * Remote EJB for phone number (administrative)
86 private AdminPhoneSessionBeanRemote adminPhoneBean;
92 private JobsWebRequestHelperController beanHelper;
97 private DialableFaxNumber faxNumber;
102 private DialableLandLineNumber landLineNumber;
107 private DialableMobileNumber mobileNumber;
110 * Event being fired when an administrator has deleted fax number
114 private Event<AdminDeletedFaxNumberEvent> faxNumberDeletedEvent;
117 * Event being fired when an administrator has updated fax number
121 private Event<AdminUpdatedFaxNumberEvent> faxNumberUpdatedEvent;
124 * Event being fired when an administrator has deleted land-line number
128 private Event<AdminDeletedLandLineNumberEvent> landLineNumberDeletedEvent;
131 * Event being fired when an administrator has updated fax number
135 private Event<AdminUpdatedLandLineNumberEvent> landLineNumberUpdatedEvent;
138 * Event being fired when an administrator has deleted mobile number
142 private Event<AdminDeletedMobileNumberEvent> mobileNumberDeletedEvent;
145 * Event being fired when an administrator has updated land-line number
149 private Event<AdminUpdatedMobileNumberEvent> mobileNumberUpdatedEvent;
154 private MobileProvider mobileProvider;
157 * Area code (city dial prefix)
159 private Integer phoneAreaCode;
162 * Generic hone controller
165 private JobsPhoneWebApplicationController phoneController;
168 * Country (for dial prefix)
170 private Country phoneCountry;
175 private Long phoneNumber;
178 * Event being fired when a list of all unsed fax numbers is being created.
182 private Event<AdminRemoveFaxNumberFromListEvent> removeLinkedFaxNumbersEvent;
185 * Event being fired when a list of all unsed land-line numbers is being
190 private Event<AdminRemoveLandLineNumberFromListEvent> removeLinkedLandLineNumbersEvent;
193 * Event being fired when a list of all unsed mobile numbers is being
198 private Event<AdminRemoveMobileNumberFromListEvent> removeLinkedMobileNumbersEvent;
201 * Default constructor
203 public JobsAdminPhoneWebRequestBean () {
204 // Call super constructor
207 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[3].getClassName(), Thread.currentThread().getStackTrace()[3].getMethodName());
208 // System.out.println(MessageFormat.format("{0}: Constructed, caller: {1}", this.getClass().getSimpleName(), caller));
212 public List<DialableFaxNumber> allNonLinkedFaxNumbers () {
213 // Get list of all mobile numbers
214 List<DialableFaxNumber> list = this.phoneController.allFaxNumbers();
216 // Visit all controllers to reduce the list
217 this.removeLinkedFaxNumbersEvent.fire(new AdminFaxNumberRemovedFromListEvent(list));
224 public List<DialableLandLineNumber> allNonLinkedLandLineNumbers () {
225 // Get list of all mobile numbers
226 List<DialableLandLineNumber> list = this.phoneController.allLandLineNumbers();
228 // Visit all controllers to reduce the list
229 this.removeLinkedLandLineNumbersEvent.fire(new AdminLandLineNumberRemovedFromListEvent(list));
236 public List<DialableMobileNumber> allNonLinkedMobileNumbers () {
237 // Get list of all mobile numbers
238 List<DialableMobileNumber> list = this.phoneController.allMobileNumbers();
240 // Visit all controllers to reduce the list
241 this.removeLinkedMobileNumbersEvent.fire(new AdminMobileNumberRemovedFromListEvent(list));
248 public String deleteFaxData (final DialableFaxNumber faxNumber) {
250 if (faxNumber == null) {
251 // Not set, throw NPE
252 throw new NullPointerException("faxNumber is null"); //NOI18N
253 } else if (faxNumber.getPhoneId() == null) {
255 throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
256 } else if (faxNumber.getPhoneId() < 1) {
258 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N
259 } else if (faxNumber.getPhoneCountry() == null) {
261 throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
262 } else if (faxNumber.getPhoneCountry().getCountryId() == null) {
264 throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
265 } else if (faxNumber.getPhoneCountry().getCountryId() < 1) {
267 throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", faxNumber.getPhoneCountry().getCountryId())); //NOI18N
268 } else if (faxNumber.getPhoneAreaCode() == null) {
270 throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
271 } else if (faxNumber.getPhoneAreaCode() < 1) {
273 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", faxNumber.getPhoneAreaCode())); //NOI18N
274 } else if (faxNumber.getPhoneNumber() == null) {
276 throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
277 } else if (faxNumber.getPhoneNumber() < 1) {
279 throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", faxNumber.getPhoneNumber())); //NOI18N
283 this.adminPhoneBean.deleteFaxData(faxNumber);
286 this.faxNumberDeletedEvent.fire(new AdminFaxNumberDeletedEvent(faxNumber));
288 // All fine, redirect
289 return "admin_list_fax"; //NOI18N
293 public String deleteLandLineData (final DialableLandLineNumber landLineNumber) {
295 if (landLineNumber == null) {
296 // Not set, throw NPE
297 throw new NullPointerException("landLineNumber is null"); //NOI18N
298 } else if (landLineNumber.getPhoneId() == null) {
300 throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
301 } else if (landLineNumber.getPhoneId() < 1) {
303 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N
304 } else if (landLineNumber.getPhoneCountry() == null) {
306 throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
307 } else if (landLineNumber.getPhoneCountry().getCountryId() == null) {
309 throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
310 } else if (landLineNumber.getPhoneCountry().getCountryId() < 1) {
312 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", landLineNumber.getPhoneCountry().getCountryId())); //NOI18N
313 } else if (landLineNumber.getPhoneAreaCode() == null) {
315 throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
316 } else if (landLineNumber.getPhoneAreaCode() < 1) {
318 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", landLineNumber.getPhoneAreaCode())); //NOI18N
319 } else if (landLineNumber.getPhoneNumber() == null) {
321 throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
322 } else if (landLineNumber.getPhoneNumber() < 1) {
324 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", landLineNumber.getPhoneNumber())); //NOI18N
328 this.adminPhoneBean.deleteLandLineData(landLineNumber);
331 this.landLineNumberDeletedEvent.fire(new AdminLandLineNumberDeletedEvent(landLineNumber));
333 // All fine, redirect
334 return "admin_list_landline"; //NOI18N
338 public String deleteMobileData (final DialableMobileNumber mobileNumber) {
340 if (mobileNumber == null) {
341 // Not set, throw NPE
342 throw new NullPointerException("mobileNumber is null"); //NOI18N
343 } else if (mobileNumber.getPhoneId() == null) {
345 throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
346 } else if (mobileNumber.getPhoneId() < 1) {
348 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //NOI18N
349 } else if (mobileNumber.getMobileProvider() == null) {
351 throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
352 } else if (mobileNumber.getMobileProvider().getProviderId() == null) {
354 throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
355 } else if (mobileNumber.getMobileProvider().getProviderId() < 1) {
357 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N
358 } else if (mobileNumber.getPhoneNumber() == null) {
360 throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
361 } else if (mobileNumber.getPhoneNumber() < 1) {
363 throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", mobileNumber.getPhoneNumber())); //NOI18N
367 this.adminPhoneBean.deleteMobileData(mobileNumber);
370 this.mobileNumberDeletedEvent.fire(new AdminMobileNumberDeletedEvent(mobileNumber));
372 // All fine, redirect
373 return "admin_list_mobile"; //NOI18N
377 public String editFaxData (final DialableFaxNumber faxNumber) {
379 if (faxNumber == null) {
380 // Not set, throw NPE
381 throw new NullPointerException("faxNumber is null"); //NOI18N
382 } else if (faxNumber.getPhoneId() == null) {
384 throw new NullPointerException("faxNumber.phoneId is null"); //NOI18N
385 } else if (faxNumber.getPhoneId() < 1) {
387 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneId={0} is not valid", faxNumber.getPhoneId())); //NOI18N
388 } else if (faxNumber.getPhoneCountry() == null) {
390 throw new NullPointerException("faxNumber.phoneCountry is null"); //NOI18N
391 } else if (faxNumber.getPhoneCountry().getCountryId() == null) {
393 throw new NullPointerException("faxNumber.phoneCountry.countryId is null"); //NOI18N
394 } else if (faxNumber.getPhoneCountry().getCountryId() < 1) {
396 throw new NullPointerException(MessageFormat.format("faxNumber.phoneCountry.countryId={0} is not valid", faxNumber.getPhoneCountry().getCountryId())); //NOI18N
397 } else if (faxNumber.getPhoneAreaCode() == null) {
399 throw new NullPointerException("faxNumber.phoneAreaCode is null"); //NOI18N
400 } else if (faxNumber.getPhoneAreaCode() < 1) {
402 throw new IllegalArgumentException(MessageFormat.format("faxNumber.phoneAreaCode={0} is not valid.", faxNumber.getPhoneAreaCode())); //NOI18N
403 } else if (faxNumber.getPhoneNumber() == null) {
405 throw new NullPointerException("faxNumber.phoneNumber is null"); //NOI18N
406 } else if (faxNumber.getPhoneNumber() < 1) {
408 throw new NullPointerException(MessageFormat.format("faxNumber.phoneNumber={0} is not valid.", faxNumber.getPhoneNumber())); //NOI18N
411 // Is the mobile provider and number the same?
412 if ((Objects.equals(this.getPhoneCountry(), faxNumber.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), faxNumber.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), faxNumber.getPhoneNumber()))) {
414 this.showFacesMessage("form_edit_fax:faxNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
416 // No difference in both together, no need to edit
421 faxNumber.setPhoneCountry(this.getPhoneCountry());
422 faxNumber.setPhoneAreaCode(this.getPhoneAreaCode());
423 faxNumber.setPhoneNumber(this.getPhoneNumber());
426 DialableFaxNumber updatedNumber = this.adminPhoneBean.updateFaxData(faxNumber);
429 this.faxNumberUpdatedEvent.fire(new AdminFaxNumberUpdatedEvent(updatedNumber));
431 // All fine, redirect
432 return "admin_show_fax"; //NOI18N
436 public String editLandLineData (final DialableLandLineNumber landLineNumber) {
438 if (landLineNumber == null) {
439 // Not set, throw NPE
440 throw new NullPointerException("landLineNumber is null"); //NOI18N
441 } else if (landLineNumber.getPhoneId() == null) {
443 throw new NullPointerException("landLineNumber.phoneId is null"); //NOI18N
444 } else if (landLineNumber.getPhoneId() < 1) {
446 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneId={0} is not valid", landLineNumber.getPhoneId())); //NOI18N
447 } else if (landLineNumber.getPhoneCountry() == null) {
449 throw new NullPointerException("landLineNumber.phoneCountry is null"); //NOI18N
450 } else if (landLineNumber.getPhoneCountry().getCountryId() == null) {
452 throw new NullPointerException("landLineNumber.phoneCountry.countryId is null"); //NOI18N
453 } else if (landLineNumber.getPhoneCountry().getCountryId() < 1) {
455 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneCountry.countryId={0} is not valid", landLineNumber.getPhoneCountry().getCountryId())); //NOI18N
456 } else if (landLineNumber.getPhoneAreaCode() == null) {
458 throw new NullPointerException("landLineNumber.phoneAreaCode is null"); //NOI18N
459 } else if (landLineNumber.getPhoneAreaCode() < 1) {
461 throw new IllegalArgumentException(MessageFormat.format("landLineNumber.phoneAreaCode={0} is not valid.", landLineNumber.getPhoneAreaCode())); //NOI18N
462 } else if (landLineNumber.getPhoneNumber() == null) {
464 throw new NullPointerException("landLineNumber.phoneNumber is null"); //NOI18N
465 } else if (landLineNumber.getPhoneNumber() < 1) {
467 throw new NullPointerException(MessageFormat.format("landLineNumber.phoneNumber={0} is not valid.", landLineNumber.getPhoneNumber())); //NOI18N
470 // Is the mobile provider and number the same?
471 if ((Objects.equals(this.getPhoneCountry(), landLineNumber.getPhoneCountry())) && (Objects.equals(this.getPhoneAreaCode(), landLineNumber.getPhoneAreaCode())) && (Objects.equals(this.getPhoneNumber(), landLineNumber.getPhoneNumber()))) {
473 this.showFacesMessage("form_edit_landline:landLineNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
475 // No difference in both together, no need to edit
480 landLineNumber.setPhoneCountry(this.getPhoneCountry());
481 landLineNumber.setPhoneAreaCode(this.getPhoneAreaCode());
482 landLineNumber.setPhoneNumber(this.getPhoneNumber());
485 DialableLandLineNumber updatedNumber = this.adminPhoneBean.updateLandLineData(landLineNumber);
488 this.landLineNumberUpdatedEvent.fire(new AdminLandLineNumberUpdatedEvent(updatedNumber));
490 // All fine, redirect
491 return "admin_show_landline"; //NOI18N
495 public String editMobileData (final DialableMobileNumber mobileNumber) {
497 if (mobileNumber == null) {
498 // Not set, throw NPE
499 throw new NullPointerException("mobileNumber is null"); //NOI18N
500 } else if (mobileNumber.getPhoneId() == null) {
502 throw new NullPointerException("mobileNumber.phoneId is null"); //NOI18N
503 } else if (mobileNumber.getPhoneId() < 1) {
505 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.phoneId={0} is not valid", mobileNumber.getPhoneId())); //NOI18N
506 } else if (mobileNumber.getMobileProvider() == null) {
508 throw new NullPointerException("mobileNumber.mobileProvider is null"); //NOI18N
509 } else if (mobileNumber.getMobileProvider().getProviderId() == null) {
511 throw new NullPointerException("mobileNumber.mobileProvider.providerId is null"); //NOI18N
512 } else if (mobileNumber.getMobileProvider().getProviderId() < 1) {
514 throw new IllegalArgumentException(MessageFormat.format("mobileNumber.mobileProvider.providerId={0} is not valid.", mobileNumber.getMobileProvider().getProviderId())); //NOI18N
515 } else if (mobileNumber.getPhoneNumber() == null) {
517 throw new NullPointerException("mobileNumber.phoneNumber is null"); //NOI18N
518 } else if (mobileNumber.getPhoneNumber() < 1) {
520 throw new NullPointerException(MessageFormat.format("mobileNumber.phoneNumber={0} is not valid.", mobileNumber.getPhoneNumber())); //NOI18N
521 } else if (this.getMobileProvider() == null) {
523 this.showFacesMessage("form_edit_mobile:mobileProvider", "ERROR_ADMIN_NO_MOBILE_PROVIDER_SELECTED"); //NOI18N
525 } else if (this.getMobileProvider().getProviderId() == null) {
526 // Throw NPE again ...
527 throw new NullPointerException("this.mobileProvider.providerId is null"); //NOI18N
528 } else if (this.getMobileProvider().getProviderId() < 0) {
530 throw new IllegalArgumentException(MessageFormat.format("this.mobileProvider.providerId={0} is not valid.", this.getMobileProvider().getProviderId())); //NOI18N
531 } else if (this.getPhoneNumber() == null) {
533 this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_EMPTY_MOBILE_NUMBER"); //NOI18N
537 // Is the mobile provider and number the same?
538 if ((Objects.equals(this.getMobileProvider(), mobileNumber.getMobileProvider())) && (Objects.equals(this.getPhoneNumber(), mobileNumber.getPhoneNumber()))) {
540 this.showFacesMessage("form_edit_mobile:mobileNumber", "ERROR_ADMIN_NO_CHANGE_ENTERED"); //NOI18N
542 // No difference in both together, no need to edit
547 mobileNumber.setMobileProvider(this.getMobileProvider());
548 mobileNumber.setPhoneNumber(this.getPhoneNumber());
551 DialableMobileNumber updatedNumber = this.adminPhoneBean.updateMobileData(mobileNumber);
554 this.mobileNumberUpdatedEvent.fire(new AdminMobileNumberUpdatedEvent(updatedNumber));
556 // All fine, redirect
557 return "admin_show_mobile"; //NOI18N
561 public DialableFaxNumber getFaxNumber () {
562 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
563 // System.out.println(MessageFormat.format("{0}: Returning this.faxNumber={1}, caller: {2}", this.getClass().getSimpleName(), this.faxNumber, caller));
564 return this.faxNumber;
568 public void setFaxNumber (final DialableFaxNumber faxNumber) {
569 // String caller = MessageFormat.format("{0}.{1}", Thread.currentThread().getStackTrace()[THREAD_STACK].getClassName(), Thread.currentThread().getStackTrace()[THREAD_STACK].getMethodName());
570 // System.out.println(MessageFormat.format("{0}: Settin faxNumber={1}, previous: this.faxNumber={2}, caller: {3}", this.getClass().getSimpleName(), faxNumber, this.faxNumber, caller));
571 this.faxNumber = faxNumber;
575 public DialableLandLineNumber getLandLineNumber () {
576 return this.landLineNumber;
580 public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
581 this.landLineNumber = landLineNumber;
585 public DialableMobileNumber getMobileNumber () {
586 return this.mobileNumber;
590 public void setMobileNumber (final DialableMobileNumber mobileNumber) {
591 this.mobileNumber = mobileNumber;
595 public MobileProvider getMobileProvider () {
596 return this.mobileProvider;
600 public void setMobileProvider (final MobileProvider mobileProvider) {
601 this.mobileProvider = mobileProvider;
605 public Integer getPhoneAreaCode () {
606 return this.phoneAreaCode;
610 public void setPhoneAreaCode (final Integer phoneAreaCode) {
611 this.phoneAreaCode = phoneAreaCode;
615 public Country getPhoneCountry () {
616 return this.phoneCountry;
620 public void setPhoneCountry (final Country phoneCountry) {
621 this.phoneCountry = phoneCountry;
625 public Long getPhoneNumber () {
626 return this.phoneNumber;
630 public void setPhoneNumber (final Long phoneNumber) {
631 this.phoneNumber = phoneNumber;
635 * Post-construction method
638 public void init () {
641 // Get initial context
642 Context context = new InitialContext();
644 // Try to lookup the beans
645 this.adminPhoneBean = (AdminPhoneSessionBeanRemote) context.lookup("java:global/jjobs-ejb/adminPhone!org.mxchange.jphone.phonenumbers.phone.AdminPhoneSessionBeanRemote"); //NOI18N
646 } catch (final NamingException e) {
648 throw new FaceletException(e);
653 * Returns given property key or throws an exception if not found.
655 * @param parameterKey Property key
657 * @return Property value
659 * @throws NullPointerException If given key is not found
660 * @throws NumberFormatException If no number is given in context parameter
662 protected int getIntegerContextParameter (final String parameterKey) throws NullPointerException, NumberFormatException {
663 // Get context parameter
664 Integer contextValue = Integer.parseInt(this.getStringContextParameter(parameterKey));
670 * Returns given property key or throws an exception if not found.
672 * @param parameterKey Property key
674 * @return Property value
676 * @throws NullPointerException If given key is not found
678 protected String getStringContextParameter (final String parameterKey) throws NullPointerException {
679 // Get context parameter
680 String contextValue = FacesContext.getCurrentInstance().getExternalContext().getInitParameter(parameterKey);
682 if (null == contextValue) {
684 throw new NullPointerException(MessageFormat.format("parameterKey={0} is not set.", parameterKey)); //NOI18N
691 * Checks whether debug mode is enabled for given controller
693 * @param controllerName Name of controller
695 * @return Whether debug mode is enabled
697 protected boolean isDebugModeEnabled (final String controllerName) {
698 // Parameters should be valid
699 if (null == controllerName) {
701 throw new NullPointerException("controllerName is null"); //NOI18N
702 } else if (controllerName.isEmpty()) {
704 throw new IllegalArgumentException("controllerName is empty"); //NOI18N
706 // Try to get context parameter
707 String contextParameter = this.getStringContextParameter(String.format("is_debug_%s_enabled", controllerName)); //NOI18N
708 // Is it set and true?
709 boolean isEnabled = Boolean.parseBoolean(contextParameter) == Boolean.TRUE;
715 * Loads resource bundle for given locale. This must be implemented per
716 * project so all projects can still customize their methods. Calling
717 * ResourceBundleloadBundle() in this class means that also the bundle files
718 * must be present here.
720 * @param locale Locale from e.g. FacesContext
722 * @return Initialized and loaded resource bundle
724 protected abstract ResourceBundle loadResourceBundle (final Locale locale);
727 * Shows a faces message for given causing exception. The message from the
728 * exception is being inserted into the message.
730 * @param clientId Client id to send message to
731 * @param cause Causing exception
733 protected void showFacesMessage (final String clientId, final Throwable cause) {
734 // Get context and add message
735 this.showFacesMessage(clientId, cause.getMessage());
739 * Shows a faces message with given message (i18n) key.
741 * @param clientId Client id to send message to
742 * @param i18nKey Message key
744 * @throws NullPointerException If clientId or i18nKey is null
745 * @throws IllegalArgumentException If clientId or i18nKey is empty
747 protected void showFacesMessage (final String clientId, final String i18nKey) throws NullPointerException, IllegalArgumentException {
748 // Both parameter must be valid
749 if (null == clientId) {
751 throw new NullPointerException("clientId is null"); //NOI18N
752 } else if (clientId.isEmpty()) {
754 throw new IllegalArgumentException("clientId is null"); //NOI18N
755 } else if (null == i18nKey) {
757 throw new NullPointerException("i18nKey is null"); //NOI18N
758 } else if (i18nKey.isEmpty()) {
760 throw new IllegalArgumentException("i18nKey is null"); //NOI18N
762 // Get current locale
763 Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
765 ResourceBundle bundle = this.loadResourceBundle(locale);
766 // Default is i18nKey
767 String message = MessageFormat.format("!{0}!", i18nKey); //NOI18N
771 message = bundle.getString(i18nKey);
772 } catch (final MissingResourceException ex) {
773 // Did not find it, ignored
775 // Get context and add message
776 FacesContext.getCurrentInstance().addMessage(clientId, new FacesMessage(message));