]> git.mxchange.org Git - addressbook-war.git/blob - src/java/org/mxchange/addressbook/beans/user/UserWebBean.java
Continued:
[addressbook-war.git] / src / java / org / mxchange / addressbook / beans / user / UserWebBean.java
1 /*
2  * Copyright (C) 2015 Roland Haeder
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (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 General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 package org.mxchange.addressbook.beans.user;
18
19 import java.util.Date;
20 import java.util.List;
21 import javax.annotation.PostConstruct;
22 import javax.enterprise.context.SessionScoped;
23 import javax.faces.view.facelets.FaceletException;
24 import javax.inject.Named;
25 import javax.naming.Context;
26 import javax.naming.InitialContext;
27 import javax.naming.NamingException;
28 import org.mxchange.jcontacts.contact.Contact;
29 import org.mxchange.jcontacts.contact.UserContact;
30 import org.mxchange.jcontacts.contact.gender.Gender;
31 import org.mxchange.jusercore.model.user.LoginUser;
32 import org.mxchange.jusercore.model.user.User;
33 import org.mxchange.jusercore.model.user.UserSessionBeanRemote;
34
35 /**
36  * A user bean (controller)
37  * <p>
38  * @author Roland Haeder<roland@mxchange.org>
39  */
40 @Named ("userController")
41 @SessionScoped
42 public class UserWebBean implements UserWebController {
43
44         /**
45          * Serial number
46          */
47         private static final long serialVersionUID = 542_145_347_916L;
48
49         /////////////////////// Properties /////////////////////
50         /**
51          * Birth day
52          */
53         private Date birthday;
54
55         /**
56          * Cellphone number
57          */
58         private String cellphoneNumber;
59
60         /**
61          * City
62          */
63         private String city;
64
65         /**
66          * Optional comments
67          */
68         private String comment;
69
70         /**
71          * Country code
72          */
73         private String countryCode;
74
75         /**
76          * Email address
77          */
78         private String emailAddress;
79
80         /**
81          * Family name
82          */
83         private String familyName;
84
85         /**
86          * Fax number
87          */
88         private String faxNumber;
89
90         /**
91          * First name
92          */
93         private String firstName;
94
95         /**
96          * Gender instance
97          */
98         private Gender gender;
99
100         /**
101          * House number
102          */
103         private Short houseNumber;
104
105         /**
106          * User id
107          */
108         private Long userId;
109
110         /**
111          * Phone number
112          */
113         private String phoneNumber;
114
115         /**
116          * Street
117          */
118         private String street;
119
120         /**
121          * Remote user bean
122          */
123         private final UserSessionBeanRemote userBean;
124
125         /**
126          * User name
127          */
128         private String userName;
129
130         /**
131          * User password (unencrypted from web form)
132          */
133         private String userPassword;
134
135         /**
136          * ZIP code
137          */
138         private Integer zipCode;
139
140         /**
141          * Email address list
142          */
143         private List<String> emailAddressList;
144
145         /**
146          * User name list
147          */
148         private List<String> userNameList;
149
150         /**
151          * Default constructor
152          */
153         public UserWebBean () {
154                 // Set gender to UNKNOWN
155                 this.gender = Gender.UNKNOWN;
156
157                 // Try it
158                 try {
159                         // Get initial context
160                         Context context = new InitialContext();
161
162                         // Try to lookup
163                         this.userBean = (UserSessionBeanRemote) context.lookup("ejb/stateless-user");
164                 } catch (final NamingException e) {
165                         // Throw again
166                         throw new FaceletException(e);
167                 }
168         }
169
170         @Override
171         public boolean isEmailAddressRegistered (String emailAddress) {
172                 return ((this.emailAddressList instanceof List) && (this.emailAddressList.contains(emailAddress)));
173         }
174
175         @Override
176         public boolean isUserNameRegistered (final String userName) {
177                 return ((this.userNameList instanceof List) && (this.userNameList.contains(userName)));
178         }
179
180         @PostConstruct
181         public void init () {
182                 // Get full user name list for reducing EJB calls
183                 this.userNameList = this.userBean.getUserNameList();
184
185                 // Get full email address list for reducing EJB calls
186                 this.emailAddressList = this.userBean.getEmailAddressList();
187         }
188
189         @Override
190         public void copyUser (final User user) {
191                 // Copy all fields:
192                 // - base data
193                 this.setUserId(user.getUserId());
194                 this.setGender(user.getUserContact().getGender());
195                 this.setFirstName(user.getUserContact().getFirstName());
196                 this.setFamilyName(user.getUserContact().getFamilyName());
197                 this.setStreet(user.getUserContact().getStreet());
198                 this.setHouseNumber(user.getUserContact().getHouseNumber());
199                 this.setZipCode(user.getUserContact().getZipCode());
200                 this.setCity(user.getUserContact().getCity());
201                 this.setCountryCode(user.getUserContact().getCountryCode());
202
203                 // - contact data
204                 this.setPhoneNumber(user.getUserContact().getPhoneNumber());
205                 this.setCellphoneNumber(user.getUserContact().getCellphoneNumber());
206                 this.setFaxNumber(user.getUserContact().getFaxNumber());
207                 this.setEmailAddress(user.getUserContact().getEmailAddress());
208
209                 // -- other data
210                 this.setBirthday(user.getUserContact().getBirthday());
211                 this.setComment(user.getUserContact().getComment());
212         }
213
214         @Override
215         public User createUserInstance () {
216                 // User message
217                 //this.getLogger().logTrace("createUserInstance: CALLED!");
218
219                 // Required personal data must be set
220                 assert (this.isRequiredPersonalDataSet()) : "not all personal data is set"; //NOI18N
221
222                 // Create new user instance
223                 User user = new LoginUser();
224                 user.setUserName(this.getUserName());
225
226                 // Create new contact
227                 Contact contact = new UserContact(this.getGender(), this.getFirstName(), this.getFamilyName());
228                 contact.setStreet(this.getStreet());
229                 contact.setHouseNumber(this.getHouseNumber());
230                 contact.setZipCode(this.getZipCode());
231                 contact.setCity(this.getCity());
232                 contact.setPhoneNumber(this.getPhoneNumber());
233                 contact.setFaxNumber(this.getFaxNumber());
234                 contact.setCellphoneNumber(this.getCellphoneNumber());
235                 contact.setBirthday(this.getBirthday());
236                 contact.setComment(this.getComment());
237
238                 // Set contact in user
239                 user.setUserContact(contact);
240
241                 // Trace message
242                 //this.getLogger().logTrace(MessageFormat.format("createUserInstance: user={0} - EXIT!", user));
243                 // Return it
244                 return user;
245         }
246
247         @Override
248         public Date getBirthday () {
249                 return this.birthday;
250         }
251
252         @Override
253         public void setBirthday (final Date birthday) {
254                 this.birthday = birthday;
255         }
256
257         @Override
258         public String getCellphoneNumber () {
259                 return this.cellphoneNumber;
260         }
261
262         @Override
263         public void setCellphoneNumber (final String cellphoneNumber) {
264                 this.cellphoneNumber = cellphoneNumber;
265         }
266
267         @Override
268         public String getCity () {
269                 return this.city;
270         }
271
272         @Override
273         public void setCity (final String city) {
274                 this.city = city;
275         }
276
277         @Override
278         public String getComment () {
279                 return this.comment;
280         }
281
282         @Override
283         public void setComment (final String comment) {
284                 this.comment = comment;
285         }
286
287         @Override
288         public String getCountryCode () {
289                 return this.countryCode;
290         }
291
292         @Override
293         public void setCountryCode (final String countryCode) {
294                 this.countryCode = countryCode;
295         }
296
297         @Override
298         public String getEmailAddress () {
299                 return this.emailAddress;
300         }
301
302         @Override
303         public void setEmailAddress (final String emailAddress) {
304                 this.emailAddress = emailAddress;
305         }
306
307         @Override
308         public String getFamilyName () {
309                 return this.familyName;
310         }
311
312         @Override
313         public void setFamilyName (final String familyName) {
314                 this.familyName = familyName;
315         }
316
317         @Override
318         public String getFaxNumber () {
319                 return this.faxNumber;
320         }
321
322         @Override
323         public void setFaxNumber (final String faxNumber) {
324                 this.faxNumber = faxNumber;
325         }
326
327         @Override
328         public String getFirstName () {
329                 return this.firstName;
330         }
331
332         @Override
333         public void setFirstName (final String firstName) {
334                 this.firstName = firstName;
335         }
336
337         @Override
338         public Gender getGender () {
339                 return this.gender;
340         }
341
342         @Override
343         public void setGender (final Gender gender) {
344                 this.gender = gender;
345         }
346
347         @Override
348         public Short getHouseNumber () {
349                 return this.houseNumber;
350         }
351
352         @Override
353         public void setHouseNumber (final Short houseNumber) {
354                 this.houseNumber = houseNumber;
355         }
356
357         @Override
358         public String getPhoneNumber () {
359                 return this.phoneNumber;
360         }
361
362         @Override
363         public void setPhoneNumber (final String phoneNumber) {
364                 this.phoneNumber = phoneNumber;
365         }
366
367         @Override
368         public String getStreet () {
369                 return this.street;
370         }
371
372         @Override
373         public void setStreet (final String street) {
374                 this.street = street;
375         }
376
377         @Override
378         public Long getUserId () {
379                 return this.userId;
380         }
381
382         @Override
383         public void setUserId (final Long userId) {
384                 this.userId = userId;
385         }
386
387         @Override
388         public String getUserName () {
389                 return this.userName;
390         }
391
392         @Override
393         public void setUserName (final String userName) {
394                 this.userName = userName;
395         }
396
397         @Override
398         public String getUserPassword () {
399                 return this.userPassword;
400         }
401
402         @Override
403         public void setUserPassword (final String userPassword) {
404                 this.userPassword = userPassword;
405         }
406
407         @Override
408         public Integer getZipCode () {
409                 return this.zipCode;
410         }
411
412         @Override
413         public void setZipCode (final Integer zipCode) {
414                 this.zipCode = zipCode;
415         }
416
417         @Override
418         public boolean isRequiredPersonalDataSet () {
419                 return ((this.getUserName() != null) && (this.getGender() != null) && (this.getFirstName() != null) && (this.getFamilyName() != null) && (this.getStreet() != null) && (this.getHouseNumber() != null) && (this.getZipCode() != null) && (this.getCity() != null));
420         }
421 }