Example usage for org.hibernate.criterion Projections count

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

Introduction

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

Prototype

public static CountProjection count(String propertyName) 

Source Link

Document

A property value count projection

Usage

From source file:org.opensingular.flow.test.TestDAO.java

License:Apache License

public Integer countHistoty() {
    return ((Number) getSession().createCriteria(TaskInstanceHistoryEntity.class)
            .setProjection(Projections.count("cod")).uniqueResult()).intValue();
}

From source file:org.rebioma.server.services.OccurrenceDbImpl.java

License:Apache License

@SuppressWarnings("unchecked")
private List<Occurrence> find(OccurrenceQuery query, Set<OccurrenceFilter> filters, User user, int tryCount)
        throws Exception {
    log.debug("finding Occurrence instances by query.");
    try {//w  ww  .  jav a 2s. c om
        Session session = ManagedSession.createNewSessionAndTransaction();
        List<Occurrence> results = null;
        Criteria criteria = session.createCriteria(Occurrence.class);
        OccurrenceFilter userReviewFilter = null;
        OccurrenceFilter myreviewPublicFilter = null;
        ResultFilter resultFilter = query.getResultFilter();
        for (OccurrenceFilter filter : filters) {
            if (filter.column.equals(filter.getPropertyName("userReviewed"))) {
                userReviewFilter = filter;
                if (resultFilter != null) {
                    if (resultFilter == ResultFilter.PUBLIC) {
                        myreviewPublicFilter = new OccurrenceFilter("public = true");
                    } else if (resultFilter == ResultFilter.PRIVATE) {
                        myreviewPublicFilter = new OccurrenceFilter("public = false");
                    }
                    resultFilter = null;
                }
            }
        }
        if (myreviewPublicFilter != null) {
            filters.add(myreviewPublicFilter);
        }
        filters.remove(userReviewFilter);
        OccurrenceFilter idsFilter = null;
        if (userReviewFilter != null) {
            Boolean reviewed = null;
            if (userReviewFilter.operator == Operator.EQUAL) {
                reviewed = (Boolean) userReviewFilter.getValue();
            }
            List<Integer> occIds = recordReviewDb.getRecordReviewOccIds(user.getId(), reviewed);
            System.out.println(occIds.size());
            if (occIds.isEmpty()) {
                occIds.add(0);
            }
            idsFilter = new OccurrenceFilter("id", Operator.IN, occIds);
            filters.add(idsFilter);
        }
        //filtre sur les identifiants d'occurrence 
        if (query.getOccurrenceIdsFilter() != null && !query.getOccurrenceIdsFilter().isEmpty()) {
            OccurrenceFilter occIdsFilter = new OccurrenceFilter("id", Operator.IN,
                    query.getOccurrenceIdsFilter());
            filters.add(occIdsFilter);
        }
        log.info("find filters: " + addCreterionByFilters(criteria, user, filters, resultFilter, tryCount));
        if (userReviewFilter != null) {
            filters.remove(idsFilter);
            filters.add(userReviewFilter);
        }
        if (myreviewPublicFilter != null) {
            filters.remove(myreviewPublicFilter);
        }
        List<OrderKey> orderingMap = query.getOrderingMap();
        log.info("order map = " + orderingMap);
        if (query.isCountTotalResults()) {
            criteria.setFirstResult(0);
            criteria.setProjection(Projections.count("id"));
            Integer count = (Integer) criteria.uniqueResult();
            if (count != null) {
                query.setCount(count);
            }
        } else {
            query.setCount(-1);
        }
        // Sets the start, limit, and order by accepted species:
        criteria.setFirstResult(query.getStart());
        if (query.getLimit() != OccurrenceQuery.UNLIMITED) {
            criteria.setMaxResults(query.getLimit());
        }
        criteria.setProjection(null);
        /*for (OrderKey orderKey : orderingMap) {
          String property = orderKey.getAttributeName();
          String occAttribute = getOccurrencePropertyName(property);
          if (orderKey.isAsc()) {
            log.info("order by property " + occAttribute + " in ascending order");
            criteria.addOrder(Order.asc(occAttribute));
          } else {
            log.info("order by property " + occAttribute + " in descending order");
            criteria.addOrder(Order.desc(occAttribute));
          }
        }*/
        criteria.addOrder(Order.asc("id"));
        results = criteria.list();

        // filters.addAll(removedFilters);
        log.debug("find by example successful, result size: " + results.size());
        ManagedSession.commitTransaction(session);
        return results;
    } catch (RuntimeException re) {
        log.error("find by example failed", re);
        re.printStackTrace();
        throw re;
    } catch (Exception e) {
        log.error("unexpected error: ", e);
        e.printStackTrace();
        throw e;
    }

}

From source file:org.rebioma.server.services.OccurrenceDbImpl.java

License:Apache License

private List<Integer> findIds(OccurrenceQuery query, Set<OccurrenceFilter> filters, User user, int tryCount)
        throws Exception {
    log.debug("finding Occurrence instances by query.");
    try {//  w w w  . ja  va2  s  . c o m
        Session session = ManagedSession.createNewSessionAndTransaction();
        List<Integer> results = null;
        Criteria criteria = session.createCriteria(Occurrence.class).setProjection(Projections.id());
        OccurrenceFilter userReviewFilter = null;
        for (OccurrenceFilter filter : filters) {
            if (filter.column.equals(filter.getPropertyName("userReviewed"))) {
                userReviewFilter = filter;
            }
        }
        filters.remove(userReviewFilter);
        List<OrderKey> orderingMap = query.getOrderingMap();
        for (OrderKey orderKey : orderingMap) {
            String property = orderKey.getAttributeName();
            if (orderKey.isAsc()) {
                //criteria.addOrder(Order.asc(getOccurrencePropertyName(property)));
            } else {
                //criteria.addOrder(Order.desc(getOccurrencePropertyName(property)));
            }
        }
        // Sets the start, limit, and order by accepted species:
        criteria.setFirstResult(query.getStart());
        if (query.getLimit() != OccurrenceQuery.UNLIMITED) {
            criteria.setMaxResults(query.getLimit());
        }
        OccurrenceFilter idsFilter = null;
        if (userReviewFilter != null) {
            Boolean reviewed = null;
            if (userReviewFilter.operator == Operator.EQUAL) {
                reviewed = (Boolean) userReviewFilter.getValue();
            }
            List<Integer> occIds = recordReviewDb.getRecordReviewOccIds(user.getId(), reviewed);
            System.out.println(occIds.size());
            if (occIds.isEmpty()) {
                occIds.add(0);
            }
            idsFilter = new OccurrenceFilter("id", Operator.IN, occIds);
            filters.add(idsFilter);
        }
        log.info("find filters: "
                + addCreterionByFilters(criteria, user, filters, query.getResultFilter(), tryCount));
        if (userReviewFilter != null) {
            filters.remove(idsFilter);
            filters.add(userReviewFilter);
        }
        results = criteria.list();
        if (query.isCountTotalResults()) {
            criteria.setFirstResult(0);
            criteria.setProjection(Projections.count("id"));
            Integer count = (Integer) criteria.uniqueResult();
            if (count != null) {
                query.setCount(count);
            }
        } else {
            query.setCount(-1);
        }
        // filters.addAll(removedFilters);
        log.debug("find by example successful, result size: " + results.size());
        ManagedSession.commitTransaction(session);
        return results;
    } catch (RuntimeException re) {
        log.error("find by example failed", re);
        re.printStackTrace();
        throw re;
    } catch (Exception e) {
        log.error("unexpected error: ", e);
        e.printStackTrace();
        throw e;
    }
}

From source file:org.rebioma.server.services.UserDbImpl.java

License:Apache License

public UserQuery findByQuery(UserQuery query, Integer loggedInUserId) throws Exception {
    log.debug("finding User instances by query.");
    Session session = ManagedSession.createNewSessionAndTransaction();
    try {//  w  w  w.j  ava 2s . com
        Criteria criteria = session.createCriteria(User.class);
        List<OrderKey> orderingMap = query.getOrderingMap();
        if (orderingMap == null) {
            criteria.addOrder(Order.asc(getUserPropertyName("firstName")));
        } else {
            for (OrderKey orderKey : orderingMap) {
                String property = orderKey.getAttributeName();
                if (orderKey.isAsc()) {
                    criteria.addOrder(Order.asc(getUserPropertyName(property)));
                } else {
                    criteria.addOrder(Order.desc(getUserPropertyName(property)));
                }
            }
        }
        criteria.setFirstResult(query.getStart());
        criteria.setMaxResults(query.getLimit());
        if (!query.isUsersCollaboratorsOnly()) {
            criteria.add(Restrictions.ne("id", loggedInUserId));
        }
        Set<UserFilter> filters = QueryFilter.getFilters(query.getSearchFilters(), UserFilter.class);
        for (UserFilter filter : filters) {
            switch (filter.getOperator()) {
            case EQUAL:
                criteria.add(Restrictions.eq(filter.column, filter.value));
                break;
            case CONTAIN:
                criteria.add(Restrictions.ilike(filter.column, filter.value.toString(), MatchMode.ANYWHERE));
                break;
            case IN:
                criteria.add(Restrictions.in(filter.column, filter.getIntCollectionValues()));
                break;
            }
        }
        List<User> users = criteria.list();
        query.setResults(users);
        if (query.isCountTotalResults()) {
            criteria.setFirstResult(0);
            criteria.setProjection(Projections.count("id"));
            Integer count = (Integer) criteria.uniqueResult();
            if (count != null) {
                query.setCount(count);
            }
        } else {
            query.setCount(-1);
        }
        ManagedSession.commitTransaction(session);
    } catch (Exception e) {
        ManagedSession.rollbackTransaction(session);
        e.printStackTrace();
        throw e;
    }
    return query;

}

From source file:org.remus.marketplace.scheduling.GenerateStatisticsJob.java

License:Open Source License

private void createClickStatistics(Integer id, File folder, Node node, Calendar instance) {
    Map<Date, Integer> map = new HashMap<Date, Integer>();
    for (int i = 0, n = month; i < n; i++) {
        Calendar instance2 = Calendar.getInstance();
        instance2.setTime(new Date());
        instance2.add(Calendar.MONTH, i * -1);
        map.put(instance2.getTime(), 0);
    }/*from   www . j a v a2 s  . c  om*/
    AdvancedCriteria criteria = new AdvancedCriteria()
            .addRestriction(Restrictions.between(Clickthrough.TIME, instance.getTime(), new Date()))
            .addRestriction(Restrictions.eq(Clickthrough.NODE, node));
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.count(Clickthrough.NODE));

    projectionList
            .add(Projections.sqlGroupProjection("month({alias}.time) as month, year({alias}.time) as year",
                    "month({alias}.time), year({alias}.time)", new String[] { "month", "year" },
                    new Type[] { Hibernate.INTEGER, Hibernate.INTEGER }));
    criteria.setProjection(projectionList);

    List<Object> query = clickthroughDao.query(criteria);
    for (Object object : query) {
        Object[] data = (Object[]) object;
        Integer count = (Integer) data[0];
        Integer month = (Integer) data[1];
        Integer year = (Integer) data[2];
        Set<Date> keySet = map.keySet();
        for (Date date : keySet) {
            Calendar instance2 = Calendar.getInstance();
            instance2.setTime(date);
            if (instance2.get(Calendar.YEAR) == year && instance2.get(Calendar.MONTH) == month - 1) {
                map.put(date, count);
            }
        }

    }

    DefaultCategoryDataset data = new DefaultCategoryDataset();
    List<Date> keySet = new ArrayList<Date>(map.keySet());
    Collections.sort(keySet, new Comparator<Date>() {

        @Override
        public int compare(Date o1, Date o2) {
            return o1.compareTo(o2);
        }
    });
    for (Date date : keySet) {
        Integer integer = map.get(date);
        Calendar instance2 = Calendar.getInstance();
        instance2.setTime(date);
        int year = instance2.get(Calendar.YEAR);
        int month = instance2.get(Calendar.MONTH) + 1;
        data.addValue(integer, "Column1", month + "-" + year);
    }

    JFreeChart createBarChart = ChartFactory.createBarChart("Clicks", "Month", "", data,
            PlotOrientation.VERTICAL, false, false, false);

    File file = new File(folder, "clicks_" + id + ".png");
    if (file.exists()) {
        file.delete();
    }
    try {
        ChartUtilities.saveChartAsPNG(file, createBarChart, 500, 300);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

From source file:org.remus.marketplace.scheduling.GenerateStatisticsJob.java

License:Open Source License

private void createDownloadStatistics(Integer id, File folder, Node node, Calendar instance) {
    Map<Date, Integer> map = new HashMap<Date, Integer>();
    for (int i = 0, n = month; i < n; i++) {
        Calendar instance2 = Calendar.getInstance();
        instance2.setTime(new Date());
        instance2.add(Calendar.MONTH, i * -1);
        map.put(instance2.getTime(), 0);
    }/*from w  w  w. j  a v  a 2  s.c om*/
    AdvancedCriteria criteria = new AdvancedCriteria()
            .addRestriction(Restrictions.between(Download.TIME, instance.getTime(), new Date()))
            .addRestriction(Restrictions.eq(Download.NODE, node));
    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.count(Download.NODE));

    projectionList
            .add(Projections.sqlGroupProjection("month({alias}.time) as month, year({alias}.time) as year",
                    "month({alias}.time), year({alias}.time)", new String[] { "month", "year" },
                    new Type[] { Hibernate.INTEGER, Hibernate.INTEGER }));
    criteria.setProjection(projectionList);

    List<Object> query = downloadDao.query(criteria);
    for (Object object : query) {
        Object[] data = (Object[]) object;
        Integer count = (Integer) data[0];
        Integer month = (Integer) data[1];
        Integer year = (Integer) data[2];
        Set<Date> keySet = map.keySet();
        for (Date date : keySet) {
            Calendar instance2 = Calendar.getInstance();
            instance2.setTime(date);
            if (instance2.get(Calendar.YEAR) == year && instance2.get(Calendar.MONTH) == month - 1) {
                map.put(date, count);
            }
        }

    }

    DefaultCategoryDataset data = new DefaultCategoryDataset();
    List<Date> keySet = new ArrayList<Date>(map.keySet());
    Collections.sort(keySet, new Comparator<Date>() {

        @Override
        public int compare(Date o1, Date o2) {
            return o1.compareTo(o2);
        }
    });
    for (Date date : keySet) {
        Integer integer = map.get(date);
        Calendar instance2 = Calendar.getInstance();
        instance2.setTime(date);
        int year = instance2.get(Calendar.YEAR);
        int month = instance2.get(Calendar.MONTH) + 1;
        data.addValue(integer, "Column1", month + "-" + year);
    }

    JFreeChart createBarChart = ChartFactory.createBarChart("Downloads", "Month", "", data,
            PlotOrientation.VERTICAL, false, false, false);

    File file = new File(folder, "download_" + id + ".png");
    if (file.exists()) {
        file.delete();
    }
    try {
        ChartUtilities.saveChartAsPNG(file, createBarChart, 500, 300);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

From source file:org.sakaiproject.scorm.dao.hibernate.AttemptDaoImpl.java

License:Educational Community License

public int count(final long contentPackageId, final String learnerId) {
    HibernateCallback hcb = new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            Criteria criteria = session.createCriteria(Attempt.class)
                    .add(Restrictions.eq("contentPackageId", contentPackageId))
                    .add(Restrictions.eq("learnerId", learnerId)).setProjection(Projections.count("id"));
            return criteria.uniqueResult();
        }//from  w  ww .  j  a v  a 2 s. c  o  m
    };

    Object result = getHibernateTemplate().execute(hcb);

    int r = 0;
    if (result != null) {
        if (result instanceof Number) {
            r = ((Number) result).intValue();
        }
    }
    return r;
}

From source file:org.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionAccessImpl.java

License:Apache License

public void executeCount() {
    final Criteria criteria = createCriteria();
    prepareCache(criteria);/*from w w w .j  av a  2s. c o  m*/

    // Prepare where clause
    addSubCriterias(criteria);
    addConditionalCriteria(criteria);

    addResultTransformer(criteria);

    if (realDistinctRoot) {
        criteria.setProjection(Projections.countDistinct(Criteria.ROOT_ALIAS + ".id"));
    } else {
        criteria.setProjection(Projections.count(Criteria.ROOT_ALIAS + ".id"));
    }
    rowCount = (Long) criteria.uniqueResult();
}

From source file:org.sculptor.framework.accessimpl.jpahibernate.JpaHibFindByConditionStatAccessImpl.java

License:Apache License

private void addStatProjection(Criteria criteria) throws PersistenceException {
    ProjectionList projList = Projections.projectionList();
    projList.add(Projections.rowCount());
    for (ColumnStatRequest<T> column : statRequest) {
        if (column.isFlag(COUNT)) {
            projList.add(Projections.count(column.getColumn().getName()));
        }//from ww w. jav a2  s  .  c om
        if (column.isFlag(MIN)) {
            projList.add(Projections.min(column.getColumn().getName()));
        }
        if (column.isFlag(MAX)) {
            projList.add(Projections.max(column.getColumn().getName()));
        }
        if (column.isFlag(AVERAGE)) {
            projList.add(Projections.avg(column.getColumn().getName()));
        }
        if (column.isFlag(SUM)) {
            projList.add(Projections.sum(column.getColumn().getName()));
        }
        if (column.isFlag(GROUP_BY_VAL)) {
            projList.add(Projections.groupProperty(column.getColumn().getName()));
        }

        // Time groups
        for (ColumnStatType flag : TIME_GROUPS) {
            if (column.isFlag(flag)) {
                projList.add(makeTimeGroupBy(column, flag, criteria));
            }
        }
    }

    criteria.setProjection(projList);
}

From source file:org.xchain.namespaces.hibernate.test.TestCriteriaEntityPermission.java

License:Apache License

@Test
public void testGetCriteria() throws Exception {
    Session session = HibernateLifecycle.getCurrentSession();
    IdentityManager.instance().loggedIn(new UsernamePrincipal(userList.get(0).getUsername()));
    Transaction t = session.beginTransaction();
    Criteria notesCriteria = session.createCriteria(UserNote.class);
    notesCriteria.setProjection(Projections.projectionList().add(Projections.count("text")));
    CriteriaEntityPermission p = new CriteriaEntityPermission(EntityOperation.LOAD, UserNote.class,
            notesCriteria, null, null, null, null);
    assertEquals(p.getCriteria(), notesCriteria);
    t.rollback();// w w w.  j a va 2  s.  c om
}