package br.com.triadworks.issuetracker.service.impl; import java.util.List; import javax.inject.Named; import org.conventionsframework.exception.BusinessException; import org.conventionsframework.qualifier.PersistentClass; import org.conventionsframework.service.impl.BaseServiceImpl; import org.hibernate.criterion.MatchMode; import br.com.triadworks.issuetracker.model.Usuario; import br.com.triadworks.issuetracker.service.UsuarioService; @Named("usuarioService") @PersistentClass(Usuario.class) public class UsuarioServiceImpl extends BaseServiceImpl<Usuario> implements UsuarioService { private static final long serialVersionUID = 1L; @Override public List<Usuario> listaTudo() { return crud.listAll(); } @Override public void salva(Usuario usuario) { if(isUsuarioExistente(usuario)){ throw new BusinessException("Usuário com o login:"+usuario.getLogin() + " já cadastrado em nossa base de dados."); } super.store(usuario); } @Override public void atualiza(Usuario usuario) { crud.saveOrUpdate(usuario); } @Override public Usuario carrega(Long id) { return crud.load(id); } @Override public Usuario buscaPor(String login, String senha) { return (Usuario) crud.eq("login", login) .eq("senha", senha).find(); } @Override public boolean isUsuarioExistente(Usuario usuario) { //usando para ignorar id do usuario que estamos editando senão o rowCount retorna o proprio usuario crud.ne("id", usuario.getId()); if(usuario != null && !"".endsWith(usuario.getLogin())){ crud.ilike("login", usuario.getLogin(), MatchMode.EXACT); return (crud.count() > 0); } return false; } }