![JAR search and dependency download from the Maven repository](/logo.png)
fi.foyt.fni.persistence.dao.forum.ForumPostDAO Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of persistence Show documentation
Show all versions of persistence Show documentation
Forge & Illusion - Persistence
package fi.foyt.fni.persistence.dao.forum;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.Root;
import fi.foyt.fni.persistence.model.forum.ForumPost_;
import fi.foyt.fni.persistence.dao.GenericDAO;
import fi.foyt.fni.persistence.model.forum.Forum;
import fi.foyt.fni.persistence.model.forum.ForumPost;
import fi.foyt.fni.persistence.model.forum.ForumTopic;
import fi.foyt.fni.persistence.model.forum.ForumTopic_;
import fi.foyt.fni.persistence.model.users.User;
public class ForumPostDAO extends GenericDAO {
private static final long serialVersionUID = 1L;
public ForumPost create(ForumTopic topic, User author, Date created, Date modified, String content, Long views) {
EntityManager entityManager = getEntityManager();
ForumPost forumPost = new ForumPost();
forumPost.setAuthor(author);
forumPost.setCreated(created);
forumPost.setTopic(topic);
forumPost.setModified(modified);
forumPost.setContent(content);
forumPost.setViews(views);
entityManager.persist(forumPost);
return forumPost;
}
public List listByTopic(ForumTopic topic) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumPost.class);
Root root = criteria.from(ForumPost.class);
criteria.select(root);
criteria.where(criteriaBuilder.equal(root.get(ForumPost_.topic), topic));
return entityManager.createQuery(criteria).getResultList();
}
public List listByTopic(ForumTopic topic, Integer firstResult, Integer maxResults) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumPost.class);
Root root = criteria.from(ForumPost.class);
criteria.select(root);
criteria.where(criteriaBuilder.equal(root.get(ForumPost_.topic), topic));
TypedQuery query = entityManager.createQuery(criteria);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.getResultList();
}
public List listByTopicSortByCreated(ForumTopic topic, Integer firstResult, Integer maxResults) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumPost.class);
Root root = criteria.from(ForumPost.class);
criteria.select(root);
criteria.where(criteriaBuilder.equal(root.get(ForumPost_.topic), topic));
criteria.orderBy(criteriaBuilder.desc(root.get(ForumPost_.created)));
TypedQuery query = entityManager.createQuery(criteria);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.getResultList();
}
public List listByForumSortByCreated(Forum forum, Integer firstResult, Integer maxResults) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumPost.class);
Root root = criteria.from(ForumPost.class);
Join topicJoin = root.join(ForumPost_.topic);
criteria.select(root);
criteria.orderBy(criteriaBuilder.desc(root.get(ForumPost_.created)));
criteria.where(
criteriaBuilder.equal(topicJoin.join(ForumTopic_.forum), forum)
);
TypedQuery query = entityManager.createQuery(criteria);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.getResultList();
}
public List listByAuthorSortByCreated(User author, int firstResult, int maxResults) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumPost.class);
Root root = criteria.from(ForumPost.class);
criteria.select(root);
criteria.orderBy(criteriaBuilder.desc(root.get(ForumPost_.created)));
criteria.where(
criteriaBuilder.equal(root.get(ForumPost_.author), author)
);
TypedQuery query = entityManager.createQuery(criteria);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.getResultList();
}
public List listTopicsSortByCreated(int firstResult, int maxResults) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumTopic.class);
Root root = criteria.from(ForumPost.class);
criteria.select(root.get(ForumPost_.topic));
criteria.orderBy(criteriaBuilder.desc(criteriaBuilder.greatest(root.get(ForumPost_.created))));
criteria.groupBy(root.get(ForumPost_.topic));
TypedQuery query = entityManager.createQuery(criteria);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.getResultList();
}
public List listTopicsByForumSortByCreated(Forum forum, Integer firstResult, Integer maxResults) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(ForumTopic.class);
Root root = criteria.from(ForumPost.class);
Join topicJoin = root.join(ForumPost_.topic);
criteria.select(root.get(ForumPost_.topic));
criteria.groupBy(root.get(ForumPost_.topic));
criteria.orderBy(criteriaBuilder.desc(criteriaBuilder.greatest(root.get(ForumPost_.created))));
criteria.where(
criteriaBuilder.equal(topicJoin.get(ForumTopic_.forum), forum)
);
TypedQuery query = entityManager.createQuery(criteria);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
return query.getResultList();
}
public Long countByTopic(ForumTopic topic) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(Long.class);
Root root = criteria.from(ForumPost.class);
criteria.select(criteriaBuilder.count(root));
criteria.where(criteriaBuilder.equal(root.get(ForumPost_.topic), topic));
return entityManager.createQuery(criteria).getSingleResult();
}
public Long countByAuthor(User author) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(Long.class);
Root root = criteria.from(ForumPost.class);
criteria.select(criteriaBuilder.count(root));
criteria.where(criteriaBuilder.equal(root.get(ForumPost_.author), author));
return entityManager.createQuery(criteria).getSingleResult();
}
public Long countByTopicAndAuthor(ForumTopic topic, User author) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(Long.class);
Root root = criteria.from(ForumPost.class);
criteria.select(criteriaBuilder.count(root));
criteria.where(
criteriaBuilder.and(
criteriaBuilder.equal(root.get(ForumPost_.author), author),
criteriaBuilder.equal(root.get(ForumPost_.topic), topic)
)
);
return entityManager.createQuery(criteria).getSingleResult();
}
public Long countByForum(Forum forum) {
EntityManager entityManager = getEntityManager();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery criteria = criteriaBuilder.createQuery(Long.class);
Root root = criteria.from(ForumPost.class);
Join topicJoin = root.join(ForumPost_.topic);
criteria.select(criteriaBuilder.count(root));
criteria.where(
criteriaBuilder.equal(topicJoin.join(ForumTopic_.forum), forum)
);
return entityManager.createQuery(criteria).getSingleResult();
}
public ForumPost updateViews(ForumPost forumPost, Long views) {
EntityManager entityManager = getEntityManager();
forumPost.setViews(views);
entityManager.persist(forumPost);
return forumPost;
}
public ForumPost updateContent(ForumPost forumPost, String content) {
forumPost.setContent(content);
return persist(forumPost);
}
public ForumPost updateModified(ForumPost forumPost, Date modified) {
forumPost.setModified(modified);
return persist(forumPost);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy