package com.sap.hana.cloud.samples.benefits.persistence;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.TypedQuery;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sap.hana.cloud.samples.benefits.persistence.manager.EntityManagerProvider;
import com.sap.hana.cloud.samples.benefits.persistence.model.DBQueries;
import com.sap.hana.cloud.samples.benefits.persistence.model.User;
public class UserDAO extends BasicDAO<User> {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public UserDAO() {
super(EntityManagerProvider.getInstance());
}
public User getByUserId(String userId) {
final EntityManager em = emProvider.get();
try {
final TypedQuery<User> query = em.createNamedQuery(DBQueries.GET_USER_BY_USER_ID, User.class);
query.setParameter("userId", userId); //$NON-NLS-1$
User user = query.getSingleResult();
return user;
} catch (NoResultException x) {
logger.warn("Could not retrieve entity for userId {} from table {}. Maybe the user doesn't exist yet.", userId, "User"); //$NON-NLS-1$ //$NON-NLS-2$
} catch (NonUniqueResultException ex) {
throw new IllegalStateException(String.format("More than one entity for userId %s from table User.", userId), ex); //$NON-NLS-1$
}
return null;
}
public User findByEmail(String email) {
final EntityManager em = emProvider.get();
try {
final TypedQuery<User> query = em.createNamedQuery(DBQueries.GET_USER_BY_EMAIL, User.class);
query.setParameter("email", email); //$NON-NLS-1$
User user = query.getSingleResult();
return user;
} catch (NoResultException x) {
logger.warn("Could not retrieve user with emial {} from table {}. Maybe the user doesn't exist yet.", email, "User"); //$NON-NLS-1$ //$NON-NLS-2$
} catch (NonUniqueResultException ex) {
throw new IllegalStateException(String.format("More than one users with email %s from table User.", email), ex); //$NON-NLS-1$
}
return null;
}
}