From: Roland Haeder Date: Wed, 25 May 2016 18:18:21 +0000 (+0200) Subject: moved from jphone-core and jcoreee as here (JSF) it makes more sense than there ... X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=2ea63865fa4cab32cbed6886c4a45e9a24c83a81;p=jfinancials-war.git moved from jphone-core and jcoreee as here (JSF) it makes more sense than there (model/POJOs). Signed-off-by: Roland Häder --- diff --git a/src/java/org/mxchange/addressbook/validator/addressbook/AddressbookIdValidator.java b/src/java/org/mxchange/addressbook/validator/addressbook/AddressbookIdValidator.java new file mode 100644 index 00000000..8cc496ad --- /dev/null +++ b/src/java/org/mxchange/addressbook/validator/addressbook/AddressbookIdValidator.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.addressbook.validator.addressbook; + +import java.text.MessageFormat; +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.validator.FacesValidator; +import javax.faces.validator.ValidatorException; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.addressbook.model.addressbook.AddressbookSessionBeanRemote; +import org.mxchange.jaddressbookcore.exceptions.AddressbookNotFoundException; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; +import org.mxchange.jcoreee.validator.number.BaseLongValidator; +import org.mxchange.jcoreeelogger.beans.local.logger.Log; +import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; + +/** + * A validator for address book id verification + *

+ * @author Roland Haeder + */ +@FacesValidator (value = "AddressbookIdValidator") +public class AddressbookIdValidator extends BaseLongValidator { + + /** + * Serial number + */ + private static final long serialVersionUID = 158_768_467_186_951_809L; + + /** + * Remote bean + */ + private AddressbookSessionBeanRemote addressbookBean; + + /** + * Logger instance + */ + @Log + private LoggerBeanLocal loggerBeanLocal; + + /** + * Public consutructor + */ + public AddressbookIdValidator () { + // Try to get it + try { + // Get initial context + Context context = new InitialContext(); + + // Lookup logger + this.loggerBeanLocal = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal"); //NOI18N + + // ... and user controller + this.addressbookBean = (AddressbookSessionBeanRemote) context.lookup("java:global/addressbook-ejb/addressbook!org.mxchange.addressbook.model.addressbook.AddressbookSessionBeanRemote"); //NOI18N + } catch (final NamingException ex) { + // Continue to throw it + throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N + } + } + + @Override + public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException { + // Trace message + this.loggerBeanLocal.logTrace(MessageFormat.format("validate: context={0},component={1},value={2} - CALLED!", context, component, value)); //NOI18N + + // All accepted, required fields + String[] requiredFields = {"addressbookId"}; //NOI18N + + // Pre-validation (example: not null, not a string, empty string ...) + super.preValidate(context, component, value, requiredFields, false); + + // Cast to long + Long addressbookId = (Long) value; + + // Is the address book id valid? + if (!this.addressbookBean.isAddressbookIdUsed(addressbookId)) { + // Is not valid + throw new ValidatorException(new FacesMessage(MessageFormat.format("No address book found with id {0}. Please check your link.", addressbookId))); //NOI18N + } + + // Init variable + Addressbook addressbook; + + // Try it + try { + // Get full data + addressbook = this.addressbookBean.getAddressbookById(addressbookId); + + // Is it set? + if (null == addressbook) { + // Is null?! + throw new NullPointerException(MessageFormat.format("addressbook for id={0} is null", addressbookId)); //NOI18N + } + } catch (final AddressbookNotFoundException ex) { + // Continue to throw + throw new ValidatorException(new FacesMessage(MessageFormat.format("Cannot find address book with id {0}", addressbookId)), ex); //NOI18N + } + + // Trace message + this.loggerBeanLocal.logTrace("validate: EXIT!"); //NOI18N + } +} diff --git a/src/java/org/mxchange/addressbook/validator/birthday/AddressbookBirthdayValidator.java b/src/java/org/mxchange/addressbook/validator/birthday/AddressbookBirthdayValidator.java new file mode 100644 index 00000000..8754a6e9 --- /dev/null +++ b/src/java/org/mxchange/addressbook/validator/birthday/AddressbookBirthdayValidator.java @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.addressbook.validator.birthday; + +import java.text.MessageFormat; +import java.util.Date; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.validator.FacesValidator; +import javax.faces.validator.Validator; +import javax.faces.validator.ValidatorException; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcoreee.validator.date.BaseDateValidator; +import org.mxchange.jcoreeelogger.beans.local.logger.Log; +import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; + +/** + * A birthday validator + *

+ * @author Roland Haeder + */ +@FacesValidator("BirthdayValidator") +public class AddressbookBirthdayValidator extends BaseDateValidator implements Validator { + + /** + * Serial number + */ + private static final long serialVersionUID = 28_735_756_819_460L; + + /** + * Logger bean + */ + @Log + private LoggerBeanLocal loggerBeanLocal; + + /** + * Default constructor + */ + public AddressbookBirthdayValidator () { + // Try to get it + try { + // Get initial context + Context context = new InitialContext(); + + // Lookup logger + this.loggerBeanLocal = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal"); //NOI18N + } catch (final NamingException ex) { + // Continue to throw it + throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N + } + } + + @Override + public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException { + // Trace message + this.loggerBeanLocal.logTrace(MessageFormat.format("validate: context={0},component={1},value={2} - CALLED!", context, component, value)); //NOI18N + + // All accepted, required fields + String[] requiredFields = {"birthday", "contactBirthday"}; //NOI18N + + // Pre-validation (example: not null, not a string, empty string ...) + super.preValidate(context, component, value, requiredFields, false); + + // Cast value + Date birthday = (Date) value; + + // @TODO Finish this, e.g. load maximum,minimum birthday from properties file + + // Trace message + this.loggerBeanLocal.logTrace("validate: EXIT!"); //NOI18N + } + +} diff --git a/src/java/org/mxchange/addressbook/validator/names/AddressbookNameValidator.java b/src/java/org/mxchange/addressbook/validator/names/AddressbookNameValidator.java new file mode 100644 index 00000000..ea6b426f --- /dev/null +++ b/src/java/org/mxchange/addressbook/validator/names/AddressbookNameValidator.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.addressbook.validator.names; + +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.validator.FacesValidator; +import javax.faces.validator.Validator; +import javax.faces.validator.ValidatorException; +import org.mxchange.jcoreee.validator.string.BaseStringValidator; + +/** + * A validation class for addressbook names, such as first name or family name. + *

+ * @author Roland Haeder + */ +@FacesValidator (value = "AddressbookNameValidator") +public class AddressbookNameValidator extends BaseStringValidator implements Validator { + + /** + * Serial number + */ + private static final long serialVersionUID = 27_587_896_710_689_451L; + + @Override + public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException { + // Trace message + //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("validate: context={0},component={1},value={2} - CALLED!", context, component, value)); //NOI18N + + // All accepted, required fields + String[] requiredFields = {"addressbookName"}; //NOI18N + + // Pre-validation (example: not null, not a string, empty string ...) + super.preValidate(context, component, value, requiredFields, false); + + // Trace message + //* NOISY-DEBUG: */ System.out.println("validate: EXIT!"); //NOI18N + } +} diff --git a/src/java/org/mxchange/addressbook/validator/user/AddressbookUserIdValidator.java b/src/java/org/mxchange/addressbook/validator/user/AddressbookUserIdValidator.java new file mode 100644 index 00000000..3402a56e --- /dev/null +++ b/src/java/org/mxchange/addressbook/validator/user/AddressbookUserIdValidator.java @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.addressbook.validator.user; + +import java.text.MessageFormat; +import java.util.Set; +import java.util.TreeSet; +import javax.enterprise.event.Observes; +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.validator.FacesValidator; +import javax.faces.validator.Validator; +import javax.faces.validator.ValidatorException; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import org.mxchange.jcoreee.validator.number.BaseLongValidator; +import org.mxchange.jcoreeelogger.beans.local.logger.Log; +import org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal; +import org.mxchange.jusercore.events.registration.UserRegisteredEvent; +import org.mxchange.jusercore.model.user.User; +import org.mxchange.jusercore.model.user.UserSessionBeanRemote; + +/** + * A validator for user ids + *

+ * @author Roland Haeder + */ +@FacesValidator (value = "UserIdValidator") +public class AddressbookUserIdValidator extends BaseLongValidator implements Validator { + + /** + * Cached user status + */ + private static final Set cachedStatus = new TreeSet<>(); + + /** + * Serial number + */ + private static final long serialVersionUID = 12_869_569_314_764_690L; + + /** + * Logger instance + */ + @Log + private LoggerBeanLocal loggerBeanLocal; + + /** + * Remote bean + */ + private UserSessionBeanRemote userBean; + + /** + * Initialization of this converter + */ + public AddressbookUserIdValidator () { + // Try to get it + try { + // Get initial context + Context context = new InitialContext(); + + // Lookup logger + this.loggerBeanLocal = (LoggerBeanLocal) context.lookup("java:global/jcore-logger-ejb/logger!org.mxchange.jcoreeelogger.beans.local.logger.LoggerBeanLocal"); //NOI18N + + // ... and user controller + this.userBean = (UserSessionBeanRemote) context.lookup("java:global/jlandingpage-ejb/user!org.mxchange.jusercore.model.user.UserSessionBeanRemote"); //NOI18N + } catch (final NamingException ex) { + // Continue to throw it + throw new RuntimeException(MessageFormat.format("context.lookup() failed: {0}", ex.getMessage()), ex); //NOI18N + } + } + + /** + * Event fired when the user registration is complete + *

+ * @param event User registration event + */ + public void afterRegistrationEvent (@Observes final UserRegisteredEvent event) { + // Trace message + this.loggerBeanLocal.logTrace(MessageFormat.format("UserIdValidator:afterRegistrationEvent: event={0} - CALLED!", event)); //NOI18N + + // event should not be null + if (null == event) { + // Throw NPE + throw new NullPointerException("event is null"); //NOI18N + } else if (event.getRegisteredUser() == null) { + // Throw NPE again + throw new NullPointerException("event.user is null"); //NOI18N + } else if (event.getRegisteredUser().getUserId() == null) { + // userId is null + throw new NullPointerException("event.user.userId is null"); //NOI18N + } else if (event.getRegisteredUser().getUserId() < 1) { + // Not avalid id + throw new IllegalArgumentException(MessageFormat.format("userId of user={0} is not valid: {1}", event.getRegisteredUser(), event.getRegisteredUser().getUserId())); //NOI18N + } + + // Get user instance + User registeredUser = event.getRegisteredUser(); + + // Debug message + this.loggerBeanLocal.logDebug(MessageFormat.format("UserIdValidator:afterRegistrationEvent: registeredUser={0}", registeredUser)); //NOI18N + + // Update cache + AddressbookUserIdValidator.cachedStatus.add(registeredUser.getUserId()); + + // Trace message + this.loggerBeanLocal.logTrace("UserIdValidator:afterRegistrationEvent: EXIT!"); //NOI18N + } + + @Override + public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException { + // Trace message + this.loggerBeanLocal.logTrace(MessageFormat.format("validate: context={0},component={1},value={2} - CALLED!", context, component, value)); //NOI18N + + // All accepted, required fields + String[] requiredFields = {"userId"}; //NOI18N + + // Pre-validation (example: not null, not a string, empty string ...) + super.preValidate(context, component, value, requiredFields, false); + + // Cast value + Long userId = (Long) value; + + // Define variable + Boolean ifUserExists; + + // Is a map entry there? + if (AddressbookUserIdValidator.cachedStatus.contains(userId)) { + // Get from cache + ifUserExists = Boolean.TRUE; + } else { + // Get status + ifUserExists = this.userBean.ifUserIdExists(userId); + } + + // Is the user id valid? + if (!ifUserExists) { + // Is not valid + throw new ValidatorException(new FacesMessage(MessageFormat.format("No user found with id {0}. Please check your link.", userId))); //NOI18N + } + + // Add to cache if valid + AddressbookUserIdValidator.cachedStatus.add(userId); + + // Trace message + this.loggerBeanLocal.logTrace("validate: EXIT!"); //NOI18N + } + +}