Example usage for org.hibernate.criterion Restrictions and

List of usage examples for org.hibernate.criterion Restrictions and

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions and.

Prototype

public static Conjunction and(Criterion... predicates) 

Source Link

Document

Return the conjuction of multiple expressions

Usage

From source file:searchServ.java

public static SystemUser gameExists(String gameName) {
    SessionFactory sf = HibernateUtil.getSessionFactory();
    Session session = sf.openSession();//from w  ww  . ja v a  2 s . c  om
    Criteria crit = session.createCriteria(WishListItem.class);
    Criterion cond1 = Restrictions.eq("title", gameName);
    crit.add(Restrictions.and(cond1));
    return (SystemUser) crit.uniqueResult();
}

From source file:benedict.zhang.addon.persistence.PersistenceManager.java

public Sound loadSound(String soundName, String actor) {
    session = sessionFactory.openSession();
    session.beginTransaction();/*from www .j  a v  a  2  s .c  om*/
    Criteria criteria = session.createCriteria(Sound.class);
    criteria.add(Restrictions.eq("soundName", soundName));
    criteria.add(Restrictions.and(Restrictions.eq("actor", actor)));
    Sound sound = (Sound) criteria.uniqueResult();
    session.getTransaction().commit();
    session.close();
    String path = UserPreference.getUserPreference().getSetting(UserPreferenceConstants.SOUND_LIBRARY)
            + sound.getActor() + System.getProperty("file.separator") + sound.getSoundName() + ".mp3";
    sound.setSoundPath(path);
    return sound;
}

From source file:br.com.webbudget.domain.model.repository.financial.MovementRepository.java

License:Open Source License

/**
 *
 * @param filter// www  . j a  v a 2 s.  c om
 * @param pageRequest
 * @return
 */
@Override
public Page<Movement> listByFilter(MovementFilter filter, PageRequest pageRequest) {

    final Criteria criteria = this.createCriteria();

    final List<Criterion> criterions = new ArrayList<>();

    criteria.createAlias("contact", "co", JoinType.LEFT_OUTER_JOIN);
    criteria.createAlias("apportionments", "ap");
    criteria.createAlias("ap.movementClass", "mc");
    criteria.createAlias("ap.costCenter", "cc");
    criteria.createAlias("financialPeriod", "fp");

    // montramos os criterios de filtragem geral
    if (filter.hasCriteria()) {
        criterions.add(Restrictions.eq("code", filter.getCriteria()));
        criterions.add(Restrictions.ilike("description", "%" + filter.getCriteria() + "%"));
        criterions.add(Restrictions.ilike("mc.name", "%" + filter.getCriteria() + "%"));
        criterions.add(Restrictions.ilike("cc.name", "%" + filter.getCriteria() + "%"));
        criterions.add(Restrictions.ilike("co.name", "%" + filter.getCriteria() + "%"));

        // se conseguir castar para bigdecimal trata como um filtro
        try {
            criterions.add(Restrictions.eq("value", filter.criteriaToBigDecimal()));
        } catch (ParseException ex) {
        }
    }

    criteria.add(Restrictions.or(criterions.toArray(new Criterion[] {})));
    criteria.add(Restrictions.and(filter.getCustomFilters()));

    // projetamos para pegar o total de paginas possiveis
    criteria.setProjection(Projections.count("id"));

    final Long totalRows = (Long) criteria.uniqueResult();

    // limpamos a projection para que a criteria seja reusada
    criteria.setProjection(null);
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    // paginamos
    criteria.setFirstResult(pageRequest.getFirstResult());
    criteria.setMaxResults(pageRequest.getPageSize());

    // aplica o multisort dos campos
    if (pageRequest.isMultiSort()) {
        pageRequest.getMultiSortFields().stream().forEach(field -> {
            if (field.getDirection() == SortDirection.ASC) {
                criteria.addOrder(Order.asc(field.getSortField()));
            } else if (field.getDirection() == SortDirection.DESC) {
                criteria.addOrder(Order.desc(field.getSortField()));
            }
        });
    } else if (pageRequest.getSortDirection() == SortDirection.ASC) {
        criteria.addOrder(Order.asc(pageRequest.getSortField()));
    } else if (pageRequest.getSortDirection() == SortDirection.DESC) {
        criteria.addOrder(Order.desc(pageRequest.getSortField()));
    }

    // montamos o resultado paginado
    return new Page<>(criteria.list(), totalRows);
}

From source file:br.ufg.calendario.dao.EventoDao.java

@Transactional(readOnly = true)
public int rowCount(Map<String, Object> filters) {
    Session session = sessionFactory.getCurrentSession();
    Criteria criteria = session.createCriteria(Evento.class);
    for (String key : filters.keySet()) {
        if (key.equals("assunto")) {
            criteria.add(Restrictions.like(key, filters.get(key).toString(), MatchMode.ANYWHERE).ignoreCase());
        }/*from   w ww .ja v  a  2s  .  c o  m*/
        if (key.equals("periodo")) {
            Map periodo = (Map) filters.get(key);
            criteria.add(Restrictions.and(Restrictions.ge("inicio", periodo.get("inicio")))
                    .add(Restrictions.le("termino", periodo.get("termino"))));
        }

        if (key.equals("calendario")) {
            criteria.createAlias("calendario", "c");
            criteria.add(Restrictions.eq("c.ano", ((Calendario) filters.get(key)).getAno()));
        }
        if (key.equals("termo")) {
            criteria.add(Restrictions.or(
                    Restrictions.like("assunto", filters.get(key).toString(), MatchMode.ANYWHERE).ignoreCase(),
                    Restrictions.like("descricao", filters.get(key).toString(), MatchMode.ANYWHERE)
                            .ignoreCase()));
        }
        if (key.equals("interessado")) {
            System.out.println("implementar filtro interessado");
        }
        if (key.equals("regional")) {
            System.out.println("implementar filtro regional");
        }
    }
    return ((Long) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
}

From source file:br.ufg.reqweb.dao.DisciplinaDao.java

@Transactional(readOnly = true)
public List<Disciplina> findByCurso(String termo, Curso curso) {
    try {//from   w ww . j  a va  2  s.c  o  m
        Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Disciplina.class);
        if (!termo.isEmpty()) {
            criteria.add(Restrictions.and((Restrictions.like("nome", termo, MatchMode.ANYWHERE).ignoreCase())));
        }
        if (curso != null) {
            criteria.add(Restrictions.and(Restrictions.eq("curso", curso)));
        }
        return criteria.list();
    } catch (HibernateException | NumberFormatException e) {
        System.out.println("query error: " + e.getMessage());
        return new ArrayList<>();
    }
}

From source file:br.ufg.reqweb.dao.RequerimentoDao.java

/**
 * find by dataCriacao interval/* ww  w.java2s  . c om*/
 *
 * @param dateA
 * @param dateB
 * @param sortField
 * @param sortOrder
 * @return
 */
@Transactional(readOnly = true)
public List<Requerimento> find(Date dateA, Date dateB, String sortField, String sortOrder) {
    try {
        Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Requerimento.class)
                .add(Restrictions.and(Restrictions.between("dataCriacao", dateA, dateB)));
        if ((sortField != null && !sortField.isEmpty()) && (sortOrder != null && !sortOrder.isEmpty())) {
            if (sortOrder.toLowerCase().equals("asc")) {
                criteria.addOrder(Property.forName(sortField).asc());
            }
            if (sortOrder.toLowerCase().equals("desc")) {
                criteria.addOrder(Property.forName(sortField).desc());
            }
        }
        return criteria.list();
    } catch (HibernateException e) {
        System.out.println("query error: " + e.getMessage());
        return new ArrayList<>();
    }
}

From source file:br.ufg.reqweb.dao.RequerimentoDao.java

/**
 *
 * @param login/*from  w w  w .j a v a2s  .co m*/
 * @param dateA
 * @param dateB
 * @param sortField
 * @param sortOrder
 * @return
 */
@Transactional(readOnly = true)
public List<Requerimento> find(String login, Date dateA, Date dateB, String sortField, String sortOrder) {
    try {
        Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Requerimento.class)
                .createAlias("discente", "d").add(Restrictions.eq("d.login", login).ignoreCase())
                .add(Restrictions.and(Restrictions.between("dataCriacao", dateA, dateB)));
        if ((sortField != null && !sortField.isEmpty()) && (sortOrder != null && !sortOrder.isEmpty())) {
            if (sortOrder.toLowerCase().equals("asc")) {
                criteria.addOrder(Property.forName(sortField).asc());
            }
            if (sortOrder.toLowerCase().equals("desc")) {
                criteria.addOrder(Property.forName(sortField).desc());
            }
        }
        return criteria.list();
    } catch (HibernateException e) {
        System.out.println("query error: " + e.getMessage());
        return new ArrayList<>();
    }
}

From source file:br.ufg.reqweb.dao.RequerimentoDao.java

@Transactional(readOnly = true)
public List<Requerimento> find(String sortField, String sortOrder, Map<String, Object> filters) {
    if (filters == null) {
        filters = new HashMap();
    }//  w ww .ja  v  a 2  s .c o  m
    try {
        Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Requerimento.class);
        for (String field : filters.keySet()) {
            /**
             * login eq / tipoRequerimento eq / termo like / dataCriacao
             * between
             */
            if (field.equals("login")) {
                criteria.createAlias("discente", "d");
                criteria.add(Restrictions.and(Restrictions.eq("d.login", filters.get(field))));
            }
            if (field.equals("turmas")) {
                criteria.createAlias("itemRequerimentoList", "i");
                List<Turma> turmas = (List<Turma>) filters.get(field);
                criteria.add(Restrictions.and(Restrictions.in("i.turma", turmas)));
            }
            if (field.equals("tipoRequerimento")) {
                criteria.add(Restrictions.and(Restrictions.eq(field, filters.get(field))));
            }
            if (field.equals("termo")) {
                criteria.createAlias("discente", "d");
                criteria.add(Restrictions.or(Restrictions.eq("d.matricula", filters.get("termo")), Restrictions
                        .like("d.nome", filters.get("termo").toString(), MatchMode.ANYWHERE).ignoreCase()));
            }
            if (field.equals("curso")) {
                criteria.createAlias("discente.perfilList", "p");
                criteria.add(Restrictions.and(Restrictions.eq("p.curso", filters.get(field))));
            }
            if (field.equals("dataCriacao")) {
                Date[] arrayDate = (Date[]) filters.get("dataCriacao");
                criteria.add(Restrictions.and(Restrictions.between("dataCriacao", arrayDate[0], arrayDate[1])));
            }
        }
        if ((sortField != null && !sortField.isEmpty()) && (sortOrder != null && !sortOrder.isEmpty())) {
            if (sortOrder.toLowerCase().equals("asc")) {
                criteria.addOrder(Property.forName(sortField).asc());
            }
            if (sortOrder.toLowerCase().equals("desc")) {
                criteria.addOrder(Property.forName(sortField).desc());
            }
        }
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        return criteria.list();
    } catch (HibernateException e) {
        System.out.println("query error: " + e.getMessage());
        return new ArrayList<>();
    }
}

From source file:br.ufg.reqweb.dao.TurmaDao.java

@Transactional(readOnly = true)
public List<Turma> find(String termo, Curso curso, boolean periodoAtivo) {
    try {/*ww  w . j  av a 2s.  c o m*/
        Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Turma.class);
        if (periodoAtivo) {
            criteria.createAlias("periodo", "p").add(Restrictions.eq("p.ativo", periodoAtivo));
        }
        if (termo != null && !termo.isEmpty()) {
            criteria.createAlias("disciplina", "d")
                    .add(Restrictions.like("d.nome", termo.toUpperCase(), MatchMode.ANYWHERE));
        }
        if (curso != null) {
            criteria.add(Restrictions.and(Restrictions.eq("d.curso", curso)));
        }
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        return criteria.list();
    } catch (HibernateException | NumberFormatException e) {
        System.out.println("query error: " + e.getMessage());
        return new ArrayList<>();
    }
}

From source file:br.ufg.reqweb.dao.TurmaDao.java

@Transactional(readOnly = true)
public List<Turma> find(int firstResult, int maxResult, String sortField, String sortOrder,
        Map<String, Object> filters) {
    if (filters == null) {
        filters = new HashMap();
    }//from www . j ava 2 s. c o m
    try {
        Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(Turma.class);
        criteria.createAlias("disciplina", "d");
        for (String field : filters.keySet()) {
            if (field.equals("termo")) {
                criteria.add(Restrictions.and(Restrictions
                        .like("d.nome", filters.get(field).toString(), MatchMode.ANYWHERE).ignoreCase()));
            }
            if (field.equals("periodo")) {
                criteria.add(Restrictions.and(Restrictions.eq("periodo", filters.get(field))));
            }
            if (field.equals("curso")) {
                criteria.add(Restrictions.and(Restrictions.eq("d.curso", filters.get(field))));
            }
        }
        if ((sortField != null && !sortField.isEmpty()) && (sortOrder != null && !sortOrder.isEmpty())) {
            System.out.format("sorted by: %s, ordering %s\n", sortField, sortOrder);
            if (sortOrder.toLowerCase().equals("asc")) {
                criteria.addOrder(Property.forName(sortField).asc());
            }
            if (sortOrder.toLowerCase().equals("desc")) {
                criteria.addOrder(Property.forName(sortField).desc());
            }
        }
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        return criteria.list();
    } catch (HibernateException e) {
        System.out.println("query error: " + e.getMessage());
        return new ArrayList<>();
    }
}