Example usage for org.hibernate.criterion Restrictions disjunction

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

Introduction

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

Prototype

public static Disjunction disjunction() 

Source Link

Document

Group expressions together in a single disjunction (A or B or C...).

Usage

From source file:mx.edu.um.mateo.general.dao.UsuarioDao.java

License:Open Source License

public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de usuarios con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }/* w  ww. jav a 2s  .  c o m*/

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }

    if (!params.containsKey("asociacion")) {
        params.put("usuarios", new ArrayList());
        params.put("cantidad", 0L);

        return params;
    }

    Criteria criteria = currentSession().createCriteria(Usuario.class);
    Criteria countCriteria = currentSession().createCriteria(Usuario.class);

    if (params.containsKey("asociacion")) {
        log.debug("valor de asociacion" + params.get("asociacion"));
        criteria.createCriteria("asociacion")
                .add(Restrictions.eq("id", ((Asociacion) params.get("asociacion")).getId()));
        countCriteria.createCriteria("asociacion")
                .add(Restrictions.eq("id", ((Asociacion) params.get("asociacion")).getId()));
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("username", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("nombre", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("apellido", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    }

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("usuarios", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.AlmacenDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)/*from   ww w.  ja  va2 s .c o  m*/
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de almacenes con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Almacen.class);
    Criteria countCriteria = currentSession().createCriteria(Almacen.class);

    if (params.containsKey("empresa")) {
        criteria.createCriteria("empresa").add(Restrictions.idEq(params.get("empresa")));
        countCriteria.createCriteria("empresa").add(Restrictions.idEq(params.get("empresa")));
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("nombre", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("nombreCompleto", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    }

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("almacenes", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.CancelacionDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)/*from   w w w.j a  va  2  s  .c o m*/
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de cancelaciones con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Cancelacion.class);
    Criteria countCriteria = currentSession().createCriteria(Cancelacion.class);

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
        countCriteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("fechaIniciado")) {
        log.debug("Buscando desde {}", params.get("fechaIniciado"));
        criteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
        countCriteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
    } else {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 1);
        log.debug("Asignando busqueda desde {}", calendar.getTime());
        criteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
        countCriteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
    }

    if (params.containsKey("fechaTerminado")) {
        log.debug("Buscando hasta {}", params.get("fechaTerminado"));
        criteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
        countCriteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("folio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("comentarios", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    } else {
        criteria.addOrder(Order.desc("fechaCreacion"));
    }

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("cancelaciones", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.EntradaDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)//from w w  w.  j a  v a2s  . c o m
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de entradas con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Entrada.class);
    Criteria countCriteria = currentSession().createCriteria(Entrada.class);
    criteria.createAlias("estatus", "est");
    countCriteria.createAlias("estatus", "est");

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
        countCriteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("proveedorId")) {
        criteria.createCriteria("proveedor").add(Restrictions.idEq(params.get("proveedorId")));
        countCriteria.createCriteria("proveedor").add(Restrictions.idEq(params.get("proveedorId")));
    }

    if (params.containsKey("fechaIniciado")) {
        log.debug("Buscando desde {}", params.get("fechaIniciado"));
        criteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
        countCriteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
    } else {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 1);
        log.debug("Asignando busqueda desde {}", calendar.getTime());
        criteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
        countCriteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
    }

    if (params.containsKey("fechaTerminado")) {
        log.debug("Buscando hasta {}", params.get("fechaTerminado"));
        criteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
        countCriteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
    }

    if (params.containsKey(Constantes.ABIERTA) || params.containsKey(Constantes.CERRADA)
            || params.containsKey(Constantes.PENDIENTE) || params.containsKey(Constantes.FACTURADA)
            || params.containsKey(Constantes.CANCELADA) || params.containsKey(Constantes.DEVOLUCION)) {
        Disjunction propiedades = Restrictions.disjunction();
        if (params.containsKey(Constantes.ABIERTA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.ABIERTA));
        }
        if (params.containsKey(Constantes.CERRADA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.CERRADA));
        }
        if (params.containsKey(Constantes.PENDIENTE)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.PENDIENTE));
        }
        if (params.containsKey(Constantes.FACTURADA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.FACTURADA));
        }
        if (params.containsKey(Constantes.CANCELADA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.CANCELADA));
        }
        criteria.add(propiedades);
        countCriteria.add(propiedades);

        if (params.containsKey(Constantes.DEVOLUCION)) {
            criteria.add(Restrictions.eq("devolucion", Boolean.TRUE));
            countCriteria.add(Restrictions.eq("devolucion", Boolean.TRUE));
        }
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("folio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("factura", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("comentarios", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    } else {
        criteria.addOrder(Order.asc("est.prioridad"));
        criteria.addOrder(Order.desc("fechaModificacion"));
    }

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("entradas", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.EntradaDaoHibernate.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*w  w w .ja v a2  s  . c o m*/
@Transactional(readOnly = true)
public List<Entrada> buscaEntradasParaFactura(Map<String, Object> params) {
    log.debug("Buscando lista de entradas con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Entrada.class);

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("folio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("factura", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("comentarios", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
    }

    if (params.containsKey("facturaId")) {
        Query query = currentSession().createQuery(
                "select e.id from FacturaAlmacen f inner join f.entradas as e where f.id = :facturaId");
        query.setLong("facturaId", (Long) params.get("facturaId"));
        List<Long> idsDeEntradas = query.list();
        log.debug("idsDeEntradas: {}", idsDeEntradas);
        if (idsDeEntradas != null && idsDeEntradas.size() > 0) {
            criteria.add(Restrictions.not(Restrictions.in("id", idsDeEntradas)));
        }
    }

    criteria.add(Restrictions.eq("devolucion", Boolean.TRUE));
    criteria.createCriteria("estatus").add(Restrictions.eq("nombre", Constantes.CERRADA));
    criteria.addOrder(Order.desc("fechaModificacion"));

    criteria.setFirstResult((Integer) params.get("offset"));
    criteria.setMaxResults((Integer) params.get("max"));

    return criteria.list();
}

From source file:mx.edu.um.mateo.inventario.dao.impl.FacturaAlmacenDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)/*from   ww  w .j  a  va  2s.c  o m*/
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de facturas con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(FacturaAlmacen.class);
    Criteria countCriteria = currentSession().createCriteria(FacturaAlmacen.class);

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
        countCriteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("fechaIniciado")) {
        log.debug("Buscando desde {}", params.get("fechaIniciado"));
        criteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
        countCriteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
    } else {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 1);
        log.debug("Asignando busqueda desde {}", calendar.getTime());
        criteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
        countCriteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
    }

    if (params.containsKey("fechaTerminado")) {
        log.debug("Buscando hasta {}", params.get("fechaTerminado"));
        criteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
        countCriteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("folio", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    } else {
        criteria.createCriteria("estatus").addOrder(Order.asc("prioridad"));
    }
    criteria.addOrder(Order.desc("fechaModificacion"));

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("facturas", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.ProductoDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)/* ww  w.j  av a2  s  . co  m*/
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de productos con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Producto.class);
    Criteria countCriteria = currentSession().createCriteria(Producto.class);

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
        countCriteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("inactivo")) {
        criteria.add(Restrictions.eq("inactivo", true));
        countCriteria.add(Restrictions.eq("inactivo", true));
    } else {
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.eq("inactivo", Boolean.FALSE));
        propiedades.add(Restrictions.isNull("inactivo"));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("sku", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("nombre", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("descripcion", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("marca", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("modelo", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("ubicacion", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    }

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("productos", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.ProductoDaoHibernate.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*w  ww .  j  a  va  2s.  c  o  m*/
@Transactional(readOnly = true)
public List<Producto> listaParaSalida(String filtro, Long almacenId) {
    Criteria criteria = currentSession().createCriteria(Producto.class);
    criteria.createCriteria("almacen").add(Restrictions.idEq(almacenId));
    filtro = "%" + filtro + "%";
    Disjunction propiedades = Restrictions.disjunction();
    propiedades.add(Restrictions.ilike("sku", filtro, MatchMode.ANYWHERE));
    propiedades.add(Restrictions.ilike("nombre", filtro, MatchMode.ANYWHERE));
    propiedades.add(Restrictions.ilike("descripcion", filtro, MatchMode.ANYWHERE));
    propiedades.add(Restrictions.ilike("marca", filtro, MatchMode.ANYWHERE));
    propiedades.add(Restrictions.ilike("modelo", filtro, MatchMode.ANYWHERE));
    propiedades.add(Restrictions.ilike("ubicacion", filtro, MatchMode.ANYWHERE));
    criteria.add(propiedades);

    propiedades = Restrictions.disjunction();
    propiedades.add(Restrictions.eq("inactivo", Boolean.FALSE));
    propiedades.add(Restrictions.isNull("inactivo"));
    criteria.add(propiedades);

    criteria.add(Restrictions.gt("existencia", BigDecimal.ZERO));
    criteria.setMaxResults(10);
    return criteria.list();
}

From source file:mx.edu.um.mateo.inventario.dao.impl.SalidaDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)//w ww . jav  a2s .co  m
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de salidas con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (params.containsKey("pagina")) {
        Long pagina = (Long) params.get("pagina");
        Long offset = (pagina - 1) * (Integer) params.get("max");
        params.put("offset", offset.intValue());
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Salida.class);
    Criteria countCriteria = currentSession().createCriteria(Salida.class);
    criteria.createAlias("estatus", "est");
    countCriteria.createAlias("estatus", "est");

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
        countCriteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("clienteId")) {
        criteria.createCriteria("cliente").add(Restrictions.idEq(params.get("clienteId")));
        countCriteria.createCriteria("cliente").add(Restrictions.idEq(params.get("clienteId")));
    }

    if (params.containsKey("estatusId")) {
        criteria.createCriteria("estatus").add(Restrictions.idEq(params.get("estatusId")));
        countCriteria.createCriteria("estatus").add(Restrictions.idEq(params.get("estatusId")));
    }

    if (params.containsKey("fechaIniciado")) {
        log.debug("Buscando desde {}", params.get("fechaIniciado"));
        criteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
        countCriteria.add(Restrictions.ge("fechaCreacion", params.get("fechaIniciado")));
    } else {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 1);
        log.debug("Asignando busqueda desde {}", calendar.getTime());
        criteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
        countCriteria.add(Restrictions.ge("fechaCreacion", calendar.getTime()));
    }

    if (params.containsKey("fechaTerminado")) {
        log.debug("Buscando hasta {}", params.get("fechaTerminado"));
        criteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
        countCriteria.add(Restrictions.le("fechaCreacion", params.get("fechaTerminado")));
    }

    if (params.containsKey(Constantes.ABIERTA) || params.containsKey(Constantes.CERRADA)
            || params.containsKey(Constantes.PENDIENTE) || params.containsKey(Constantes.FACTURADA)
            || params.containsKey(Constantes.CANCELADA)) {
        Disjunction propiedades = Restrictions.disjunction();
        if (params.containsKey(Constantes.ABIERTA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.ABIERTA));
        }
        if (params.containsKey(Constantes.CERRADA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.CERRADA));
        }
        if (params.containsKey(Constantes.PENDIENTE)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.PENDIENTE));
        }
        if (params.containsKey(Constantes.FACTURADA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.FACTURADA));
        }
        if (params.containsKey(Constantes.CANCELADA)) {
            propiedades.add(Restrictions.eq("est.nombre", Constantes.CANCELADA));
        }
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("folio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("reporte", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("empleado", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("departamento", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("atendio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("comentarios", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        String campo = (String) params.get("order");
        if (params.get("sort").equals("desc")) {
            criteria.addOrder(Order.desc(campo));
        } else {
            criteria.addOrder(Order.asc(campo));
        }
    } else if (!params.containsKey("estatusId")) {
        criteria.addOrder(Order.asc("est.prioridad"));
    }
    criteria.addOrder(Order.desc("fechaModificacion"));

    if (!params.containsKey("reporte")) {
        criteria.setFirstResult((Integer) params.get("offset"));
        criteria.setMaxResults((Integer) params.get("max"));
    }
    params.put("salidas", criteria.list());

    countCriteria.setProjection(Projections.rowCount());
    params.put("cantidad", (Long) countCriteria.list().get(0));

    return params;
}

From source file:mx.edu.um.mateo.inventario.dao.impl.SalidaDaoHibernate.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from w  w  w.ja va  2s  .  c  o  m*/
@Transactional(readOnly = true)
public List<Salida> buscaSalidasParaFactura(Map<String, Object> params) {
    log.debug("Buscando lista de salidas con params {}", params);
    if (params == null) {
        params = new HashMap<>();
    }

    if (!params.containsKey("max")) {
        params.put("max", 10);
    } else {
        params.put("max", Math.min((Integer) params.get("max"), 100));
    }

    if (!params.containsKey("offset")) {
        params.put("offset", 0);
    }
    Criteria criteria = currentSession().createCriteria(Salida.class);

    if (params.containsKey("almacen")) {
        criteria.createCriteria("almacen").add(Restrictions.idEq(params.get("almacen")));
    }

    if (params.containsKey("filtro")) {
        String filtro = (String) params.get("filtro");
        Disjunction propiedades = Restrictions.disjunction();
        propiedades.add(Restrictions.ilike("folio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("reporte", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("empleado", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("departamento", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("atendio", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("comentarios", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
    }

    if (params.containsKey("facturaId")) {
        Query query = currentSession().createQuery(
                "select s.id from FacturaAlmacen f inner join f.salidas as s where f.id = :facturaId");
        query.setLong("facturaId", (Long) params.get("facturaId"));
        List<Long> idsDeSalidas = query.list();
        log.debug("idsDeSalidas: {}", idsDeSalidas);
        if (idsDeSalidas != null && idsDeSalidas.size() > 0) {
            criteria.add(Restrictions.not(Restrictions.in("id", idsDeSalidas)));
        }
    }

    criteria.createCriteria("estatus").add(Restrictions.eq("nombre", Constantes.CERRADA));
    criteria.addOrder(Order.desc("fechaModificacion"));

    criteria.setFirstResult((Integer) params.get("offset"));
    criteria.setMaxResults((Integer) params.get("max"));

    return criteria.list();
}