All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.foyt.fni.persistence.dao.materials.IllusionEventDocumentDAO Maven / Gradle / Ivy

There is a newer version: 3.3.8
Show newest version
package fi.foyt.fni.persistence.dao.materials;

import java.util.Date;
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.foyt.fni.persistence.dao.GenericDAO;
import fi.foyt.fni.persistence.model.common.Language;
import fi.foyt.fni.persistence.model.materials.Folder;
import fi.foyt.fni.persistence.model.materials.IllusionEventDocument;
import fi.foyt.fni.persistence.model.materials.IllusionEventDocumentType;
import fi.foyt.fni.persistence.model.materials.IllusionEventDocument_;
import fi.foyt.fni.persistence.model.materials.MaterialPublicity;
import fi.foyt.fni.persistence.model.users.User;

public class IllusionEventDocumentDAO extends GenericDAO {

  private static final long serialVersionUID = -4644199519384824575L;

  public IllusionEventDocument create(User creator, IllusionEventDocumentType documentType, Language language, Folder parentFolder, String urlName, String title, String data, MaterialPublicity publicity, Integer indexNumber) {
    Date now = new Date();

    IllusionEventDocument illusionEventDocument = new IllusionEventDocument();
    illusionEventDocument.setData(data);
    illusionEventDocument.setCreated(now);
    illusionEventDocument.setCreator(creator);
    illusionEventDocument.setModified(now);
    illusionEventDocument.setModifier(creator);
    illusionEventDocument.setTitle(title);
    illusionEventDocument.setUrlName(urlName);
    illusionEventDocument.setPublicity(publicity);
    illusionEventDocument.setDocumentType(documentType);
    illusionEventDocument.setLanguage(language);
    illusionEventDocument.setParentFolder(parentFolder);
    illusionEventDocument.setIndexNumber(indexNumber);
    
    return persist(illusionEventDocument);
  }

  public IllusionEventDocument findByParentFolderAndDocumentType(Folder parentFolder, IllusionEventDocumentType documentType) {
    EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(IllusionEventDocument.class);
    Root root = criteria.from(IllusionEventDocument.class);
    criteria.select(root);
    criteria.where(
      criteriaBuilder.and(
        criteriaBuilder.equal(root.get(IllusionEventDocument_.parentFolder), parentFolder),
        criteriaBuilder.equal(root.get(IllusionEventDocument_.documentType), documentType)
      )
    );
    
    return getSingleResult(entityManager.createQuery(criteria));
  }

  public List listByParentFolderAndDocumentType(Folder parentFolder, IllusionEventDocumentType documentType) {
    EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(IllusionEventDocument.class);
    Root root = criteria.from(IllusionEventDocument.class);
    criteria.select(root);
    criteria.where(
      criteriaBuilder.and(
        criteriaBuilder.equal(root.get(IllusionEventDocument_.parentFolder), parentFolder),
        criteriaBuilder.equal(root.get(IllusionEventDocument_.documentType), documentType)
      )
    );
    
    return entityManager.createQuery(criteria).getResultList();
  }

  public Integer maxIndexNumberByParentFolder(Folder parentFolder) {
    EntityManager entityManager = getEntityManager();

    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    CriteriaQuery criteria = criteriaBuilder.createQuery(Integer.class);
    Root root = criteria.from(IllusionEventDocument.class);
    criteria.select(criteriaBuilder.max(root.get(IllusionEventDocument_.indexNumber)));
    criteria.where(
      criteriaBuilder.equal(root.get(IllusionEventDocument_.parentFolder), parentFolder)
    );
    
    return entityManager.createQuery(criteria).getSingleResult();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy