Example usage for org.hibernate.criterion ProjectionList add

List of usage examples for org.hibernate.criterion ProjectionList add

Introduction

In this page you can find the example usage for org.hibernate.criterion ProjectionList add.

Prototype

public ProjectionList add(Projection projection, String alias) 

Source Link

Document

Adds a projection to this list of projections after wrapping it with an alias

Usage

From source file:eu.jangos.realm.controller.world.ItemService.java

License:Apache License

/**
 * Return the item which has the given ID.
 * @param id The id of the item to be found.
 * @return The corresponding item or null if the item is not found.
 *///from www. ja v a2 s . co m
public Object[] getItemByIDCharEnum(int id) {
    logger.debug("Loading information for the item with the id " + id);

    try (Session session = HibernateUtil.getWorldSession().openSession()) {
        ProjectionList proList = Projections.projectionList();
        proList.add(Projections.property("displayid"), "displayid");
        proList.add(Projections.property("ivt.id"), "id");

        return (Object[]) session.createCriteria(Item.class).createAlias("inventorytype", "ivt")
                .setProjection(proList).add(Restrictions.eq("entry", id)).uniqueResult();

    } catch (HibernateException he) {
        logger.debug("There was an error connecting to the database.");
        return null;
    }
}

From source file:id.co.sambaltomat.core.dao.hibernate.GenericDaoHibernate.java

/**
 * Select specific column names/*from   w  w  w . j  a va 2  s. c  om*/
 *
 * @param id primary key
 * @param columnNames argumen dinamis, sebutkan nama2 column string yang di pilih dalam SELECT
 * @return
 */
public T get(final PK id, final String... columnNames) {
    return (T) getHibernateTemplate().execute(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(persistentClass, "talias");
            criteria.add(Restrictions.idEq(id));
            ProjectionList projectionList = Projections.projectionList();
            for (String columnName : columnNames) {
                projectionList.add(Projections.property("talias." + columnName), columnName);
            }
            criteria.setProjection(projectionList);
            criteria.setResultTransformer(new AliasToBeanResultTransformer(persistentClass));
            Object returnObject = criteria.uniqueResult();
            return returnObject;
        }
    });
}

From source file:ispok.dao.VisitorHibernateJpaDao.java

@Override
public <ENTITY> List<ENTITY> getPage(int first, int rows, String sortBy, boolean ascending,
        Map<String, Object> filters, Class<ENTITY> clazz) {

    logger.entry();/* w  w w .  j  av a  2 s . c  om*/

    Session session = getEntityManager().unwrap(Session.class);

    Criteria criteria = session.createCriteria(clazz, "visitor");

    for (Map.Entry<String, Object> filter : filters.entrySet()) {
        logger.debug("Filter: {}={}", filter.getKey(), filter.getValue());

        if ("id".equals(filter.getKey())) {
            criteria.add(Restrictions.eq("id", Long.parseLong(filter.getValue().toString())));
        } else {
            criteria.add(Restrictions.ilike(filter.getKey(), (String) filter.getValue(), MatchMode.START));
        }
    }

    if (ascending) {
        criteria.addOrder(Order.asc(sortBy));
    } else {
        criteria.addOrder(Order.desc(sortBy));
    }

    criteria.setFirstResult(first);
    criteria.setMaxResults(rows);

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.property("id"), "id")
            .add(Projections.property("visitor.firstName"), "firstName")
            .add(Projections.property("visitor.lastName"), "lastName")
            .add(Projections.property("visitor.birthDate"), "birthDate")
            .add(Projections.property("visitor.nin"), "nin")
            .add(Projections.property("visitor.nickname"), "nickname")
            .add(Projections.property("visitor.telephone"), "telephone")
            .add(Projections.property("visitor.email"), "email").add(Projections.property("visitor.sex"), "sex")
            .add(Projections.property("visitor.passwordHash"), "passwordHash")
            .add(Projections.property("visitor.saltHash"), "saltHash")
            .add(Projections.property("visitor.idNumber"), "idNumber")
            .add(Projections.property("visitor.bonusPoints"), "bonusPoints")
            .add(Projections.property("visitor.citizenship"), "citizenship")
            .add(Projections.property("visitor.domicile"), "domicile")
            .add(Projections.property("visitor.bonusPoints"), "bonusPoints");

    criteria.setProjection(projectionList);
    criteria.setResultTransformer(Transformers.aliasToBean(clazz));
    List<ENTITY> list = criteria.list();

    logger.exit();
    return list;
}

From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java

License:Open Source License

@Override
@Transactional(readOnly = true)//  w ww. j  a  v a  2  s  . c o  m
public Map<String, Object> lista(Map<String, Object> params) {
    log.debug("Buscando lista de activos 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(Activo.class);
    Criteria countCriteria = currentSession().createCriteria(Activo.class);

    criteria.createAlias("tipoActivo", "ta");
    countCriteria.createAlias("tipoActivo", "ta");

    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("tipoActivoIds")) {
        criteria.add(Restrictions.in("ta.id", (List) params.get("tipoActivoIds")));
        countCriteria.add(Restrictions.in("ta.id", (List) params.get("tipoActivoIds")));
    }

    if (params.containsKey("cuentaId")) {
        criteria.createCriteria("centroCosto").add(Restrictions.eq("id.idCosto", params.get("cuentaId")));
        countCriteria.createCriteria("centroCosto").add(Restrictions.eq("id.idCosto", params.get("cuentaId")));
    }

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

    Date fechaIniciado = null;
    if (params.containsKey("fechaIniciado")) {
        fechaIniciado = (Date) params.get("fechaIniciado");
        criteria.add(Restrictions.ge("fechaCompra", fechaIniciado));
        countCriteria.add(Restrictions.ge("fechaCompra", fechaIniciado));
    }

    Date fechaTerminado = null;
    if (params.containsKey("fechaTerminado")) {
        Calendar cal = Calendar.getInstance();
        cal.setTime((Date) params.get("fechaTerminado"));
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
        fechaTerminado = cal.getTime();
        criteria.add(Restrictions.le("fechaCompra", fechaTerminado));
        countCriteria.add(Restrictions.le("fechaCompra", fechaTerminado));
    }

    if (params.containsKey("bajas")) {
        if (fechaIniciado != null) {
            criteria.add(Restrictions.eq("inactivo", true));
            countCriteria.add(Restrictions.eq("inactivo", true));
            criteria.add(Restrictions.ge("fechaInactivo", fechaIniciado));
            countCriteria.add(Restrictions.ge("fechaInactivo", fechaIniciado));
            if (fechaTerminado != null) {
                criteria.add(Restrictions.le("fechaInactivo", fechaTerminado));
                countCriteria.add(Restrictions.le("fechaInactivo", fechaTerminado));
            }
        } else if (fechaTerminado != null) {
            criteria.add(Restrictions.eq("inactivo", true));
            countCriteria.add(Restrictions.eq("inactivo", true));
            criteria.add(Restrictions.le("fechaInactivo", fechaTerminado));
            countCriteria.add(Restrictions.le("fechaInactivo", fechaTerminado));
        } else {
            criteria.add(Restrictions.eq("inactivo", true));
            countCriteria.add(Restrictions.eq("inactivo", true));
        }
    } else {
        criteria.add(Restrictions.eq("inactivo", false));
        countCriteria.add(Restrictions.eq("inactivo", false));
    }

    if (params.containsKey("reubicaciones")) {
        if (fechaIniciado != null) {
            criteria.add(Restrictions.isNotNull("fechaReubicado"));
            countCriteria.add(Restrictions.isNotNull("fechaReubicado"));
            criteria.add(Restrictions.ge("fechaReubicado", fechaIniciado));
            countCriteria.add(Restrictions.ge("fechaReubicado", fechaIniciado));
            if (fechaTerminado != null) {
                criteria.add(Restrictions.le("fechaReubicado", fechaIniciado));
                countCriteria.add(Restrictions.le("fechaReubicado", fechaIniciado));
            }
        } else if (fechaTerminado != null) {
            criteria.add(Restrictions.isNotNull("fechaReubicado"));
            countCriteria.add(Restrictions.isNotNull("fechaReubicado"));
            criteria.add(Restrictions.le("fechaReubicado", fechaIniciado));
            countCriteria.add(Restrictions.le("fechaReubicado", fechaIniciado));
        } else {
            criteria.add(Restrictions.isNotNull("fechaReubicado"));
            countCriteria.add(Restrictions.isNotNull("fechaReubicado"));
        }
    }

    if (params.containsKey("responsableNombre")) {
        criteria.add(Restrictions.ilike("responsable", (String) params.get("responsable"), MatchMode.ANYWHERE));
        countCriteria
                .add(Restrictions.ilike("responsable", (String) params.get("responsable"), MatchMode.ANYWHERE));
    }

    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("procedencia", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("factura", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("pedimento", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("poliza", filtro, MatchMode.ANYWHERE));
        propiedades.add(Restrictions.ilike("codigo", 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));
        propiedades.add(Restrictions.ilike("responsable", filtro, MatchMode.ANYWHERE));
        criteria.add(propiedades);
        countCriteria.add(propiedades);
    }

    if (params.containsKey("order")) {
        criteria.addOrder(Order.asc("ta.cuenta.id.idCtaMayor"));
        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("ta.cuenta.id.idCtaMayor"));
        criteria.addOrder(Order.desc("folio"));
    }

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

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

    ProjectionList list = Projections.projectionList();
    list.add(Projections.sum("depreciacionAnual"), "depreciacionAnual");
    list.add(Projections.sum("depreciacionMensual"), "depreciacionMensual");
    list.add(Projections.sum("depreciacionAcumulada"), "depreciacionAcumulada");
    list.add(Projections.sum("moi"), "moi");
    list.add(Projections.groupProperty("fechaDepreciacion"), "fechaDepreciacion");
    countCriteria.setProjection(list);

    List<?> proyecciones = countCriteria.list();
    Iterator<?> iterator = proyecciones.iterator();
    if (iterator.hasNext()) {
        Object[] obj = (Object[]) iterator.next();
        NumberFormat nf = DecimalFormat.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Date fecha;
        if (obj[4] != null) {
            fecha = (Date) obj[4];
        } else {
            fecha = new Date();
        }
        params.put("resumen", new String[] { nf.format(obj[0]), nf.format(obj[1]), nf.format(obj[2]),
                nf.format(obj[3]), sdf.format(fecha) });
    }

    return params;
}

From source file:net.firejack.platform.core.store.statistics.LogTransactionStore.java

License:Apache License

@Override
@Transactional(readOnly = true)//  w  w  w .j av a  2s .  co  m
public List<LogTransactionModel> findAggregatedByTermAndDates(Integer offset, Integer limit, String term,
        String lookup, Date startDate, Date endDate, String sortColumn, String sortDirection,
        MetricGroupLevel level) {
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.min("hourPeriod"), "startTime").add(Projections.max("hourPeriod"), "endTime")
            .add(Projections.groupProperty("packageLookup"), "packageLookup")
            .add(Projections.sum("transactions"), "transactions")
            .add(Projections.sum("entitiesLoaded"), "entitiesLoaded")
            .add(Projections.sum("entitiesUpdated"), "entitiesUpdated")
            .add(Projections.sum("entitiesInserted"), "entitiesInserted")
            .add(Projections.sum("entitiesDeleted"), "entitiesDeleted")
            .add(Projections.sum("entitiesFetched"), "entitiesFetched")
            .add(Projections.sum("collectionsLoaded"), "collectionsLoaded")
            .add(Projections.sum("collectionsUpdated"), "collectionsUpdated")
            .add(Projections.sum("collectionsRecreated"), "collectionsRecreated")
            .add(Projections.sum("collectionsRemoved"), "collectionsRemoved")
            .add(Projections.sum("collectionsFetched"), "collectionsFetched")
            .add(Projections.max("maxQueryTime"), "maxQueryTime");

    switch (level) {
    case HOUR:
        projectionList.add(Projections.groupProperty("hourPeriod").as("hourPeriod"));
        break;
    case DAY:
        projectionList.add(Projections.groupProperty("dayPeriod").as("dayPeriod"));
        break;
    case WEEK:
        projectionList.add(Projections.groupProperty("weekPeriod").as("weekPeriod"));
        break;
    case MONTH:
        projectionList.add(Projections.groupProperty("monthPeriod").as("monthPeriod"));
        break;
    }

    return findAllByProjection(offset, limit, term, lookup, startDate, endDate, sortColumn, sortDirection,
            projectionList);
}

From source file:net.firejack.platform.core.store.statistics.LogTransactionStore.java

License:Apache License

@Override
@Transactional(readOnly = true)//from   w  w w  .  ja  v  a 2 s. c o  m
public long countAggregatedByTermAndDates(String term, String lookup, Date startDate, Date endDate,
        MetricGroupLevel level) {
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.groupProperty("packageLookup"), "packageLookup");

    switch (level) {
    case HOUR:
        projectionList.add(Projections.groupProperty("hourPeriod").as("hourPeriod"));
        break;
    case DAY:
        projectionList.add(Projections.groupProperty("dayPeriod").as("dayPeriod"));
        break;
    case WEEK:
        projectionList.add(Projections.groupProperty("weekPeriod").as("weekPeriod"));
        break;
    case MONTH:
        projectionList.add(Projections.groupProperty("monthPeriod").as("monthPeriod"));
        break;
    }

    List<Criterion> criterions = createCriterionsForTermAndDates(term, lookup, startDate, endDate);
    return findCountWithFilter(criterions, null, null, projectionList);
}

From source file:net.firejack.platform.core.store.statistics.MetricsEntryStore.java

License:Apache License

@Override
public List<AggregatedMetricsEntryModel> findAggregatedByTermAndDates(Integer offset, Integer limit,
        String term, String lookup, Date startDate, Date endDate, String sortColumn, String sortDirection,
        MetricGroupLevel level, LogEntryType logEntryType) {

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.min("hourPeriod"), "startTime").add(Projections.max("hourPeriod"), "endTime")
            .add(Projections.groupProperty("lookup"), "lookup")
            .add(Projections.groupProperty("systemAccountName"), "systemAccountName")
            .add(Projections.groupProperty("username"), "username")
            .add(Projections.sum("numberOfInvocations"), "numberOfInvocations")
            .add(Projections.avg("averageExecutionTime"), "averageExecutionTime")
            .add(Projections.min("minResponseTime"), "minResponseTime")
            .add(Projections.max("maxResponseTime"), "maxResponseTime")
            .add(Projections.avg("successRate"), "successRate");

    switch (level) {
    case HOUR://from   www.  j a  va2 s.c om
        projectionList.add(Projections.groupProperty("hourPeriod").as("hourPeriod"));
        break;
    case DAY:
        projectionList.add(Projections.groupProperty("dayPeriod").as("dayPeriod"));
        break;
    case WEEK:
        projectionList.add(Projections.groupProperty("weekPeriod").as("weekPeriod"));
        break;
    case MONTH:
        projectionList.add(Projections.groupProperty("monthPeriod").as("monthPeriod"));
        break;
    }

    return findAllByProjection(offset, limit, term, lookup, startDate, endDate, sortColumn, sortDirection,
            logEntryType, projectionList);
}

From source file:net.firejack.platform.core.store.statistics.MetricsEntryStore.java

License:Apache License

@Override
@Transactional(readOnly = true)//from  ww w  . j a v a 2s.  c  o  m
public List<AggregatedMetricsEntryModel> findAllByTermAndDates(Integer offset, Integer limit, String term,
        String lookup, Date startDate, Date endDate, String sortColumn, String sortDirection,
        LogEntryType logEntryType) {

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.property("hourPeriod"), "startTime")
            .add(Projections.property("hourPeriod"), "endTime")
            .add(Projections.property("lookup"), "alias_lookup")
            .add(Projections.property("systemAccountName"), "alias_systemAccountName")
            .add(Projections.property("username"), "alias_username")
            .add(Projections.property("numberOfInvocations"), "numberOfInvocations")
            .add(Projections.property("averageExecutionTime"), "averageExecutionTime")
            .add(Projections.property("minResponseTime"), "minResponseTime")
            .add(Projections.property("maxResponseTime"), "maxResponseTime")
            .add(Projections.property("successRate"), "successRate");

    return findAllByProjection(offset, limit, term, lookup, startDate, endDate, sortColumn, sortDirection,
            logEntryType, projectionList);
}

From source file:net.firejack.platform.core.store.statistics.MetricsEntryStore.java

License:Apache License

public long countAggregatedByTermAndDates(String term, String lookup, Date startDate, Date endDate,
        MetricGroupLevel level, LogEntryType logEntryType) {
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.groupProperty("lookup"), "lookup")
            .add(Projections.groupProperty("systemAccountName"), "systemAccountName")
            .add(Projections.groupProperty("username"), "username");

    switch (level) {
    case HOUR:/*from   w w  w  . ja va 2 s  . co  m*/
        projectionList.add(Projections.groupProperty("hourPeriod").as("hourPeriod"));
        break;
    case DAY:
        projectionList.add(Projections.groupProperty("dayPeriod").as("dayPeriod"));
        break;
    case WEEK:
        projectionList.add(Projections.groupProperty("weekPeriod").as("weekPeriod"));
        break;
    case MONTH:
        projectionList.add(Projections.groupProperty("monthPeriod").as("monthPeriod"));
        break;
    }

    List<Criterion> criterions = createCriterionsForTermAndDates(term, lookup, startDate, endDate,
            logEntryType);
    return findCountWithFilter(criterions, null, null, projectionList);
}

From source file:org.apache.usergrid.apm.service.charts.service.LogChartUtil.java

License:Apache License

public static ProjectionList getProjectionList(LogChartCriteria cq) {
    ProjectionList projList = Projections.projectionList();
    //Adding GroupBy. We will allow only one groupby so that chart looks cleaner.
    if (cq.isGroupedByApp()) {
        projList.add(Projections.groupProperty("this.appId"), "appId");
    } else if (cq.isGroupedByNetworkType()) {
        projList.add(Projections.groupProperty("this.networkType"), "networkType");
    }/*from www .j  a  va  2s . c o m*/

    else if (cq.isGroupedByNetworkCarrier()) {
        projList.add(Projections.groupProperty("this.networkCarrier"), "networkCarrier");
    }

    switch (cq.getSamplePeriod()) {
    //see http://stackoverflow.com/questions/84644/hibernate-query-by-example-and-projections on why "this." is needed 
    //in following lines
    case MINUTE:
        projList.add(Projections.groupProperty("this.endMinute"), "endMinute");
        break;
    case HOUR:
        projList.add(Projections.groupProperty("this.endHour"), "endHour");
        break;
    case DAY_WEEK:
        projList.add(Projections.groupProperty("this.endDay"), "endDay");
        break;
    case DAY_MONTH:
        projList.add(Projections.groupProperty("this.endDay"), "endDay");
        break;
    case MONTH:
        projList.add(Projections.groupProperty("this.endMonth"), "endMonth");
        break;
    }

    //may run into this bug because of alias http://stackoverflow.com/questions/84644/hibernate-query-by-example-and-projections
    //And I did run into it. ouch. Fix was to add this.filedName !!

    return projList;

}