Example usage for org.hibernate.criterion Projections groupProperty

List of usage examples for org.hibernate.criterion Projections groupProperty

Introduction

In this page you can find the example usage for org.hibernate.criterion Projections groupProperty.

Prototype

public static PropertyProjection groupProperty(String propertyName) 

Source Link

Document

A grouping property value projection

Usage

From source file:Mob.MobLoadMonthlySales.java

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    try {//w  ww .  j  a va  2  s. c o  m
        PrintWriter pw = resp.getWriter();
        DataInputStream ds = new DataInputStream(req.getInputStream());
        String dfr = ds.readUTF();
        String dto = ds.readUTF();
        String cat = ds.readUTF();
        String pcd = ds.readUTF();
        ds.close();

        String datefrmarr[] = dfr.split(" ");
        String datetoarr[] = dto.split(" ");

        Session con = FactoryManager.getSessionFactory().openSession();

        List<Object[]> list;

        Criteria cri = con.createCriteria(TransProd.class);

        SimpleDateFormat sdf = new SimpleDateFormat("MMM/dd/yyyy");

        if (dfr != null && dto != null) {
            Criteria cri2 = cri.createCriteria("transaction");
            if (!dfr.equals("")) {
                Date d = sdf.parse(datefrmarr[1] + "/" + datefrmarr[2] + "/" + datefrmarr[5]);
                cri2.add(Restrictions.ge("transDate", d));
            }
            if (!dto.equals("")) {
                Date d = sdf.parse(datetoarr[1] + "/" + datetoarr[2] + "/" + datetoarr[5]);
                cri2.add(Restrictions.le("transDate", d));
            }
        }
        cri.setProjection(Projections.projectionList().add(Projections.groupProperty("stock"))
                .add(Projections.count("qty")));
        //                        cri.createAlias("stock", "s").add(Projections.groupProperty("s.batchid"));

        list = cri.list();
        String out = "";
        double subtot = 0.0;

        for (Object[] obj : list) {
            Stock stk = (Stock) obj[0];
            long qty = (Long) obj[1];
            if (!pcd.equals("All")) {
                if (stk.getProducts().getProdCode().equals(pcd)) {
                    out += "Product Code : " + stk.getProducts().getProdCode();
                    out += " ";
                    out += "Batch ID : " + stk.getBatchid();
                    out += " ";
                    out += "Product Name : " + stk.getProducts().getBrand().getBrandName() + " "
                            + stk.getProducts().getItmName();
                    out += " ";
                    out += "Quantity : " + qty;
                    out += " ";
                    out += "Price : " + stk.getItmPrice();
                    out += " ";
                    out += "Discount : " + stk.getDiscount();
                    out += " ";
                    out += "Total : " + (stk.getItmPrice() - stk.getDiscount()) * qty;
                    subtot += (stk.getItmPrice() - stk.getDiscount()) * qty;
                    out += ",";
                }
            } else if (!cat.equals("0")) {
                if (stk.getProducts().getCategory().getIdcat().equals(Integer.parseInt(cat))) {
                    out += "Product Code : " + stk.getProducts().getProdCode();
                    out += " ";
                    out += "Batch ID : " + stk.getBatchid();
                    out += " ";
                    out += "Product Name : " + stk.getProducts().getBrand().getBrandName() + " "
                            + stk.getProducts().getItmName();
                    out += " ";
                    out += "Quantity : " + qty;
                    out += " ";
                    out += "Price : " + stk.getItmPrice();
                    out += " ";
                    out += "Discount : " + stk.getDiscount();
                    out += " ";
                    out += "Total : " + (stk.getItmPrice() - stk.getDiscount()) * qty;
                    subtot += (stk.getItmPrice() - stk.getDiscount()) * qty;
                    out += ",";
                }
            } else {
                out += "Product Code : " + stk.getProducts().getProdCode();
                out += " ";
                out += "Batch ID : " + stk.getBatchid();
                out += " ";
                out += "Product Name : " + stk.getProducts().getBrand().getBrandName() + " "
                        + stk.getProducts().getItmName();
                out += " ";
                out += "Quantity : " + qty;
                out += " ";
                out += "Price : " + stk.getItmPrice();
                out += " ";
                out += "Discount : " + stk.getDiscount();
                out += " ";
                out += "Total : " + (stk.getItmPrice() - stk.getDiscount()) * qty;
                subtot += (stk.getItmPrice() - stk.getDiscount()) * qty;
                out += ",";
            }
        }
        out += "Sub Total : Rs." + subtot;
        out += ",";
        pw.print(out);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:models.db.acentera.impl.ProjectProvidersImpl.java

License:Open Source License

public static Set<ProjectRegions> getRegionsAvailables(Set<ProjectProvidersRegions> regions) {

    Session s = (Session) HibernateSessionFactory.getSession();

    DetachedCriteria msgFromCriteria = DetachedCriteria.forClass(DO_REGIONS.class);
    ProjectionList properties = Projections.projectionList();
    properties.add(Projections.groupProperty("slug"));
    msgFromCriteria.setProjection(properties);

    Criteria criteria = s.createCriteria(DO_REGIONS.class);
    criteria.add(Subqueries.propertiesIn(new String[] { "slug" }, msgFromCriteria));

    List<DO_REGIONS> list = criteria.list();

    HashSet<ProjectRegions> regionsSet = new HashSet<ProjectRegions>();
    Iterator<ProjectProvidersRegions> ppr = regions.iterator();
    while (ppr.hasNext()) {
        ProjectProvidersRegions item = ppr.next();

        boolean bFound = false;
        Iterator<DO_REGIONS> itrReg = list.iterator();
        while (itrReg.hasNext() && !bFound) {
            DO_REGIONS r = itrReg.next();
            try {
                if (r.getSlug().compareTo(item.getProjectRegions().getSlug()) == 0) {
                    bFound = true;// w ww .j av  a 2s .co  m
                }
            } catch (Exception ew) {
                ew.printStackTrace();
            }
        }
        if (bFound) {
            regionsSet.add(item.getProjectRegions());
        }
    }
    return regionsSet;

}

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

License:Open Source License

@Override
@Transactional(readOnly = true)/*  w  w w.ja va 2  s .  com*/
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.api.registry.broker.ReadBaseBIReportDataBroker.java

License:Apache License

@Override
protected ServiceResponse<BIReportData> perform(ServiceRequest<NamedValues> request) throws Exception {
    Long biReportUserId = (Long) request.getData().get("id");

    String parentNodeValues = (String) request.getData().get("parentNodeValues");
    String[] parentRowValues = WebUtils.deserializeJSON(parentNodeValues, String[].class);

    int depth = parentRowValues.length;

    ServiceResponse<BIReportData> response;

    ServiceResponse<BIReportUser> biReportUserResponse = OPFEngine.RegistryService
            .readBIReportUser(biReportUserId);
    if (biReportUserResponse.isSuccess()) {
        BIReportData biReport = new BIReportData();

        BIReportUser biReportUser = biReportUserResponse.getItem();
        List<BIReportUserField> biReportUserFields = biReportUser.getFields();

        Map<Long, BIReportField> entityBIReportFieldMap = new HashMap<Long, BIReportField>();
        for (BIReportField biReportField : biReportUser.getReport().getFields()) {
            if (biReportField.getField() == null) {
                entityBIReportFieldMap.put(biReportField.getEntity().getId(), biReportField);
            }/*from www  .j av a 2  s  .  c o m*/
        }

        Integer columnIndex = 0;
        List<BIReportColumn> biReportColumns = new ArrayList<BIReportColumn>();

        Map<BIReportField, BIReportLocation> groupedBIReportFields = new LinkedHashMap<BIReportField, BIReportLocation>();

        Map<Integer, BIReportRow> verticalColumnsMapping = new HashMap<Integer, BIReportRow>();
        List<BIReportUserField> verticalBIReportUserFields = getFieldsByLocation(biReportUserFields,
                BIReportLocation.VERTICAL);
        Entity previousEntity = null;
        for (int i = 0; i < verticalBIReportUserFields.size(); i++) {
            BIReportUserField biReportUserField = verticalBIReportUserFields.get(i);
            BIReportField biReportField = biReportUserField.getField();
            Entity entity = biReportField.getEntity();

            if (previousEntity == null || !previousEntity.getId().equals(entity.getId())) {
                String columnName = entity.getName();
                BIReportField entityBIReportField = entityBIReportFieldMap.get(entity.getId());
                if (entityBIReportField != null) {
                    columnName = StringUtils.defaultIfEmpty(entityBIReportField.getDisplayName(), columnName);
                }

                BIReportColumn biReportColumn = new BIReportColumn();
                biReportColumn.setName(columnName);
                biReportColumn.setType(BIReportLocation.VERTICAL);
                biReportColumn.setColumnIndex(columnIndex);
                biReportColumn.setExpanded(biReportUserField.isExpanded());
                biReportColumn.setUnShift(i);
                biReportColumns.add(biReportColumn);

                columnIndex++;
                previousEntity = entity;
            }

            BIReportRow biReportRow = new BIReportRow();
            biReportRow.setColumnIndex(biReportColumns.size() - 1);
            biReportRow.setExpanded(biReportUserField.isExpanded());
            verticalColumnsMapping.put(i, biReportRow);
            groupedBIReportFields.put(biReportField, BIReportLocation.VERTICAL);
        }
        biReport.setCountOfLevels(verticalColumnsMapping.size());

        List<BIReportUserField> horizontalBIReportUserFields = getFieldsByLocation(biReportUserFields,
                BIReportLocation.HORIZONTAL);
        Map<Entity, List<BIReportField>> entityBIReportFields = new LinkedHashMap<Entity, List<BIReportField>>();
        for (BIReportUserField biReportUserField : horizontalBIReportUserFields) {
            BIReportField biReportField = biReportUserField.getField();
            Entity entity = biReportField.getEntity();

            List<BIReportField> biReportFields = entityBIReportFields.get(entity);
            if (biReportFields == null) {
                biReportFields = new ArrayList<BIReportField>();
                entityBIReportFields.put(entity, biReportFields);
            }
            biReportFields.add(biReportField);
            groupedBIReportFields.put(biReportField, BIReportLocation.HORIZONTAL);
        }

        List<BIReportUserField> measureBIReportUserFields = getFieldsByLocation(biReportUserFields,
                BIReportLocation.MEASURE);
        for (BIReportUserField biReportUserField : measureBIReportUserFields) {
            BIReportField biReportField = biReportUserField.getField();
            groupedBIReportFields.put(biReportField, BIReportLocation.MEASURE);
        }

        String biReportUserFilter = biReportUser.getFilter();
        biReport.setFilter(biReportUserFilter);
        List<List<SearchQuery>> filterSearchQueries = WebUtils.deserializeJSON(biReportUserFilter, List.class,
                List.class, SearchQuery.class);

        BIReportUserField measureBIReportUserField = measureBIReportUserFields.get(0);
        BIReportField measureBIReportField = measureBIReportUserField.getField();
        Entity factEntity = measureBIReportField.getEntity();
        String factDomainClassName = FormattingUtils.classFormatting(factEntity.getName());
        String factModelClassName = factEntity.getPath() + ".model." + factDomainClassName + "Model";

        Class<?> factModelClass = Class.forName(factModelClassName);

        List<Object[]> globalList = null;
        for (Map.Entry<Entity, List<BIReportField>> entry : entityBIReportFields.entrySet()) {
            Entity entity = entry.getKey();
            List<BIReportField> biReportFields = entry.getValue();

            String domainClassName = FormattingUtils.classFormatting(entity.getName());
            String modelClassName = entity.getPath() + ".model." + domainClassName + "Model";
            String storeClassName = entity.getPath() + ".store.Basic" + domainClassName + "Store";
            IAbstractStore store = OpenFlameSpringContext.getBean(storeClassName);

            List<List<SearchQuery>> columnSearchQueryList = new ArrayList<List<SearchQuery>>();
            List<SortField> sortFields = new ArrayList<SortField>();
            ProjectionList projectionList = Projections.projectionList();
            for (BIReportField biReportField : biReportFields) {
                Field field = biReportField.getField();
                String fieldName = FormattingUtils.fieldModelFormatting(field.getName());
                projectionList.add(Projections.property(fieldName));
                sortFields.add(new SortField(fieldName, SortOrder.ASC));

                String fkDimFieldName = findDimFieldName(factModelClass, modelClassName);
                for (List<SearchQuery> searchQueries : filterSearchQueries) {
                    List<SearchQuery> columnSearchQueries = new ArrayList<SearchQuery>();
                    for (SearchQuery searchQuery : searchQueries) {
                        String searchField = searchQuery.getField();
                        String[] fieldNames = searchField.split("\\.");
                        if (fieldNames.length == 2 && fieldNames[0].equals(fkDimFieldName)) {
                            SearchQuery columnSearchQuery = new SearchQuery(fieldNames[1],
                                    searchQuery.getOperation(), searchQuery.getValue());
                            columnSearchQueries.add(columnSearchQuery);
                        }
                    }
                    if (columnSearchQueries.isEmpty()) {
                        SearchQuery alwaysTrueSearchQuery = new SearchQuery();
                        columnSearchQueries.add(alwaysTrueSearchQuery);
                    }
                    columnSearchQueryList.add(columnSearchQueries);
                }
            }

            Paging paging = new Paging(null, null, sortFields);
            List<Object[]> objectsList;
            if (biReportFields.size() > 1) {
                objectsList = store.advancedSearchWithProjection(columnSearchQueryList,
                        Projections.distinct(projectionList), null, paging);
            } else {
                objectsList = new ArrayList<Object[]>();
                List<Object> objectList = store.advancedSearchWithProjection(columnSearchQueryList,
                        Projections.distinct(projectionList), null, paging);
                for (Object object : objectList) {
                    objectsList.add(new Object[] { object });
                }
            }
            if (globalList == null) {
                globalList = objectsList;
            } else {
                List<Object[]> mergedList = new ArrayList<Object[]>();
                for (Object[] globalObjects : globalList) {
                    for (Object[] objects : objectsList) {
                        Object[] mergedObjects = ArrayUtils.addAll(globalObjects, objects);
                        mergedList.add(mergedObjects);
                    }
                }
                globalList = mergedList;
            }

        }

        List<BIReportField> measureBIReportFields = getFieldsByLocation(groupedBIReportFields,
                BIReportLocation.MEASURE);
        Map<ArrayKey, Integer> horizontalColumnMapping = generateHorizontalColumns(globalList, biReportColumns,
                measureBIReportFields, columnIndex);
        if (depth == 0) {
            biReport.setColumns(biReportColumns);
        }

        int countOfExpandedChildren = 1;
        int countOfVerticalColumns = verticalColumnsMapping.size();
        for (int i = depth; i < countOfVerticalColumns; i++) {
            BIReportRow verticalBIReportRow = verticalColumnsMapping.get(i);
            if (verticalBIReportRow.isExpanded()) {
                countOfExpandedChildren++;
            } else {
                break;
            }
        }

        ProjectionList projectionList = Projections.projectionList();
        List<SortField> sortFields = new ArrayList<SortField>();
        Map<String, String> aliases = new HashMap<String, String>();

        int positionOfLastExpandedColumns = depth + countOfExpandedChildren - 1;
        List<SearchQuery> childrenFilterSearchQueries = new ArrayList<SearchQuery>();
        List<BIReportField> verticalBIReportFields = getFieldsByLocation(groupedBIReportFields,
                new BIReportLocation[] { BIReportLocation.VERTICAL });
        for (int i = 0; i < verticalBIReportFields.size(); i++) {
            BIReportField biReportField = verticalBIReportFields.get(i);
            Entity dimEntity = biReportField.getEntity();
            String dimDomainClassName = FormattingUtils.classFormatting(dimEntity.getName());
            String dimModelClassName = dimEntity.getPath() + ".model." + dimDomainClassName + "Model";

            String fkDimFieldName = findDimFieldName(factModelClass, dimModelClassName);
            aliases.put(fkDimFieldName, fkDimFieldName);

            Field field = biReportField.getField();
            String fieldName = FormattingUtils.fieldModelFormatting(field.getName());
            String aliasedFieldName = fkDimFieldName + "." + fieldName;
            projectionList.add(Projections.groupProperty(aliasedFieldName));

            sortFields.add(new SortField(aliasedFieldName, SortOrder.ASC));

            if (positionOfLastExpandedColumns >= i + 1) {
                if (depth >= i + 1) {
                    SearchQuery searchQuery = new SearchQuery();
                    searchQuery.setField(aliasedFieldName);
                    searchQuery.setOperation(QueryOperation.EQUALS);
                    searchQuery.setValue(parentRowValues[i]);
                    childrenFilterSearchQueries.add(searchQuery);
                }
            } else {
                break;
            }
        }

        if (filterSearchQueries.isEmpty()) {
            filterSearchQueries.add(childrenFilterSearchQueries);
        } else {
            for (List<SearchQuery> searchQueries : filterSearchQueries) {
                for (SearchQuery childrenFilterSearchQuery : childrenFilterSearchQueries) {
                    searchQueries.add(childrenFilterSearchQuery);
                }
            }
        }

        List<BIReportField> horizontalBIReportFields = getFieldsByLocation(groupedBIReportFields,
                new BIReportLocation[] { BIReportLocation.HORIZONTAL });
        for (BIReportField biReportField : horizontalBIReportFields) {
            Entity dimEntity = biReportField.getEntity();
            String dimDomainClassName = FormattingUtils.classFormatting(dimEntity.getName());
            String dimModelClassName = dimEntity.getPath() + ".model." + dimDomainClassName + "Model";

            String fkDimFieldName = findDimFieldName(factModelClass, dimModelClassName);
            aliases.put(fkDimFieldName, fkDimFieldName);

            Field field = biReportField.getField();
            String fieldName = FormattingUtils.fieldModelFormatting(field.getName());
            String aliasedFieldName = fkDimFieldName + "." + fieldName;
            projectionList.add(Projections.groupProperty(aliasedFieldName));

            sortFields.add(new SortField(aliasedFieldName, SortOrder.ASC));
        }

        for (BIReportField biReportField : measureBIReportFields) {
            Field field = biReportField.getField();
            String fieldName = FormattingUtils.fieldModelFormatting(field.getName());
            projectionList.add(Projections.count(fieldName));
        }

        String storeClassName = factEntity.getPath() + ".store.Basic" + factDomainClassName + "Store";
        IAbstractStore store = OpenFlameSpringContext.getBean(storeClassName);

        List<Object[]> dataList = store.advancedSearchWithProjection(filterSearchQueries,
                Projections.distinct(projectionList), aliases, new Paging(null, null, sortFields));

        int countOfHorizontalColumns = horizontalBIReportUserFields.size();
        int countOfMeasureColumns = measureBIReportUserFields.size();

        List<BIReportRow> biReportRows = generateRows(dataList, verticalColumnsMapping, horizontalColumnMapping,
                countOfVerticalColumns, countOfHorizontalColumns, countOfMeasureColumns, depth,
                countOfExpandedChildren);
        biReport.setRows(biReportRows);

        response = new ServiceResponse<BIReportData>(biReport, "BI Report data", true);
    } else {
        response = new ServiceResponse<BIReportData>(
                "Could not find user configuration of BIReport by ID: " + biReportUserId, false);
    }

    return response;
}

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

License:Apache License

@Override
@Transactional(readOnly = true)/*  w  ww .  jav a2 s.c  o 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 ww  .  j a  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://w  w w.  j  av a 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;
    }

    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://ww  w . ja va2  s  . com
        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:net.longfalcon.newsj.persistence.hibernate.BinaryDAOImpl.java

License:Open Source License

@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public List<MatchedReleaseQuery> findBinariesByProcStatAndTotalParts(int procstat) {
    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Binary.class);
    criteria.add(Restrictions.eq("procStat", procstat));
    criteria.setProjection(Projections.projectionList().add(Projections.rowCount(), "numberOfBinaries")
            .add(Projections.groupProperty("groupId").as("group"))
            .add(Projections.groupProperty("reqId").as("reqId"))
            .add(Projections.groupProperty("relName").as("releaseName"))
            .add(Projections.groupProperty("relTotalPart").as("releaseTotalParts"))
            .add(Projections.groupProperty("fromName").as("fromName")));
    criteria.setResultTransformer(Transformers.aliasToBean(MatchedReleaseQuery.class));
    return criteria.list();
}

From source file:net.longfalcon.newsj.persistence.hibernate.ReleaseDAOImpl.java

License:Open Source License

/**
 *
 * @return List of Object[] = {Category,long}
 */// www  .j  a  v a2 s .c o m
@Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public List<Object[]> findRecentlyAddedReleaseCategories() {
    Date oneWeekAgo = DateTime.now().minusWeeks(1).toDate();
    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Release.class);
    criteria.add(Restrictions.ge("addDate", oneWeekAgo));
    criteria.setProjection(
            Projections.projectionList().add(Projections.groupProperty("category").as("category"))
                    .add(Projections.count("id").as("count")));
    criteria.addOrder(Order.desc("count"));
    criteria.setMaxResults(10);

    return criteria.list();
}