package persistency.exposed;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import persistency.entities.LoggedUser;
import persistency.entities.gamification.PointsInstance;
import utils.DBUtils;
@SuppressWarnings("unchecked")
public class PointsExposed {
public EntityManager entityManager = null;
public static final String JTA_PU_NAME = "statCreateTablesJTA";
public PointsExposed() {
entityManager = DBUtils.getEMF().createEntityManager();
}
public void createEntity(PointsInstance e) {
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager.persist(e);
transaction.commit();
}
public void updateEntity(PointsInstance e) {
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager.merge(e);
transaction.commit();
}
public List<PointsInstance> allCodes() {
Query namedQuery = entityManager.createNamedQuery("allCodes");
List<PointsInstance> codeList = namedQuery.getResultList();
return codeList;
}
public List<PointsInstance> freeCodes(int type) {
Query namedQuery = entityManager.createNamedQuery("freeCodes");
namedQuery.setParameter("type", type);
namedQuery.setMaxResults(10);
List<PointsInstance> codeList = namedQuery.getResultList();
return codeList;
}
public PointsInstance getCode(String code) {
Query namedQuery = entityManager.createNamedQuery("getCode");
namedQuery.setParameter("code", code);
try {
return (PointsInstance) namedQuery.getSingleResult();
} catch (NoResultException e){
return null;
}
}
public List<PointsInstance> getCodesByType(String type, LoggedUser p) {
Query namedQuery = entityManager.createNamedQuery("codesByType");
namedQuery.setParameter("type", Integer.parseInt(type));
namedQuery.setParameter("person", p);
List<PointsInstance> codeList = namedQuery.getResultList();
return codeList;
}
public void deleteEntity(PointsInstance e) {
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager.remove(e);
transaction.commit();
}
public void persistEntities(List<PointsInstance> pi) {
for (PointsInstance pointsInstance : pi) {
createEntity(pointsInstance);
}
}
public PointsInstance fingById(int id) {
Query namedQuery = entityManager.createNamedQuery("getCodeById");
namedQuery.setParameter("id", id);
PointsInstance result = null;
try {
result = (PointsInstance) namedQuery.getSingleResult();
} catch (NoResultException e) {
result = null;
}
return result;
}
}