All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.jhonsapp.finaluser.service.AbstractUserService Maven / Gradle / Ivy

package br.com.jhonsapp.finaluser.service;

import java.util.List;

import br.com.jhonsapp.bootstrap.object.service.generic.AbstractService;
import br.com.jhonsapp.finaluser.domain.User;
import br.com.jhonsapp.finaluser.encryption.Encryption;
import br.com.jhonsapp.finaluser.encryption.EncryptionBCrypt;
import br.com.jhonsapp.finaluser.persistence.UserDAO;

public abstract class AbstractUserService extends AbstractService implements UserService {
	private static final long serialVersionUID = 6327439319517986023L;
		
	private Encryption encryption = EncryptionBCrypt.getInstance();
	
	@Override
	protected abstract UserDAO getDAO();	
	
	@Override
	public boolean isStateInvalid(T user) {
		return !isPasswordValid(user.getPassword());
	}
	
	@Override
	public boolean isUnique(T user) {
		T userSearch = findUser(user.getEmail());
		if (userSearch != null && userSearch.getId() != user.getId()) {
			return false;
		} else {
			return true;
		}
	}
	
	@Override
	protected void preSaveOrUpdate(T user) {
		if (user.getPassword().length() < 50) {
			user.setPassword(encryption.encrypt(user.getPassword()));
		}
	}
	
	@Override
	public boolean hasObject(T user) {
		return findUser(user.getEmail()) != null;
	}
	
	@Override
	public boolean isPasswordValid(String password) {
		return password != null && password.trim().length() >= 8;
	}
	
	@Override
	public String findAndroidToken(String email) {
		return getDAO().findByEmail(email).getAndroidToken();
	}
	
	@Override
	public T findUser(String email) {
		return getDAO().findByEmail(email);
	}
	
	@Override
	public List findAll() {
		return getDAO().findAll();
	}
	
	@Override
	public boolean validateLogin(String email, String password) {
		return getDAO().canLogin(email.trim(), encryption.encrypt(password));
	}
	
	
	@Override
	public boolean canResetUserPassword(String email, String token) {

		T user = findUser(email);
		
		if(user != null && user.getResetPasswordToken().equals(token)){
			return true;
		}else{
			return false;
		}
	}
	
	@Override
	public void resetPassword(T user) {
		
		if(user.isResetPasswordTokenEmpty())
			throw new IllegalStateException("The token can not be empty.");
		
		user.clearResetPasswordToken();
		saveOrUpdate(user);		
	}
	
	@Override
	public List findAllWithPagination(int first, int pageSize){
		return this.getDAO().findAllInARange(first, pageSize);
	}
	
	@Override
	public Long usersSize(){
		return this.getDAO().usersSize();
	}
	
	
	@Override
	public boolean updateAccessToken(T user) {

		if(isStateInvalid(user) || !isUnique(user))
			return false;

		user.newAccessToken();
		return saveOrUpdate(user);
	}
	
	@Override
	public T findUserByAccessToken(String accessToken) {
		return getDAO().findByAccessToken(accessToken);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy