Skip to content

Commit

Permalink
fix #48
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurgregorio committed Dec 27, 2018
1 parent d69e55b commit f738da9
Show file tree
Hide file tree
Showing 18 changed files with 90 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
import br.eti.arthurgregorio.library.application.controllers.ViewState;
import br.eti.arthurgregorio.library.domain.model.entities.registration.Author;
import br.eti.arthurgregorio.library.domain.repositories.registration.AuthorRepository;
import br.eti.arthurgregorio.library.domain.validators.registration.author.AuthorSavingLogic;
import br.eti.arthurgregorio.library.domain.validators.registration.author.AuthorUpdatingLogic;
import org.primefaces.model.SortOrder;

import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
Expand All @@ -29,6 +33,13 @@ public class AuthorBean extends LazyFormBean<Author> {
@Inject
private AuthorRepository authorRepository;

@Any
@Inject
private Instance<AuthorSavingLogic> authorSavingLogic;
@Any
@Inject
private Instance<AuthorUpdatingLogic> authorUpdatingLogic;

/**
* {@inheritDoc}
*/
Expand Down Expand Up @@ -82,6 +93,7 @@ public Page<Author> load(int first, int pageSize, String sortField, SortOrder so
@Override
@Transactional
public void doSave() {
this.authorSavingLogic.forEach(logic -> logic.run(this.value));
this.authorRepository.save(this.value);
this.value = new Author();
this.addInfo(true, "saved");
Expand All @@ -93,6 +105,7 @@ public void doSave() {
@Override
@Transactional
public void doUpdate() {
this.authorUpdatingLogic.forEach(logic -> logic.run(this.value));
this.authorRepository.save(this.value);
this.addInfo(true, "updated");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@
import br.eti.arthurgregorio.library.domain.model.entities.registration.Book;
import br.eti.arthurgregorio.library.domain.repositories.registration.AuthorRepository;
import br.eti.arthurgregorio.library.domain.repositories.registration.BookRepository;
import br.eti.arthurgregorio.library.domain.validators.registration.book.BookSavingLogic;
import lombok.Getter;
import org.primefaces.model.SortOrder;

import javax.enterprise.inject.Any;
import javax.enterprise.inject.Instance;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
Expand Down Expand Up @@ -38,6 +41,10 @@ public class BookBean extends LazyFormBean<Book> {
@Inject
private AuthorRepository authorRepository;

@Any
@Inject
private Instance<BookSavingLogic> bookSavingLogic;

/**
* {@inheritDoc}
*/
Expand Down Expand Up @@ -96,6 +103,7 @@ public Page<Book> load(int first, int pageSize, String sortField, SortOrder sort
@Override
@Transactional
public void doSave() {
this.bookSavingLogic.forEach(logic -> logic.run(this.value));
this.bookRepository.save(this.value);
this.value = new Book();
this.addInfo(true, "saved");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import br.eti.arthurgregorio.library.domain.model.entities.configuration.*;
import br.eti.arthurgregorio.library.domain.model.exception.BusinessLogicException;
import br.eti.arthurgregorio.library.domain.repositories.configuration.*;
import br.eti.arthurgregorio.library.domain.validators.configuration.group.GroupDeletingValidator;
import br.eti.arthurgregorio.library.domain.validators.configuration.user.UserDeletingValidator;
import br.eti.arthurgregorio.library.domain.validators.configuration.user.UserSavingValidator;
import br.eti.arthurgregorio.library.domain.validators.configuration.user.UserUpdatingValidator;
import br.eti.arthurgregorio.library.domain.validators.configuration.group.GroupDeletingLogic;
import br.eti.arthurgregorio.library.domain.validators.configuration.user.UserDeletingLogic;
import br.eti.arthurgregorio.library.domain.validators.configuration.user.UserSavingLogic;
import br.eti.arthurgregorio.library.domain.validators.configuration.user.UserUpdatingLogic;
import br.eti.arthurgregorio.shiroee.auth.PasswordEncoder;
import br.eti.arthurgregorio.shiroee.config.jdbc.UserDetails;
import br.eti.arthurgregorio.shiroee.config.jdbc.UserDetailsProvider;
Expand Down Expand Up @@ -47,17 +47,17 @@ public class UserAccountService implements UserDetailsProvider {

@Any
@Inject
private Instance<UserSavingValidator> userSavingValidators;
private Instance<UserSavingLogic> userSavingValidators;
@Any
@Inject
private Instance<UserUpdatingValidator> userUpdatingValidators;
private Instance<UserUpdatingLogic> userUpdatingValidators;
@Any
@Inject
private Instance<UserDeletingValidator> userDeletingValidators;
private Instance<UserDeletingLogic> userDeletingValidators;

@Any
@Inject
private Instance<GroupDeletingValidator> groupDeletingValidators;
private Instance<GroupDeletingLogic> groupDeletingValidators;

/**
* Persist a new {@link User}
Expand All @@ -67,7 +67,7 @@ public class UserAccountService implements UserDetailsProvider {
*/
@Transactional
public User save(User user) {
this.userSavingValidators.forEach(validator -> validator.validate(user));
this.userSavingValidators.forEach(validator -> validator.run(user));
return this.userRepository.save(user);
}

Expand All @@ -78,7 +78,7 @@ public User save(User user) {
*/
@Transactional
public void update(User user) {
this.userUpdatingValidators.forEach(validator -> validator.validate(user));
this.userUpdatingValidators.forEach(validator -> validator.run(user));
this.userRepository.saveAndFlushAndRefresh(user);
}

Expand All @@ -90,7 +90,7 @@ public void update(User user) {
@Transactional
public void delete(User user) {
this.userDeletingValidators.forEach(validator -> {
validator.validate(user);
validator.run(user);
});
this.userRepository.attachAndRemove(user);
}
Expand Down Expand Up @@ -187,7 +187,7 @@ public void update(Group group, List<Authorization> authorizations) {
*/
@Transactional
public void delete(Group group) {
this.groupDeletingValidators.forEach(validator -> validator.validate(group));
this.groupDeletingValidators.forEach(validator -> validator.run(group));
this.groupRepository.attachAndRemove(group);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,24 @@
import br.eti.arthurgregorio.library.domain.model.exception.BusinessLogicException;

/**
* The abstraction of a validator
* The abstraction of a business logic
*
* @param <T> the generic type for this validator. Should extends {@link PersistentEntity}
* @param <T> the generic type for this logic. Should extends {@link PersistentEntity}
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
public interface BusinessValidator<T extends PersistentEntity> {
public interface BusinessLogic<T extends PersistentEntity> {

/**
* Call this to run the validation logic
* Call this to run the logic
*
* This method should throw a {@link BusinessLogicException} in his body for validation error cases
* This method should throw a {@link BusinessLogicException} in his body for validation error cases or any other
* problem to prevent the subsequent execution
*
* @param value the value to be validated
* @param value the value to be used in the logic
*/
void validate(T value);
void run(T value);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,28 @@

import br.eti.arthurgregorio.library.domain.model.entities.configuration.Group;
import br.eti.arthurgregorio.library.domain.model.exception.BusinessLogicException;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;

import javax.enterprise.context.Dependent;

/**
* {@link BusinessValidator} to validate if you are deleting the admin group
* {@link BusinessLogic} to run if you are deleting the admin group
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
@Dependent
public class DeleteAdminGroupValidator implements GroupDeletingValidator {
public class DeleteAdminGroupValidator implements GroupDeletingLogic {

/**
* {@inheritDoc }
*
* @param value
*/
@Override
public void validate(Group value) {
public void run(Group value) {
if (value.isAdministrator()) {
throw new BusinessLogicException("error.group.delete-administrator");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package br.eti.arthurgregorio.library.domain.validators.configuration.group;

import br.eti.arthurgregorio.library.domain.model.entities.configuration.Group;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;

/**
* {@link Group} validator facade for delete actions
* {@link Group} business logic facade for delete actions
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
public interface GroupDeletingValidator extends BusinessValidator<Group> { }
public interface GroupDeletingLogic extends BusinessLogic<Group> { }
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@

import br.eti.arthurgregorio.library.domain.model.entities.configuration.User;
import br.eti.arthurgregorio.library.domain.model.exception.BusinessLogicException;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;
import br.eti.arthurgregorio.library.infrastructure.cdi.qualifier.AuthenticatedUser;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;

/**
* {@link BusinessValidator} to validate if you are deleting the admin
* {@link BusinessLogic} to run if you are deleting the admin
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
@Dependent
public class DeleteAdminUserValidator implements UserDeletingValidator {
public class DeleteAdminUserValidator implements UserDeletingLogic {

@Inject
@AuthenticatedUser
Expand All @@ -29,7 +29,7 @@ public class DeleteAdminUserValidator implements UserDeletingValidator {
* @param value
*/
@Override
public void validate(User value) {
public void run(User value) {

final String principalUsername = this.principal.getUsername();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@
import br.eti.arthurgregorio.library.domain.model.entities.configuration.User;
import br.eti.arthurgregorio.library.domain.model.exception.BusinessLogicException;
import br.eti.arthurgregorio.library.domain.repositories.configuration.UserRepository;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;
import br.eti.arthurgregorio.shiroee.auth.PasswordEncoder;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import java.util.Optional;

/**
* {@link BusinessValidator} for the user password validation logic
* {@link BusinessLogic} for the user password validation logic
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
@Dependent
public class PasswordValidator implements UserSavingValidator, UserUpdatingValidator {
public class PasswordValidator implements UserSavingLogic, UserUpdatingLogic {

@Inject
private UserRepository userRepository;
Expand All @@ -34,7 +34,7 @@ public class PasswordValidator implements UserSavingValidator, UserUpdatingValid
* @param value
*/
@Override
public void validate(User value) {
public void run(User value) {
if (value.getStoreType() == StoreType.LOCAL) {
if (value.isSaved()) {
this.validateSavedUserPassword(value);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package br.eti.arthurgregorio.library.domain.validators.configuration.user;

import br.eti.arthurgregorio.library.domain.model.entities.configuration.User;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;

/**
* {@link User} validator facade for save actions
* {@link User} business logic facade for delete actions
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
public interface UserSavingValidator extends BusinessValidator<User> { }
public interface UserDeletingLogic extends BusinessLogic<User> { }
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@
import br.eti.arthurgregorio.library.domain.model.entities.configuration.User;
import br.eti.arthurgregorio.library.domain.model.exception.BusinessLogicException;
import br.eti.arthurgregorio.library.domain.repositories.configuration.UserRepository;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;
import java.util.Optional;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;

/**
* {@link BusinessValidator} for the user e-mail validation logic
* {@link BusinessLogic} for the user e-mail validation logic
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
@Dependent
public class UserMailValidator implements UserSavingValidator, UserUpdatingValidator {
public class UserMailValidator implements UserSavingLogic, UserUpdatingLogic {

@Inject
private UserRepository userRepository;
Expand All @@ -28,7 +28,7 @@ public class UserMailValidator implements UserSavingValidator, UserUpdatingValid
* @param value
*/
@Override
public void validate(User value) {
public void run(User value) {

final Optional<User> userOptional = this.userRepository.findByEmail(value.getEmail());

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package br.eti.arthurgregorio.library.domain.validators.configuration.user;

import br.eti.arthurgregorio.library.domain.model.entities.configuration.User;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;

/**
* {@link User} validator facade for update actions
* {@link User} business logic facade for save actions
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
public interface UserUpdatingValidator extends BusinessValidator<User> { }
public interface UserSavingLogic extends BusinessLogic<User> { }
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package br.eti.arthurgregorio.library.domain.validators.configuration.user;

import br.eti.arthurgregorio.library.domain.model.entities.configuration.User;
import br.eti.arthurgregorio.library.domain.validators.BusinessValidator;
import br.eti.arthurgregorio.library.domain.validators.BusinessLogic;

/**
* {@link User} validator facade for delete actions
* {@link User} business logic facade for update actions
*
* @author Arthur Gregorio
*
* @version 1.0.0
* @since 1.3.1, 09/08/2018
*/
public interface UserDeletingValidator extends BusinessValidator<User> { }
public interface UserUpdatingLogic extends BusinessLogic<User> { }
Loading

0 comments on commit f738da9

Please sign in to comment.