package com.sap.pto.dao;
import java.util.List;
import java.util.Locale;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.TypedQuery;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sap.pto.adapters.PersistenceAdapter;
import com.sap.pto.dao.entities.League;
import com.sap.pto.dao.entities.User;
public class LeagueDAO extends BasicDAO<League> {
private static final Logger logger = LoggerFactory.getLogger(LeagueDAO.class);
public static League getLeagueByKey(String key) {
EntityManager em = PersistenceAdapter.getEntityManager();
League result = getLeagueByKey(key, em);
return result;
}
public static League getLeagueByKey(String key, EntityManager em) {
try {
return (League) em.createNamedQuery(League.QUERY_BYKEY).setParameter("key", StringUtils.lowerCase(key, Locale.ENGLISH))
.getSingleResult();
} catch (NoResultException e) {
return null;
} catch (NonUniqueResultException e) {
logger.error("League appears multiple times. This could mean severe database corruption. Fix immediately.", e);
throw e;
}
}
public static List<League> getForOwner(User owner) {
EntityManager em = PersistenceAdapter.getEntityManager();
TypedQuery<League> query = em.createNamedQuery(League.QUERY_BYOWNER, League.class);
query.setParameter("owner", owner);
List<League> leagues = query.getResultList();
return leagues;
}
public static List<League> getForUser(User user) {
EntityManager em = PersistenceAdapter.getEntityManager();
TypedQuery<League> query = em.createNamedQuery(League.QUERY_BYUSER, League.class);
query.setParameter("user", user);
List<League> leagues = query.getResultList();
return leagues;
}
}