Example usage for org.hibernate.criterion Projections projectionList

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

Introduction

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

Prototype

public static ProjectionList projectionList() 

Source Link

Document

Create a new projection list.

Usage

From source file:models.Account.java

public Accounts getRowByAccountName(String accountName) {
    Accounts acc = null;//  w w  w . j  a v a2  s  .  c o m
    Session session;
    session = DatabaseUtil.getSessionFactory().openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        Criteria criteria = session.createCriteria(Accounts.class);
        criteria.setMaxResults(1);
        ProjectionList projList = Projections.projectionList();
        projList.add(Projections.property("id").as("id"));
        projList.add(Projections.property("no").as("no"));
        projList.add(Projections.property("accountName").as("accountName"));
        criteria.setProjection(projList);
        criteria.addOrder(Order.asc("no"));
        criteria.add(Restrictions.ilike("accountName", accountName));
        criteria.setResultTransformer(Transformers.aliasToBean(Accounts.class));
        acc = (Accounts) criteria.uniqueResult();
        tx.commit();
    } catch (HibernateException ex) {
        if (tx != null) {
            tx.rollback();
        }
    } finally {
        session.close();
    }

    return acc;
}

From source file:models.BeginningBalance.java

public DefaultTableModel getList(String Year, Integer offset, final Integer limit) {
    DefaultTableModel model = new DefaultTableModel() {
        @Override//from   w  w  w  .j  av a  2  s  . c o  m
        public String getColumnName(int column) {
            return TABLE_COLUMN_NAME[column];
        }

        @Override
        public int getColumnCount() {
            return TABLE_COLUMN_NAME.length;
        }

        @Override
        public boolean isCellEditable(int row, int column) {
            return false; //To change body of generated methods, choose Tools | Templates.
        }

    };

    //set to list all data
    Session session = DatabaseUtil.getSessionFactory().openSession();
    Transaction tx = null;
    try {
        Integer i = (limit * (offset - 1));
        tx = session.beginTransaction();
        Criteria criteria;
        criteria = session.createCriteria(Accounts.class);
        ProjectionList projList = Projections.projectionList();
        projList.add(Projections.property("id").as("id"));
        projList.add(Projections.property("no").as("no"));
        projList.add(Projections.property("name").as("name"));
        projList.add(Projections.property("type").as("type"));
        criteria.setProjection(projList);
        criteria.addOrder(Order.asc("no"));
        criteria.setFirstResult(i);
        criteria.setMaxResults(i + limit);
        criteria.setResultTransformer(Transformers.aliasToBean(Accounts.class));
        List list = criteria.list();
        Iterator it = list.iterator();
        while (it.hasNext()) {
            i++;
            Accounts acc;
            acc = (Accounts) it.next();

            BeginningBalance modelJoin = new BeginningBalance();
            BeginningBalances bb;
            bb = modelJoin.getRowByIdAndYear(acc.getId(), Year);
            model.addRow(new Object[] { i, acc.getNo(), acc.getName(), acc.getType(),
                    bb == null ? 0.00 : Format.currency(bb.getDebet(), 2),
                    bb == null ? 0.00 : Format.currency(bb.getCredit(), 2), acc.getId() });
        }
        tx.commit();

    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        }
    } finally {
        session.close();
    }

    return model;
}

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;/*from w w w  . ja v a 2 s  .c  om*/
                }
            } catch (Exception ew) {
                ew.printStackTrace();
            }
        }
        if (bFound) {
            regionsSet.add(item.getProjectRegions());
        }
    }
    return regionsSet;

}

From source file:monasca.thresh.infrastructure.persistence.hibernate.AlarmSqlImpl.java

License:Apache License

@SuppressWarnings("unchecked")
private List<Alarm> findAlarms(@Nonnull final LookupHelper lookupHelper) {
    StatelessSession session = null;//  ww  w  .  j  a v a 2s.co  m

    try {
        session = sessionFactory.openStatelessSession();
        final Criteria criteria = lookupHelper.apply(session.createCriteria(AlarmDb.class, "a")
                .createAlias("a.subAlarms", "sa").createAlias("a.alarmDefinition", "ad")
                .add(Restrictions.isNull("ad.deletedAt")).addOrder(Order.asc("a.id"))
                .setProjection(Projections.projectionList().add(Projections.property("a.id"))
                        .add(Projections.property("a.alarmDefinition.id")).add(Projections.property("a.state"))
                        .add(Projections.alias(Projections.property("sa.id"), "sub_alarm_id"))
                        .add(Projections.property("sa.expression"))
                        .add(Projections.property("sa.subExpression.id"))
                        .add(Projections.property("ad.tenantId")))
                .setReadOnly(true));
        assert criteria != null;
        return this.createAlarms(session, (List<Object[]>) criteria.list(), lookupHelper);
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

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

License:Open Source License

@Override
@Transactional(readOnly = true)/* w  w w. j av a  2  s.  c om*/
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.chrisrichardson.foodToGo.domain.hibernate.HibernateOrderRepositoryImpl.java

License:Apache License

List findOrdersUsingScroll() {
    List orders = (List) getHibernateTemplate().execute(new HibernateCallback() {

        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria x = session.createCriteria(Order.class);
            x.setProjection(Projections.projectionList().add(Property.forName("id"))
                    .add(Property.forName("deliveryAddress.street1")));
            List result = x.list();
            Assert.assertFalse(result.isEmpty());
            Object[] first = (Object[]) result.get(0);
            Assert.assertEquals(2, first.length);
            return result;
        }// w w  w  .  java2 s .com
    });
    return orders;
}

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);
            }/*  w w w.ja v a  2s  .c om*/
        }

        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.AbstractStore.java

License:Apache License

@Override
@Transactional(readOnly = true)/*from  w  w w  .  j a  v  a 2s.c o m*/
public <I extends Serializable> Map<I, ID> searchKeys(String key, Collection<I> values) {
    if (!values.isEmpty()) {
        Criteria criteria = getSession().createCriteria(getClazz());
        criteria.add(generateInRestriction(key, values));
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property(key));
        projectionList.add(Projections.id());

        criteria.setProjection(projectionList);

        List<Object[]> list = (List<Object[]>) criteria.list();

        Map<I, ID> search = new HashMap<I, ID>(list.size());
        for (Object[] item : list) {
            search.put((I) item[0], (ID) item[1]);
        }
        return search;
    }
    return Collections.emptyMap();
}

From source file:net.firejack.platform.core.store.BaseTreeStore.java

License:Apache License

@Override
@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/* w  w  w  . ja v  a 2  s . c o m*/
public List<Object[]> findAllIdAndParentId() {
    final O example = instantiate();
    return getHibernateTemplate().executeFind(new HibernateCallback<List<Object[]>>() {
        @Override
        public List<Object[]> doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(example.getClass());
            ProjectionList proList = Projections.projectionList();
            proList.add(Projections.property("id"));
            proList.add(Projections.property("parent.id"));
            criteria.setProjection(proList);
            return criteria.list();
        }
    });
}

From source file:net.firejack.platform.core.store.ProjectionStore.java

License:Apache License

@PostConstruct
public void init() {
    this.clazz = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    this.view = (Class<V>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1];
    this.aliases = new HashMap<String, String>();
    this.fieldPaths = new HashMap<String, String>();
    this.projection = Projections.projectionList();
    this.index = 0;

    List<Field> fields = ClassUtils.getFields(view, new ArrayList<Field>());
    for (Field field : fields) {
        findAlias(getClazz(), field);//from   ww w.j  a v a  2 s  . c om
    }
}