package fi.otavanopisto.muikku.plugins.forum.wall;
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.otavanopisto.muikku.plugins.forum.wall.ForumThreadSubscription_;
import fi.otavanopisto.muikku.model.users.UserEntity;
import fi.otavanopisto.muikku.plugins.CorePluginsDAO;
import fi.otavanopisto.muikku.plugins.forum.model.ForumThread;
import fi.otavanopisto.muikku.plugins.forum.wall.ForumThreadSubscription;
public class ForumThreadSubscriptionDAO extends CorePluginsDAO<ForumThreadSubscription> {
private static final long serialVersionUID = 2496199219925814980L;
public ForumThreadSubscription create(UserEntity user, ForumThread forumThread) {
ForumThreadSubscription forumSubscription = new ForumThreadSubscription();
forumSubscription.setUser(user.getId());
forumSubscription.setForumThread(forumThread);
getEntityManager().persist(forumSubscription);
return forumSubscription;
}
public List<ForumThreadSubscription> listByUser(UserEntity user) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<ForumThreadSubscription> criteria = criteriaBuilder.createQuery(ForumThreadSubscription.class);
Root<ForumThreadSubscription> root = criteria.from(ForumThreadSubscription.class);
criteria.select(root);
criteria.where(criteriaBuilder.equal(root.get(ForumThreadSubscription_.user), user.getId()));
return entityManager.createQuery(criteria).getResultList();
}
// public ForumThreadSubscription findByUserAndForumArea(UserEntity user, ForumArea forumArea) {
// EntityManager entityManager = getEntityManager();
//
// CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
// CriteriaQuery<ForumAreaSubscription> criteria = criteriaBuilder.createQuery(ForumAreaSubscription.class);
// Root<ForumAreaSubscription> root = criteria.from(ForumAreaSubscription.class);
// criteria.select(root);
// criteria.where(
// criteriaBuilder.and(
// criteriaBuilder.equal(root.get(ForumAreaSubscription_.user), user.getId()),
// criteriaBuilder.equal(root.get(ForumAreaSubscription_.forumArea), forumArea)
// )
// );
//
// return getSingleResult(entityManager.createQuery(criteria));
// }
}