package fi.otavanopisto.muikku.plugins.forum.dao; 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.model.WorkspaceForumArea_; import fi.otavanopisto.muikku.model.security.ResourceRights; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.plugins.CorePluginsDAO; import fi.otavanopisto.muikku.plugins.forum.model.ForumAreaGroup; import fi.otavanopisto.muikku.plugins.forum.model.WorkspaceForumArea; public class WorkspaceForumAreaDAO extends CorePluginsDAO<WorkspaceForumArea> { private static final long serialVersionUID = 8627800028194294719L; public WorkspaceForumArea create(WorkspaceEntity workspace, String name, String description, ForumAreaGroup group, Boolean archived, UserEntity owner, ResourceRights rights) { WorkspaceForumArea forumArea = new WorkspaceForumArea(); forumArea.setWorkspace(workspace.getId()); forumArea.setName(name); forumArea.setDescription(description); forumArea.setArchived(archived); forumArea.setGroup(group); forumArea.setOwner(owner.getId()); forumArea.setRights(rights.getId()); getEntityManager().persist(forumArea); return forumArea; } public List<WorkspaceForumArea> listAllNonArchived() { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<WorkspaceForumArea> criteria = criteriaBuilder.createQuery(WorkspaceForumArea.class); Root<WorkspaceForumArea> root = criteria.from(WorkspaceForumArea.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(WorkspaceForumArea_.archived), Boolean.FALSE) ); return entityManager.createQuery(criteria).getResultList(); } public List<WorkspaceForumArea> listByWorkspaceEntity(WorkspaceEntity workspaceEntity) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<WorkspaceForumArea> criteria = criteriaBuilder.createQuery(WorkspaceForumArea.class); Root<WorkspaceForumArea> root = criteria.from(WorkspaceForumArea.class); criteria.select(root); criteria.where( criteriaBuilder.and( criteriaBuilder.equal(root.get(WorkspaceForumArea_.workspace), workspaceEntity.getId()), criteriaBuilder.equal(root.get(WorkspaceForumArea_.archived), Boolean.FALSE) ) ); return entityManager.createQuery(criteria).getResultList(); } }