2 * Copyright (C) 2015 Roland Haeder
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.
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.
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/>.
17 package org.mxchange.addressbook.beans.user;
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;
36 * A user bean (controller)
38 * @author Roland Haeder<roland@mxchange.org>
40 @Named ("userController")
42 public class UserWebBean implements UserWebController {
47 private static final long serialVersionUID = 542_145_347_916L;
49 /////////////////////// Properties /////////////////////
53 private Date birthday;
58 private String cellphoneNumber;
68 private String comment;
73 private String countryCode;
78 private String emailAddress;
83 private String familyName;
88 private String faxNumber;
93 private String firstName;
98 private Gender gender;
103 private Short houseNumber;
113 private String phoneNumber;
118 private String street;
123 private final UserSessionBeanRemote userBean;
128 private String userName;
131 * User password (unencrypted from web form)
133 private String userPassword;
138 private Integer zipCode;
143 private List<String> emailAddressList;
148 private List<String> userNameList;
151 * Default constructor
153 public UserWebBean () {
154 // Set gender to UNKNOWN
155 this.gender = Gender.UNKNOWN;
159 // Get initial context
160 Context context = new InitialContext();
163 this.userBean = (UserSessionBeanRemote) context.lookup("ejb/stateless-user");
164 } catch (final NamingException e) {
166 throw new FaceletException(e);
171 public boolean isEmailAddressRegistered (String emailAddress) {
172 return ((this.emailAddressList instanceof List) && (this.emailAddressList.contains(emailAddress)));
176 public boolean isUserNameRegistered (final String userName) {
177 return ((this.userNameList instanceof List) && (this.userNameList.contains(userName)));
181 public void init () {
182 // Get full user name list for reducing EJB calls
183 this.userNameList = this.userBean.getUserNameList();
185 // Get full email address list for reducing EJB calls
186 this.emailAddressList = this.userBean.getEmailAddressList();
190 public void copyUser (final User user) {
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());
204 this.setPhoneNumber(user.getUserContact().getPhoneNumber());
205 this.setCellphoneNumber(user.getUserContact().getCellphoneNumber());
206 this.setFaxNumber(user.getUserContact().getFaxNumber());
207 this.setEmailAddress(user.getUserContact().getEmailAddress());
210 this.setBirthday(user.getUserContact().getBirthday());
211 this.setComment(user.getUserContact().getComment());
215 public User createUserInstance () {
217 //this.getLogger().logTrace("createUserInstance: CALLED!");
219 // Required personal data must be set
220 assert (this.isRequiredPersonalDataSet()) : "not all personal data is set"; //NOI18N
222 // Create new user instance
223 User user = new LoginUser();
224 user.setUserName(this.getUserName());
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());
238 // Set contact in user
239 user.setUserContact(contact);
242 //this.getLogger().logTrace(MessageFormat.format("createUserInstance: user={0} - EXIT!", user));
248 public Date getBirthday () {
249 return this.birthday;
253 public void setBirthday (final Date birthday) {
254 this.birthday = birthday;
258 public String getCellphoneNumber () {
259 return this.cellphoneNumber;
263 public void setCellphoneNumber (final String cellphoneNumber) {
264 this.cellphoneNumber = cellphoneNumber;
268 public String getCity () {
273 public void setCity (final String city) {
278 public String getComment () {
283 public void setComment (final String comment) {
284 this.comment = comment;
288 public String getCountryCode () {
289 return this.countryCode;
293 public void setCountryCode (final String countryCode) {
294 this.countryCode = countryCode;
298 public String getEmailAddress () {
299 return this.emailAddress;
303 public void setEmailAddress (final String emailAddress) {
304 this.emailAddress = emailAddress;
308 public String getFamilyName () {
309 return this.familyName;
313 public void setFamilyName (final String familyName) {
314 this.familyName = familyName;
318 public String getFaxNumber () {
319 return this.faxNumber;
323 public void setFaxNumber (final String faxNumber) {
324 this.faxNumber = faxNumber;
328 public String getFirstName () {
329 return this.firstName;
333 public void setFirstName (final String firstName) {
334 this.firstName = firstName;
338 public Gender getGender () {
343 public void setGender (final Gender gender) {
344 this.gender = gender;
348 public Short getHouseNumber () {
349 return this.houseNumber;
353 public void setHouseNumber (final Short houseNumber) {
354 this.houseNumber = houseNumber;
358 public String getPhoneNumber () {
359 return this.phoneNumber;
363 public void setPhoneNumber (final String phoneNumber) {
364 this.phoneNumber = phoneNumber;
368 public String getStreet () {
373 public void setStreet (final String street) {
374 this.street = street;
378 public Long getUserId () {
383 public void setUserId (final Long userId) {
384 this.userId = userId;
388 public String getUserName () {
389 return this.userName;
393 public void setUserName (final String userName) {
394 this.userName = userName;
398 public String getUserPassword () {
399 return this.userPassword;
403 public void setUserPassword (final String userPassword) {
404 this.userPassword = userPassword;
408 public Integer getZipCode () {
413 public void setZipCode (final Integer zipCode) {
414 this.zipCode = zipCode;
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));