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) 

Source Link

Document

Add a projection to this list of projections

Usage

From source file:ke.co.mspace.nonsmppmanager.service.SMSOutServiceImpl.java

@Override
public Map<String, Object> smsOutGroupBy(String user, String startDate, String endDate) {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.getTransaction().begin();// ww w . ja v  a  2 s  .  c om
    Criteria criteria = session.createCriteria(SMSOut.class);

    /*
     * This is where the report is going to come from
     * projectionList.add(Projections.sqlGroupProjection("YEAR(time_submitted) as yearSubmitted, MONTHNAME(STR_TO_DATE(MONTH(time_submitted), '%m')) as monthSubmitted, time_submitted as timeSubmitted", "timeSubmitted", new String[] { "monthSubmitted", "timeSubmitted", "yearSubmitted" }, new Type[] { StandardBasicTypes.STRING }));
     */
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.sqlGroupProjection(
            "YEAR(time_submitted) as yearSubmitted, MONTHNAME(STR_TO_DATE(MONTH(time_submitted), '%m')) as timeSubmitted",
            "yearSubmitted, timeSubmitted", new String[] { "yearSubmitted", "timeSubmitted" },
            new Type[] { StandardBasicTypes.LONG, StandardBasicTypes.STRING }));

    projectionList.add(Projections.rowCount());

    criteria.setProjection(projectionList); //This is added
    criteria.add(Restrictions.eq("user", user));
    criteria.addOrder(Order.asc("timeSubmitted"));
    criteria.add(Restrictions.between("timeSubmitted", startDate, endDate));

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

    for (Object[] aResult : results) {
        System.out.println("the Object: " + Arrays.deepToString(aResult));
        System.out.println("Year : " + aResult[0] + " Month : " + aResult[1] + " No. Sent : " + aResult[2]);
    }

    Map<String, Object> mapResult = new HashMap<>();
    mapResult.put("result", results);
    mapResult.put("noSMS", 20);

    session.getTransaction().commit();
    return mapResult;
}

From source file:ke.co.mspace.nonsmppmanager.service.SMSOutServiceImpl.java

@Override
public Map<String, String> smsOutGroupByUser(String startDate, String endDate) {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.getTransaction().begin();/*from   w  w  w  .java2s.c  om*/
    Criteria criteria = session.createCriteria(SMSOut.class);

    Calendar startAnotherDate = null;
    Calendar endAnotherDate = null;
    try {
        startAnotherDate = stringToCalendar(startDate);
        endAnotherDate = stringToCalendar(endDate);
    } catch (ParseException ex) {
        Logger.getLogger(SMSOutServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
    }

    /*
     * This is where the report is going to come from
     * projectionList.add(Projections.sqlGroupProjection("YEAR(time_submitted) as yearSubmitted, MONTHNAME(STR_TO_DATE(MONTH(time_submitted), '%m')) as monthSubmitted, time_submitted as timeSubmitted", "timeSubmitted", new String[] { "monthSubmitted", "timeSubmitted", "yearSubmitted" }, new Type[] { StandardBasicTypes.STRING }));
     */
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.sqlGroupProjection(
            "YEAR(time_submitted) as yearSubmitted, MONTHNAME(STR_TO_DATE(MONTH(time_submitted), '%m')) as timeSubmitted, user as userName",
            "yearSubmitted, timeSubmitted, userName",
            new String[] { "yearSubmitted", "timeSubmitted", "userName" },
            new Type[] { StandardBasicTypes.LONG, StandardBasicTypes.STRING, StandardBasicTypes.STRING }));
    projectionList.add(Projections.rowCount());
    criteria.setProjection(projectionList);
    criteria.addOrder(Order.asc("timeSubmitted"));
    criteria.add(Restrictions.between("timeSubmitted", startDate, endDate));

    List<Object[]> results = criteria.list();
    Map<String, Integer> json = new LinkedHashMap<>();
    Set<String> months = new LinkedHashSet<>();
    Set<String> users = new LinkedHashSet<>();

    while (startAnotherDate.before(endAnotherDate)) {
        String month = startAnotherDate.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
        int year = startAnotherDate.get(Calendar.YEAR);
        for (Object[] aResult : results) {
            json.put(year + "-" + month + "-" + aResult[2], 0);
            months.add(aResult[0] + "-" + aResult[1]);
            users.add(String.valueOf(aResult[2]));
        }

        startAnotherDate.add(Calendar.MONTH, 1);
    }

    String madeUp = null;
    for (String aString : json.keySet()) {
        for (Object[] aResult : results) {
            madeUp = aResult[0] + "-" + aResult[1] + "-" + aResult[2];
            if (aString.equals(madeUp)) {
                json.put(aString, Integer.parseInt(String.valueOf(aResult[3])));
            }
        }

    }
    StringBuilder builder = new StringBuilder();

    for (String aMonth : months) {
        builder.append("[");
        builder.append('"');
        builder.append(aMonth.substring(0, 8));
        builder.append('"');
        builder.append(',');
        for (String aString : json.keySet()) {
            if (aString.contains(aMonth)) {

                builder.append(json.get(aString));
                builder.append(",");
            }

        }
        builder.append("]");
        if (builder.length() > 0) {

            if (builder.charAt(builder.lastIndexOf("]") - 1) == ',') {
                builder.deleteCharAt(builder.lastIndexOf("]") - 1);
            }
        }
        builder.append(",");
    }
    if (builder.length() > 0) {

        builder.deleteCharAt(builder.lastIndexOf(","));

    }
    StringBuilder userBuilder = new StringBuilder();
    userBuilder.append("[");
    for (String aUser : users) {

        userBuilder.append('"');
        userBuilder.append(aUser);
        userBuilder.append('"');
        userBuilder.append(',');
    }
    userBuilder.append(']');
    if (userBuilder.length() > 0) {

        if (userBuilder.charAt(userBuilder.lastIndexOf("]") - 1) == ',') {
            userBuilder.deleteCharAt(userBuilder.lastIndexOf("]") - 1);
        }
    }

    System.out.println("A new builder : " + builder.toString());
    System.out.println("The Users : " + userBuilder.toString());

    Map<String, String> mapResult = new HashMap<>();
    mapResult.put("data", builder.toString());
    mapResult.put("users", userBuilder.toString());

    session.getTransaction().commit();
    return mapResult;
}

From source file:models.Account.java

public Accounts getRowByAccountName(String accountName) {
    Accounts acc = null;/*from ww  w . j  av a 2s .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// w  ww  .  j a v  a2  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.  j a  v  a2s . co  m
                }
            } catch (Exception ew) {
                ew.printStackTrace();
            }
        }
        if (bFound) {
            regionsSet.add(item.getProjectRegions());
        }
    }
    return regionsSet;

}

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  w w  w  . j  av a  2s.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.AbstractStore.java

License:Apache License

@Override
@Transactional(readOnly = true)/*from  w  ww .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)/*  ww  w .  ja v a2s  . co 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.registry.EntityStore.java

License:Apache License

@Override
@SuppressWarnings("unchecked")
@Transactional(readOnly = true)/*w w w  . j  av a  2s.c o  m*/
public List<Object[]> findAllIdAndExtendedId() {
    return getHibernateTemplate().executeFind(new HibernateCallback<List<Object[]>>() {
        @Override
        public List<Object[]> doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(EntityModel.class);
            criteria.add(Restrictions.isNotNull("extendedEntity.id"));
            ProjectionList proList = Projections.projectionList();
            proList.add(Projections.property("id"));
            proList.add(Projections.property("extendedEntity.id"));
            criteria.setProjection(proList);
            return criteria.list();
        }
    });
}

From source file:net.firejack.platform.core.store.registry.resource.ResourceStore.java

License:Apache License

@Override
@Transactional//from  w  ww .j  a va  2s  .co  m
public Integer setMaxResourceVersion(final R resource) {
    Integer maxVersion = getHibernateTemplate().execute(new HibernateCallback<Integer>() {
        public Integer doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(AbstractResourceVersionModel.class);
            criteria.add(Restrictions.eq("resource.id", resource.getId()));
            criteria.add(Restrictions.le("version", resource.getLastVersion()));

            ProjectionList projectionList = Projections.projectionList();
            projectionList.add(Projections.max("version"));
            criteria.setProjection(projectionList);
            return (Integer) criteria.uniqueResult();
        }
    });

    resource.setLastVersion(maxVersion);
    if (resource.getPublishedVersion() != null && resource.getPublishedVersion() > maxVersion) {
        resource.setPublishedVersion(maxVersion);
    }
    update(resource);
    return maxVersion;
}