]> git.mxchange.org Git - jjobs-war.git/blob - src/java/org/mxchange/jjobs/beans/helper/JobsWebViewHelperBean.java
Please cherry-pick:
[jjobs-war.git] / src / java / org / mxchange / jjobs / beans / helper / JobsWebViewHelperBean.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.jjobs.beans.helper;
18
19 import java.text.MessageFormat;
20 import javax.enterprise.event.Event;
21 import javax.enterprise.inject.Any;
22 import javax.faces.view.ViewScoped;
23 import javax.inject.Inject;
24 import javax.inject.Named;
25 import org.mxchange.jcontacts.events.contact.created.CreatedContactEvent;
26 import org.mxchange.jcontacts.events.contact.created.ObservableCreatedContactEvent;
27 import org.mxchange.jcontacts.model.contact.Contact;
28 import org.mxchange.jcontactsbusiness.model.basicdata.BasicData;
29 import org.mxchange.jcontactsbusiness.model.branchoffice.BranchOffice;
30 import org.mxchange.jcontactsbusiness.model.department.Department;
31 import org.mxchange.jcontactsbusiness.model.employee.Employable;
32 import org.mxchange.jcontactsbusiness.model.headquarter.Headquarter;
33 import org.mxchange.jcountry.model.data.Country;
34 import org.mxchange.jjobs.beans.BaseJobsBean;
35 import org.mxchange.jjobs.beans.localization.JobsLocalizationSessionController;
36 import org.mxchange.jjobs.beans.user.JobsUserWebRequestController;
37 import org.mxchange.jphone.events.fax.created.CreatedFaxNumberEvent;
38 import org.mxchange.jphone.events.fax.created.ObservableCreatedFaxNumberEvent;
39 import org.mxchange.jphone.events.landline.created.CreatedLandLineNumberEvent;
40 import org.mxchange.jphone.events.landline.created.ObservableCreatedLandLineNumberEvent;
41 import org.mxchange.jphone.events.mobile.created.CreatedMobileNumberEvent;
42 import org.mxchange.jphone.events.mobile.created.ObservableCreatedMobileNumberEvent;
43 import org.mxchange.jphone.model.phonenumbers.DialableNumber;
44 import org.mxchange.jphone.model.phonenumbers.fax.DialableFaxNumber;
45 import org.mxchange.jphone.model.phonenumbers.landline.DialableLandLineNumber;
46 import org.mxchange.jphone.model.phonenumbers.mobile.DialableMobileNumber;
47 import org.mxchange.jusercore.events.user.created.CreatedUserEvent;
48 import org.mxchange.jusercore.events.user.created.ObservableCreatedUserEvent;
49 import org.mxchange.jusercore.model.user.User;
50
51 /**
52  * A general helper for beans
53  * <p>
54  * @author Roland Häder<roland@mxchange.org>
55  */
56 @Named ("beanHelper")
57 @ViewScoped
58 public class JobsWebViewHelperBean extends BaseJobsBean implements JobsWebViewHelperController {
59
60         /**
61          * Serial number
62          */
63         private static final long serialVersionUID = 17_258_793_567_145_701L;
64
65         /**
66          * Contact instance
67          */
68         private Contact contact;
69
70         /**
71          * Event for when a contact instance was created
72          */
73         @Any
74         @Inject
75         private Event<ObservableCreatedContactEvent> contactCreatedEvent;
76
77         /**
78          * Fax number
79          */
80         private DialableFaxNumber faxNumber;
81
82         /**
83          * Event for when a fax number instance was created
84          */
85         @Any
86         @Inject
87         private Event<ObservableCreatedFaxNumberEvent> faxNumberCreatedEvent;
88
89         /**
90          * Land-line number
91          */
92         private DialableLandLineNumber landLineNumber;
93
94         /**
95          * Event for when a land-line number instance was created
96          */
97         @Any
98         @Inject
99         private Event<ObservableCreatedLandLineNumberEvent> landLineNumberCreatedEvent;
100
101         /**
102          * Localization controller
103          */
104         @Inject
105         private JobsLocalizationSessionController localizationController;
106
107         /**
108          * Mobile number
109          */
110         private DialableMobileNumber mobileNumber;
111
112         /**
113          * Event for when a mobile number instance was created
114          */
115         @Any
116         @Inject
117         private Event<ObservableCreatedMobileNumberEvent> mobileNumberCreatedEvent;
118
119         /**
120          * User instance
121          */
122         private User user;
123
124         /**
125          * Regular user controller
126          */
127         @Inject
128         private JobsUserWebRequestController userController;
129
130         /**
131          * Event for when a user instance was created
132          */
133         @Any
134         @Inject
135         private Event<ObservableCreatedUserEvent> userCreatedEvent;
136
137         /**
138          * Default constructor
139          */
140         public JobsWebViewHelperBean () {
141                 // Call super constructor
142                 super();
143         }
144
145         /**
146          * Getter for contact instance
147          * <p>
148          * @return Contact instance
149          */
150         public Contact getContact () {
151                 return this.contact;
152         }
153
154         /**
155          * Setter for contact instance
156          * <p>
157          * @param contact Contact instance
158          */
159         public void setContact (final Contact contact) {
160                 this.contact = contact;
161         }
162
163         /**
164          * Returns a message key depending on if this contact is a user and/or a
165          * contact. If this contact is unused, a default key is returned.
166          * <p>
167          * @param contact Contact instance to check
168          * <p>
169          * @return Message key
170          */
171         public String getContactUsageMessageKey (final Contact contact) {
172                 // The contact must be valid
173                 if (null == contact) {
174                         // Throw NPE
175                         throw new NullPointerException("contact is null"); //NOI18N
176                 } else if (contact.getContactId() == null) {
177                         // Throw again ...
178                         throw new NullPointerException("contact.contactId is null"); //NOI18N
179                 } else if (contact.getContactId() < 1) {
180                         // Not valid
181                         throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
182                 }
183
184                 // Default key is "unused"
185                 String messageKey = "CONTACT_IS_UNUSED"; //NOI18N
186
187                 // Check user first
188                 if (this.userController.isContactFound(contact)) {
189                         // Only user
190                         messageKey = "CONTACT_IS_USER"; //NOI18N
191                 }
192
193                 // Return message key
194                 return messageKey;
195         }
196
197         /**
198          * Getter for dialable fax number
199          * <p>
200          * @return Dialable fax number
201          */
202         public DialableFaxNumber getFaxNumber () {
203                 return this.faxNumber;
204         }
205
206         /**
207          * Setter for dialable fax number
208          * <p>
209          * @param faxNumber Dialable fax number
210          */
211         public void setFaxNumber (final DialableFaxNumber faxNumber) {
212                 this.faxNumber = faxNumber;
213         }
214
215         /**
216          * Getter for dialable land-line number
217          * <p>
218          * @return Dialable land-line number
219          */
220         public DialableLandLineNumber getLandLineNumber () {
221                 return this.landLineNumber;
222         }
223
224         /**
225          * Setter for dialable land-line number
226          * <p>
227          * @param landLineNumber Dialable land-line number
228          */
229         public void setLandLineNumber (final DialableLandLineNumber landLineNumber) {
230                 this.landLineNumber = landLineNumber;
231         }
232
233         /**
234          * Getter for dialable mobile number
235          * <p>
236          * @return Dialable mobile number
237          */
238         public DialableMobileNumber getMobileNumber () {
239                 return this.mobileNumber;
240         }
241
242         /**
243          * Setter for dialable mobile number
244          * <p>
245          * @param mobileNumber Dialable mobile number
246          */
247         public void setMobileNumber (final DialableMobileNumber mobileNumber) {
248                 this.mobileNumber = mobileNumber;
249         }
250
251         /**
252          * Getter for user instance
253          * <p>
254          * @return User instance
255          */
256         public User getUser () {
257                 return this.user;
258         }
259
260         /**
261          * Setter for user instance
262          * <p>
263          * @param user User instance
264          */
265         public void setUser (final User user) {
266                 this.user = user;
267         }
268
269         /**
270          * Notifies other controllers (backing beans) if a contact id has been
271          * successfully converted to a Contact instance.
272          */
273         public void notifyControllerContactConverted () {
274                 // Validate contact instance
275                 if (this.getContact() == null) {
276                         // Throw NPE
277                         throw new NullPointerException("this.contact is null"); //NOI18N
278                 } else if (this.getContact().getContactId() == null) {
279                         // Throw NPE again
280                         throw new NullPointerException("this.contact.contactId is null"); //NOI18N
281                 } else if (this.getContact().getContactId() < 1) {
282                         // Not valid
283                         throw new IllegalStateException(MessageFormat.format("this.contact.contactId={0} is not valid.", this.getContact().getContactId())); //NOI18N
284                 }
285
286                 // Set all phone instances
287                 this.setPhoneInstances(this.getContact());
288
289                 // Set all fields: user
290                 this.contactCreatedEvent.fire(new CreatedContactEvent(this.getContact()));
291         }
292
293         /**
294          * Notifies other controllers (backing beans) if a phone id has been
295          * successfully converted to a DialableFaxNumber instance.
296          */
297         public void notifyControllerFaxNumberConverted () {
298                 // Validate fax instance
299                 if (this.getFaxNumber() == null) {
300                         // Throw NPE
301                         throw new NullPointerException("this.faxNumber is null"); //NOI18N
302                 } else if (this.getFaxNumber().getPhoneId() == null) {
303                         // Throw again
304                         throw new NullPointerException("this.faxNumber.phoneId is null"); //NOI18N
305                 } else if (this.getFaxNumber().getPhoneId() < 1) {
306                         // Invalid id number
307                         throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneId={0} is not valid", this.getFaxNumber().getPhoneId())); //NOI18N
308                 } else if (this.getFaxNumber().getPhoneAreaCode() == null) {
309                         // Throw again
310                         throw new NullPointerException("this.faxNumber.phoneAreaCode is null"); //NOI18N
311                 } else if (this.getFaxNumber().getPhoneAreaCode() < 1) {
312                         // Invalid id number
313                         throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneAreaCode={0} is not valid", this.getFaxNumber().getPhoneAreaCode())); //NOI18N
314                 } else if (this.getFaxNumber().getPhoneCountry() == null) {
315                         // Throw NPE again
316                         throw new NullPointerException("this.faxNumber.phoneCountry is null"); //NOI18N
317                 } else if (this.getFaxNumber().getPhoneCountry().getCountryId() == null) {
318                         // ... throw again
319                         throw new NullPointerException("this.faxNumber.phoneCountry.countryId is null"); //NOI18N
320                 } else if (this.getFaxNumber().getPhoneCountry().getCountryId() < 1) {
321                         // Invalid id
322                         throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneCountry.countryId={0} is invalid", this.getFaxNumber().getPhoneCountry().getCountryId())); //NOI18N
323                 } else if (this.getFaxNumber().getPhoneNumber() == null) {
324                         // Throw NPE again ...
325                         throw new NullPointerException("this.faxNumber.phoneNumber is null"); //NOI18N
326                 } else if (this.getFaxNumber().getPhoneNumber() < 1) {
327                         // Invalid id number
328                         throw new IllegalArgumentException(MessageFormat.format("this.faxNumber.phoneNumber={0} is not valid", this.getFaxNumber().getPhoneNumber())); //NOI18N
329                 }
330
331                 // Fire event
332                 this.faxNumberCreatedEvent.fire(new CreatedFaxNumberEvent(this.getFaxNumber()));
333         }
334
335         /**
336          * Notifies other controllers (backing beans) if a phone id has been
337          * successfully converted to a DialableLandLineNumber instance.
338          */
339         public void notifyControllerLandLineNumberConverted () {
340                 // Validate land-line instance
341                 if (this.getLandLineNumber() == null) {
342                         // Throw NPE
343                         throw new NullPointerException("this.landLineNumber is null"); //NOI18N
344                 } else if (this.getLandLineNumber().getPhoneId() == null) {
345                         // Throw again
346                         throw new NullPointerException("this.landLineNumber.phoneId is null"); //NOI18N
347                 } else if (this.getLandLineNumber().getPhoneId() < 1) {
348                         // Invalid id number
349                         throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneId={0} is not valid", this.getLandLineNumber().getPhoneId())); //NOI18N
350                 } else if (this.getLandLineNumber().getPhoneAreaCode() == null) {
351                         // Throw again
352                         throw new NullPointerException("this.landLineNumber.phoneAreaCode is null"); //NOI18N
353                 } else if (this.getLandLineNumber().getPhoneAreaCode() < 1) {
354                         // Invalid id number
355                         throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneAreaCode={0} is not valid", this.getFaxNumber().getPhoneAreaCode())); //NOI18N
356                 } else if (this.getLandLineNumber().getPhoneCountry() == null) {
357                         // Throw NPE again
358                         throw new NullPointerException("this.landLineNumber.phoneCountry is null"); //NOI18N
359                 } else if (this.getLandLineNumber().getPhoneCountry().getCountryId() == null) {
360                         // ... throw again
361                         throw new NullPointerException("this.landLineNumber.phoneCountry.countryId is null"); //NOI18N
362                 } else if (this.getLandLineNumber().getPhoneCountry().getCountryId() < 1) {
363                         // Invalid id
364                         throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneCountry.countryId={0} is invalid", this.getLandLineNumber().getPhoneCountry().getCountryId())); //NOI18N
365                 } else if (this.getLandLineNumber().getPhoneNumber() == null) {
366                         // Throw NPE again ...
367                         throw new NullPointerException("this.landLineNumber.phoneNumber is null"); //NOI18N
368                 } else if (this.getLandLineNumber().getPhoneNumber() < 1) {
369                         // Invalid id number
370                         throw new IllegalArgumentException(MessageFormat.format("this.landLineNumber.phoneNumber={0} is not valid", this.getLandLineNumber().getPhoneNumber())); //NOI18N
371                 }
372
373                 // Fire event
374                 this.landLineNumberCreatedEvent.fire(new CreatedLandLineNumberEvent(this.getLandLineNumber()));
375         }
376
377         /**
378          * Notifies other controllers (backing beans) if a phone id has been
379          * successfully converted to a DialableMobileNumber instance.
380          */
381         public void notifyControllerMobileNumberConverted () {
382                 // Validate mobile instance
383                 if (this.getMobileNumber() == null) {
384                         // Throw NPE
385                         throw new NullPointerException("this.mobileNumber is null"); //NOI18N
386                 } else if (this.getMobileNumber().getPhoneId() == null) {
387                         // Throw again
388                         throw new NullPointerException("this.mobileNumber.phoneId is null"); //NOI18N
389                 } else if (this.getMobileNumber().getPhoneId() < 1) {
390                         // Invalid id number
391                         throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.phoneId={0} is not valid", this.getMobileNumber().getPhoneId())); //NOI18N
392                 } else if (this.getMobileNumber().getMobileProvider() == null) {
393                         // Throw NPE again
394                         throw new NullPointerException("this.mobileNumber.mobileProvider is null"); //NOI18N
395                 } else if (this.getMobileNumber().getMobileProvider().getProviderId() == null) {
396                         // ... throw again
397                         throw new NullPointerException("this.mobileNumber.mobileProvider.providerId is null"); //NOI18N
398                 } else if (this.getMobileNumber().getMobileProvider().getProviderId() < 1) {
399                         // Invalid id
400                         throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.mobileProvider.providerId={0} is invalid", this.getMobileNumber().getMobileProvider().getProviderId())); //NOI18N
401                 } else if (this.getMobileNumber().getPhoneNumber() == null) {
402                         // Throw NPE again ...
403                         throw new NullPointerException("this.mobileNumber.phoneNumber is null"); //NOI18N
404                 } else if (this.getMobileNumber().getPhoneNumber() < 1) {
405                         // Invalid id number
406                         throw new IllegalArgumentException(MessageFormat.format("this.mobileNumber.phoneNumber={0} is not valid", this.getMobileNumber().getPhoneNumber())); //NOI18N
407                 }
408
409                 // Fire event
410                 this.mobileNumberCreatedEvent.fire(new CreatedMobileNumberEvent(this.getMobileNumber()));
411         }
412
413         /**
414          * Notifies other controllers (backing beans) if a user id has been
415          * successfully converted to a User instance.
416          */
417         public void notifyControllerUserConverted () {
418                 // Validate user instance
419                 if (this.getUser() == null) {
420                         // Throw NPE
421                         throw new NullPointerException("this.user is null"); //NOI18N
422                 } else if (this.getUser().getUserId() == null) {
423                         // Throw NPE again
424                         throw new NullPointerException("this.user.userId is null"); //NOI18N
425                 } else if (this.getUser().getUserId() < 1) {
426                         // Not valid
427                         throw new IllegalStateException(MessageFormat.format("this.user.userId={0} is not valid.", this.getUser().getUserId())); //NOI18N
428                 }
429
430                 // Get contact
431                 final Contact userContact = this.getUser().getUserContact();
432
433                 // Set contact here, too. This avoids parameters that cannot auto-complete in IDEs.
434                 this.setContact(userContact);
435
436                 // Set all phone instances
437                 this.setPhoneInstances(userContact);
438
439                 // Fire event
440                 this.userCreatedEvent.fire(new CreatedUserEvent(this.getUser()));
441         }
442
443         /**
444          * Renders data of basic company data
445          * <p>
446          * @param basicData Basic company data instance
447          * <p>
448          * @return Basic company data as string
449          */
450         public String renderBasicData (final BasicData basicData) {
451                 // Default is empty string, so let's get started
452                 final StringBuilder sb = new StringBuilder(30);
453
454                 // Is basic company data set?
455                 if (basicData instanceof BasicData) {
456                         // Add company name
457                         sb.append(basicData.getCompanyName()); //NOI18N
458
459                         // Is email address set?
460                         if (basicData.getCompanyEmailAddress() != null) {
461                                 // Add it
462                                 sb.append(", ").append(basicData.getCompanyEmailAddress()); //NOI18N
463                         }
464
465                         // Is tax number set?
466                         if (basicData.getCompanyTaxNumber() != null) {
467                                 // Add it
468                                 sb.append(", ").append(basicData.getCompanyTaxNumber()); //NOI18N
469                         }
470                 }
471
472                 // Return it
473                 return sb.toString();
474         }
475
476         /**
477          * Returns the branch office's full address. If null is provided, an empty
478          * string is returned.
479          * <p>
480          * @param branchOffice Branch office instance
481          * <p>
482          * @return Branch office's address
483          */
484         public String renderBranchOffice (final BranchOffice branchOffice) {
485                 // Default is empty string, so let's get started
486                 final StringBuilder sb = new StringBuilder(30);
487
488                 // Is a branch office instance given?
489                 if (branchOffice instanceof BranchOffice) {
490                         // This should not happen:
491                         assert (branchOffice.getBranchCompany() instanceof BasicData) : "branchOffice.branchCompany is null"; //NOI18N
492
493                         // Yes, then append all data
494                         sb.append(branchOffice.getBranchCompany().getCompanyName());
495                         sb.append(", "); //NOI18N
496                         sb.append(branchOffice.getBranchStreet());
497                         sb.append(" "); //NOI18N
498                         sb.append(branchOffice.getBranchHouseNumber());
499                         sb.append(", "); //NOI18N
500                         sb.append(branchOffice.getBranchCountry().getCountryCode());
501                         sb.append(" "); //NOI18N
502                         sb.append(branchOffice.getBranchZipCode());
503                         sb.append(" "); //NOI18N
504                         sb.append(branchOffice.getBranchCity());
505                 }
506
507                 // Return it
508                 return sb.toString();
509         }
510
511         /**
512          * Returns the contact's personal title, family name and name. If null is
513          * provided, an empty string is returned.
514          * <p>
515          * @param contact Contact instance
516          * <p>
517          * @return Contact's full name
518          */
519         public String renderContact (final Contact contact) {
520                 // Default is empty string, so let's get started
521                 final StringBuilder sb = new StringBuilder(20);
522
523                 // Is contact set?
524                 if (contact instanceof Contact) {
525                         // Then create name
526                         sb.append(this.getMessageFromBundle(contact.getContactPersonalTitle().getMessageKey()));
527                         sb.append(" "); //NOI18N
528                         sb.append(contact.getContactFirstName());
529                         sb.append(" "); //NOI18N
530                         sb.append(contact.getContactFamilyName());
531                 }
532
533                 // Return it
534                 return sb.toString();
535         }
536
537         /**
538          * Returns the text representation of given country. If null is provided, an
539          * empty string is returned.
540          * <p>
541          * @param country Country instance
542          * <p>
543          * @return Country's text representation
544          */
545         public String renderCountry (final Country country) {
546                 // Default is empty string, so let's get started
547                 final StringBuilder sb = new StringBuilder(20);
548
549                 // Is a country given?
550                 if (country instanceof Country) {
551                         // Yes, then render it
552                         sb.append(this.getMessageFromBundle(country.getCountryI18nKey()));
553                         sb.append(" ("); //NOI18N
554                         sb.append(country.getCountryCode());
555                         sb.append(")"); //NOI18N
556                 }
557
558                 // Return it
559                 return sb.toString();
560         }
561
562         /**
563          * Returns the department's name and name of assigned company. If null is
564          * provided, an empty string is returned.
565          * <p>
566          * @param department Department instance
567          * <p>
568          * @return Department's full name
569          */
570         public String renderDepartment (final Department department) {
571                 // Default is empty string, so let's get started
572                 final StringBuilder sb = new StringBuilder(10);
573
574                 // Is a department set?
575                 if (department instanceof Department) {
576                         // Then create name
577                         sb.append(this.getMessageFromBundle(department.getDepartmentI18nKey()));
578                         sb.append(" ("); //NOI18N
579                         sb.append(department.getDepartmentCompany().getCompanyName());
580                         sb.append(")"); //NOI18N
581                 }
582
583                 // Return it
584                 return sb.toString();
585         }
586
587         /**
588          * Returns the employee's number, personal title, family name and name if
589          * available. If null is provided, an empty string is returned.
590          * <p>
591          * @param employee Employable instance
592          * <p>
593          * @return A string representing an employee
594          */
595         public String renderEmployee (final Employable employee) {
596                 // Default is empty string, so let's get started
597                 final StringBuilder sb = new StringBuilder(20);
598
599                 // Is employee set?
600                 if (employee instanceof Employable) {
601                         // Is the number given?
602                         if (employee.getEmployeeNumber() != null) {
603                                 // Then create name
604                                 sb.append(employee.getEmployeeNumber());
605                         }
606
607                         // Is contact data found?
608                         if (employee.getEmployeePersonalData() instanceof Contact) {
609                                 // Yes, then render it
610                                 final String contactName = this.renderContact(employee.getEmployeePersonalData());
611
612                                 // Is it given?
613                                 if (contactName != null && !contactName.isEmpty()) {
614                                         // Only add braces when employee number is given
615                                         if (employee.getEmployeeNumber() != null) {
616                                                 sb.append(" ("); //NOI18N
617                                         }
618
619                                         // Then add it
620                                         sb.append(contactName);
621
622                                         // Only add braces when employee number is given
623                                         if (employee.getEmployeeNumber() != null) {
624                                                 sb.append(")"); //NOI18N
625                                         }
626                                 }
627                         }
628
629                         // Is a department found?
630                         if (employee.getEmployeeDepartment() instanceof Department) {
631                                 // Only add braces when employee number is given
632                                 if (employee.getEmployeeNumber() != null || employee.getEmployeePersonalData() instanceof Contact) {
633                                         sb.append(" ("); //NOI18N
634                                 }
635
636                                 // Add department name
637                                 sb.append(this.renderDepartment(employee.getEmployeeDepartment()));
638
639                                 // Only add braces when employee number is given
640                                 if (employee.getEmployeeNumber() != null || employee.getEmployeePersonalData() instanceof Contact) {
641                                         sb.append(")"); //NOI18N
642                                 }
643                         }
644                 }
645
646                 // Return it
647                 return sb.toString();
648         }
649
650         /**
651          * Returns the headquarter address. If null is provided, an empty string is
652          * returned.
653          * <p>
654          * @param headquarter Headquarter instance
655          * <p>
656          * @return Headquarter address
657          */
658         public String renderHeadquarter (final Headquarter headquarter) {
659                 // Default is empty string, so let's get started
660                 final StringBuilder sb = new StringBuilder(10);
661
662                 // Is a headquarter set?
663                 if (headquarter instanceof Headquarter) {
664                         // Then create name
665                         sb.append(headquarter.getHeadquarterStreet());
666                         sb.append(" "); //NOI18N
667                         sb.append(headquarter.getHeadquarterHouseNumber());
668
669                         // Is store/suite number set?
670                         if (headquarter.getHeadquarterStore() instanceof Short) {
671                                 sb.append(" ("); //NOI18N
672                                 sb.append(this.getMessageFromBundle("DATA_STORE")); //NOI18N
673                                 sb.append(" "); //NOI18N
674                                 sb.append(headquarter.getHeadquarterStore());
675                                 sb.append(", "); //NOI18N
676                                 sb.append(this.getMessageFromBundle("DATA_SUITE_NUMBER")); //NOI18N
677                                 sb.append(" "); //NOI18N
678                                 sb.append(headquarter.getHeadquarterSuiteNumber());
679                                 sb.append(")"); //NOI18N
680                         }
681
682                         // Continue with country, ZIP code and city
683                         sb.append(", "); //NOI18N
684                         sb.append(headquarter.getHeadquarterCountry().getCountryCode());
685                         sb.append(" "); //NOI18N
686                         sb.append(headquarter.getHeadquarterZipCode());
687                         sb.append(" "); //NOI18N
688                         sb.append(headquarter.getHeadquarterCity());
689                 }
690
691                 // Return it
692                 return sb.toString();
693         }
694
695         /**
696          * Renders given mobile number (land-line and fax number). If null is
697          * provided, an empty string is returned.
698          * <p>
699          * @param mobileNumber Mobile number to render
700          * <p>
701          * @return Mobile number
702          */
703         public String renderMobileNumber (final DialableMobileNumber mobileNumber) {
704                 // Default is empty string, so let's get started
705                 final StringBuilder sb = new StringBuilder(20);
706
707                 // Is a phone number given?
708                 if (mobileNumber instanceof DialableMobileNumber) {
709                         // Yes, then render it
710                         sb.append(mobileNumber.getMobileProvider().getProviderCountry().getCountryAbroadDialPrefix());
711                         sb.append(mobileNumber.getMobileProvider().getProviderCountry().getCountryPhoneCode());
712                         sb.append(" ("); //NOI18N
713                         sb.append(mobileNumber.getMobileProvider().getProviderDialPrefix());
714                         sb.append(") "); //NOI18N
715                         sb.append(mobileNumber.getPhoneNumber());
716                 }
717
718                 // Return it
719                 return sb.toString();
720         }
721
722         /**
723          * Renders given phone number (land-line and fax number). If null is
724          * provided, an empty string is returned.
725          * <p>
726          * @param number Phone number to render
727          * <p>
728          * @return Phone number
729          * <p>
730          * @throws IllegalArgumentException If a mobile number is provided
731          */
732         public String renderPhoneNumber (final DialableNumber number) {
733                 // Validate parameter
734                 if (number instanceof DialableMobileNumber) {
735                         // Not allowed here
736                         throw new IllegalArgumentException("Mobile numbers cannot be rendered with this method. Please use renderMobileNumber() instead."); //NOI18N
737                 }
738
739                 // Default is empty string, so let's get started
740                 final StringBuilder sb = new StringBuilder(20);
741
742                 // Is a phone number given?
743                 if (number instanceof DialableNumber) {
744                         // Yes, then render it
745                         sb.append(number.getPhoneCountry().getCountryAbroadDialPrefix());
746                         sb.append(number.getPhoneCountry().getCountryPhoneCode());
747                         sb.append(" ("); //NOI18N
748                         sb.append(number.getPhoneAreaCode());
749                         sb.append(") "); //NOI18N
750                         sb.append(number.getPhoneNumber());
751                 }
752
753                 // Return it
754                 return sb.toString();
755         }
756
757         /**
758          * Returns the user's personal title, family name and name. If null is
759          * provided, an empty string is returned.
760          * <p>
761          * @param user User instance
762          * <p>
763          * @return User's full name
764          */
765         public String renderUser (final User user) {
766                 // Default is empty string, so let's get started
767                 final StringBuilder sb = new StringBuilder(20);
768
769                 // Is user given?
770                 if (user instanceof User) {
771                         // Add user name first
772                         sb.append(user.getUserName());
773                         sb.append(" ("); //NOI18N
774
775                         // Add contact data
776                         sb.append(this.renderContact(user.getUserContact()));
777
778                         // Close brace
779                         sb.append(")"); //NOI18N
780                 }
781
782                 // Return it
783                 return sb.toString();
784         }
785
786         /**
787          * Set's all given contact's phone instances: land-line, mobile and
788          * faxNumber
789          * <p>
790          * @param contact Contact to set phone instances for
791          */
792         private void setPhoneInstances (final Contact contact) {
793                 // The contact must be valid
794                 if (null == contact) {
795                         // Throw NPE
796                         throw new NullPointerException("contact is null"); //NOI18N
797                 } else if (contact.getContactId() == null) {
798                         // Throw again ...
799                         throw new NullPointerException("contact.contactId is null"); //NOI18N
800                 } else if (contact.getContactId() < 1) {
801                         // Not valid
802                         throw new IllegalArgumentException(MessageFormat.format("contact.contactId={0} is not valid", contact.getContactId())); //NOI18N
803                 }
804
805                 // Is mobile set?
806                 if (contact.getContactMobileNumber() instanceof DialableMobileNumber) {
807                         // Yes, then set it in admin controller
808                         this.setMobileNumber(contact.getContactMobileNumber());
809                 }
810
811                 // Is land-line set?
812                 if (contact.getContactLandLineNumber() instanceof DialableLandLineNumber) {
813                         // Yes, then set it in admin controller
814                         this.setLandLineNumber(contact.getContactLandLineNumber());
815                 }
816
817                 // Is faxNumber set?
818                 if (contact.getContactFaxNumber() instanceof DialableFaxNumber) {
819                         // Yes, then set it in admin controller
820                         this.setFaxNumber(contact.getContactFaxNumber());
821                 }
822         }
823
824 }