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

fi.foyt.fni.persistence.dao.users.UserEmailDAO Maven / Gradle / Ivy

There is a newer version: 3.3.13
Show newest version
package fi.foyt.fni.persistence.dao.users;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import fi.foyt.fni.persistence.model.users.UserEmail_;
import fi.foyt.fni.persistence.dao.GenericDAO;
import fi.foyt.fni.persistence.model.users.User;
import fi.foyt.fni.persistence.model.users.UserEmail;

public class UserEmailDAO extends GenericDAO {

	private static final long serialVersionUID = 1L;

	public UserEmail create(User user, String email, Boolean primary) {
    EntityManager entityManager = getEntityManager();

    UserEmail userEmail = new UserEmail();
    userEmail.setEmail(email);
    userEmail.setUser(user);
    userEmail.setPrimary(primary);
    
    entityManager.persist(userEmail);
    return userEmail;
  }

  public UserEmail findByEmail(String email) {
    EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(UserEmail.class);
    Root root = criteria.from(UserEmail.class);
    criteria.select(root);
    criteria.where(criteriaBuilder.equal(root.get(UserEmail_.email), email));

    return getSingleResult(entityManager.createQuery(criteria));
  }

  public UserEmail findByUserAndPrimary(User user, Boolean primary) {
    EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(UserEmail.class);
    Root root = criteria.from(UserEmail.class);
    criteria.select(root);
    criteria.where(
      criteriaBuilder.and(
      		criteriaBuilder.equal(root.get(UserEmail_.user), user),
      		criteriaBuilder.equal(root.get(UserEmail_.primary), primary)
      )
    );

    return getSingleResult(entityManager.createQuery(criteria));
  }


  public List listByUser(User user) {
    EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(UserEmail.class);
    Root root = criteria.from(UserEmail.class);
    criteria.select(root);
    criteria.where(criteriaBuilder.equal(root.get(UserEmail_.user), user));

    return entityManager.createQuery(criteria).getResultList();
  }

	public List listUsersByEmails(List emails) {
		EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(User.class);
    Root root = criteria.from(UserEmail.class);
    
    criteria.select(root.get(UserEmail_.user));
    criteria.where(root.get(UserEmail_.email).in(emails));
    criteria.groupBy(root.get(UserEmail_.user));

    return entityManager.createQuery(criteria).getResultList();
  }

	public Long countByUser(User user) {
		EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(Long.class);
    Root root = criteria.from(UserEmail.class);
    criteria.select(criteriaBuilder.count(root));
    criteria.where(criteriaBuilder.equal(root.get(UserEmail_.user), user));

    return entityManager.createQuery(criteria).getSingleResult();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy