// Path: treinamento_5/src/main/java/br/com/gamas/treinamento/model/Usuario.java
// @Entity
// @Table(name = "usuario")
// public class Usuario implements UserDetails{
// 
// 	private static final long serialVersionUID = 3317339439073208844L;
// 
// 	@Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id", nullable = false, updatable = false)
//     private Long id;
// 
//     @Column(name = "username", nullable = false, unique = true)
//     private String username;
// 
//     @Column(name = "password", nullable = false)
//     private String password;
//     
//     @Column(name = "role", nullable = false)
//     @Enumerated(EnumType.STRING)
//     private Role role;
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	@Override
// 	public Collection<? extends GrantedAuthority> getAuthorities() {
// 		List<GrantedAuthority> authorities = new ArrayList<>();
// 		
// 		if (role != null) {
// 			GrantedAuthority authority = new SimpleGrantedAuthority(role.name());
// 			authorities.add(authority);
// 		}
// 		
// 		return authorities;
// 	}
// 
// 	@Override
// 	public String getUsername() {
// 		return username;
// 	}
// 	
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 
// 	@Override
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	@Override
// 	public boolean isAccountNonExpired() {
// 		return true;
// 	}
// 
// 	@Override
// 	public boolean isAccountNonLocked() {
// 		return true;
// 	}
// 
// 	@Override
// 	public boolean isCredentialsNonExpired() {
// 		return true;
// 	}
// 
// 	@Override
// 	public boolean isEnabled() {
// 		return true;
// 	}
// 
// 
// }


import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
import br.com.gamas.treinamento.model.Usuario;
package br.com.gamas.treinamento.repository;





@Repository
public class UsuarioRepository {
	
	@PersistenceContext
	private EntityManager em;
	
	public Usuario loadUserByUsername(String username) {
		
		TypedQuery<Usuario> query = em.createQuery("select usuario from Usuario usuario where usuario.username = :username", Usuario.class);
		
		query.setParameter("username", username);
		
// Path: treinamento_5/src/main/java/br/com/gamas/treinamento/model/Usuario.java
// @Entity
// @Table(name = "usuario")
// public class Usuario implements UserDetails{
// 
// 	private static final long serialVersionUID = 3317339439073208844L;
// 
// 	@Id
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id", nullable = false, updatable = false)
//     private Long id;
// 
//     @Column(name = "username", nullable = false, unique = true)
//     private String username;
// 
//     @Column(name = "password", nullable = false)
//     private String password;
//     
//     @Column(name = "role", nullable = false)
//     @Enumerated(EnumType.STRING)
//     private Role role;
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	@Override
// 	public Collection<? extends GrantedAuthority> getAuthorities() {
// 		List<GrantedAuthority> authorities = new ArrayList<>();
// 		
// 		if (role != null) {
// 			GrantedAuthority authority = new SimpleGrantedAuthority(role.name());
// 			authorities.add(authority);
// 		}
// 		
// 		return authorities;
// 	}
// 
// 	@Override
// 	public String getUsername() {
// 		return username;
// 	}
// 	
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 
// 	@Override
// 	public String getPassword() {
// 		return password;
// 	}
// 
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 
// 	@Override
// 	public boolean isAccountNonExpired() {
// 		return true;
// 	}
// 
// 	@Override
// 	public boolean isAccountNonLocked() {
// 		return true;
// 	}
// 
// 	@Override
// 	public boolean isCredentialsNonExpired() {
// 		return true;
// 	}
// 
// 	@Override
// 	public boolean isEnabled() {
// 		return true;
// 	}
// 
// 
// }


// Path: treinamento_5/src/main/java/br/com/gamas/treinamento/repository/UsuarioRepository.java
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
import br.com.gamas.treinamento.model.Usuario;

package br.com.gamas.treinamento.repository;





@Repository
public class UsuarioRepository {
	
	@PersistenceContext
	private EntityManager em;
	
	public Usuario loadUserByUsername(String username) {
		
		TypedQuery<Usuario> query = em.createQuery("select usuario from Usuario usuario where usuario.username = :username", Usuario.class);
		
		query.setParameter("username", username);
		
		List<Usuario> usuarios = query.getResultList();