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:gr.abiss.calipso.domain.ItemSearch.java

License:Open Source License

public List<DetachedCriteria> getGroupByCriteria() {
    List<DetachedCriteria> criteriaList = new LinkedList();
    List<ColumnHeading> optionHeadings = getGroupByHeadings();
    if (CollectionUtils.isNotEmpty(optionHeadings)) {
        for (ColumnHeading heading : optionHeadings) {
            DetachedCriteria criteria = this.getCriteria();
            criteria.setProjection(/*from w w  w .j a va  2s .  c o m*/
                    Projections.projectionList().add(Projections.groupProperty(heading.getNameText()))
                            .add(Projections.rowCount(), "rowCount"))
                    .addOrder(Order.desc("rowCount"));
            criteriaList.add(criteria);

        }
    }
    return criteriaList;
}

From source file:gr.abiss.calipso.hibernate.HibernateDao.java

License:Open Source License

@Override
public Map<String, List> findItemGroupByTotals(ItemSearch itemSearch) {
    Map<String, List> results = new HashMap<String, List>();
    List<ColumnHeading> optionHeadings = itemSearch.getGroupByHeadings();
    if (CollectionUtils.isNotEmpty(optionHeadings)) {
        DetachedCriteria criteria = itemSearch.getCriteria();
        for (ColumnHeading heading : optionHeadings) {
            criteria.setProjection(/*from  www. j a  va2 s  .  co  m*/
                    Projections.projectionList().add(Projections.groupProperty(heading.getNameText()))
                            .add(Projections.rowCount(), "rowCount"))
                    .addOrder(Order.desc("rowCount"));
            List queryResults = getHibernateTemplate().findByCriteria(criteria);
            results.put(heading.getNameText(), queryResults);

        }
    }
    return results;
}

From source file:grails.orm.HibernateCriteriaBuilder.java

License:Apache License

/**
 * Adds a projection that allows the criteria's result to be grouped by a property
 *
 * @param propertyName The name of the property
 * @param alias The alias to use//  w  w w .jav a  2 s .  co  m
 */
public void groupProperty(String propertyName, String alias) {
    final PropertyProjection proj = Projections.groupProperty(calculatePropertyName(propertyName));
    addProjectionToList(proj, alias);
}

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

protected void processJoinPath(Criteria criteria, List<JoinPath> joinPaths, ProjectionList projectionList) {
    boolean isDistinctRoot = true;
    if (joinPaths != null && !joinPaths.isEmpty()) {
        for (JoinPath joinPath : joinPaths) {
            if (joinPath.joinType == JoinType.INNER_JOIN)
                criteria.createCriteria(joinPath.path, joinPath.alias, CriteriaSpecification.INNER_JOIN);
            else if (joinPath.joinType == JoinType.LEFT_JOIN)
                criteria.createCriteria(joinPath.path, joinPath.alias, CriteriaSpecification.LEFT_JOIN);
            else if (joinPath.joinType == JoinType.NON_DISTINCT_ROOT_ENTITY)
                isDistinctRoot = false;/* w w  w .  ja v a 2  s  . c om*/
            else if (joinPath.joinType == JoinType.GROUPING_FIELD) {
                if (projectionList == null) {
                    projectionList = Projections.projectionList();
                }
                projectionList.add(Projections.groupProperty(joinPath.alias));
            } else
                criteria.setFetchMode(joinPath.path, FetchMode.SELECT);

        }
    }
    if (isDistinctRoot)
        criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
}

From source file:io.milton.cloud.server.apps.admin.WebsiteAccessReport.java

License:Open Source License

@Override
public GraphData runReport(Organisation org, Website website, Date start, Date finish, JsonResult jsonResult) {
    Session session = SessionManager.session();
    Criteria crit = session.createCriteria(AccessLog.class)
            .setProjection(Projections.projectionList().add(Projections.min("reqDate"))
                    .add(Projections.rowCount()).add(Projections.groupProperty("reqYear"))
                    .add(Projections.groupProperty("reqMonth")).add(Projections.groupProperty("reqDay"))
                    .add(Projections.groupProperty("reqHour")));
    if (start != null) {
        crit.add(Restrictions.ge("reqDate", start));
    }/*w  ww .java  2s. c o m*/
    if (finish != null) {
        crit.add(Restrictions.le("reqDate", finish));
    }
    if (website != null) {
        crit.add(Restrictions.le("website", website));
    }
    if (org != null) {
        crit.add(Restrictions.le("organisation", org));
    }
    List list = crit.list();
    List<TimeDataPointBean> dataPoints = new ArrayList<>();
    for (Object oRow : list) {
        Object[] arr = (Object[]) oRow;
        Date date = (Date) arr[0];
        Integer count = (Integer) arr[1];
        TimeDataPointBean b = new TimeDataPointBean();
        b.setDate(date.getTime());
        b.setValue(count);
        dataPoints.add(b);
    }
    GraphData graphData = new GraphData();
    graphData.setData(dataPoints);
    String[] labels = { "Hits" };
    graphData.setLabels(labels);
    graphData.setXkey("date");
    String[] ykeys = { "value" };
    graphData.setYkeys(ykeys);
    return graphData;
}

From source file:io.milton.cloud.server.apps.reporting.SiteActivityReportPage.java

License:Open Source License

private void searchDaily(Map<String, String> params, OutputStream out) throws IOException {
    Date start;//from  w  ww  .  j a  va2s .  co  m
    Date finish;
    try {
        String sStart = params.get("startDate");
        start = parseDate(sStart);
        System.out.println("start: " + start);
        String sFinish = params.get("finishDate");
        finish = parseDate(sFinish);
        System.out.println("finish: " + finish);
    } catch (ParseException parseException) {
        JsonResult jsonResult = new JsonResult(false, "Invalid date: " + parseException.getMessage());
        jsonResult.write(out);
        return;
    }
    Session session = SessionManager.session();
    Criteria crit = session.createCriteria(AccessLog.class)
            .setProjection(Projections.projectionList().add(Projections.min("reqDate"))
                    .add(Projections.rowCount()).add(Projections.groupProperty("reqYear"))
                    .add(Projections.groupProperty("reqMonth")).add(Projections.groupProperty("reqDay"))
                    .add(Projections.groupProperty("reqHour")));
    if (start != null) {
        crit.add(Restrictions.ge("reqDate", start));
    }
    if (finish != null) {
        crit.add(Restrictions.le("reqDate", finish));
    }
    List list = crit.list();
    List<TimeDataPointBean> dataPoints = new ArrayList<>();
    for (Object oRow : list) {
        Object[] arr = (Object[]) oRow;
        Date date = (Date) arr[0];
        Integer count = (Integer) arr[1];
        TimeDataPointBean b = new TimeDataPointBean();
        b.setDate(date.getTime());
        b.setValue(count);
        dataPoints.add(b);
    }
    JsonResult jsonResult = new JsonResult(true);
    jsonResult.setData(dataPoints);
    jsonResult.write(out);
}

From source file:io.milton.cloud.server.apps.signup.GroupSignupsReport.java

License:Open Source License

@Override
public GraphData runReport(Organisation org, Website website, Date start, Date finish, JsonResult jsonResult) {
    log.info("runReport: " + start + " - " + finish);
    Session session = SessionManager.session();
    Criteria crit = session.createCriteria(SignupLog.class)
            .setProjection(Projections.projectionList().add(Projections.min("reqDate"))
                    .add(Projections.rowCount()).add(Projections.groupProperty("groupEntity"))
                    .add(Projections.groupProperty("reqYear")).add(Projections.groupProperty("reqMonth"))
                    .add(Projections.groupProperty("reqDay")).add(Projections.groupProperty("reqHour")));
    //        if (start != null) {
    //            crit.add(Restrictions.ge("reqDate", start));
    //        }//from  w ww  .  j ava  2s . c om
    //        if (finish != null) {
    //            crit.add(Restrictions.le("reqDate", finish));
    //        }
    //        if( website != null ) {
    //            crit.add(Restrictions.le("website", website));
    //        }
    //        if( org != null ) {
    //            crit.add(Restrictions.le("organisation", org));
    //        }
    List list = crit.list();
    Set<String> groupsInSeries = new HashSet<>();
    List<Map<String, Object>> dataPoints = new ArrayList<>();
    Map<Long, Map<String, Object>> mapOfDataPointsByTime = new HashMap<>();
    log.info("results: " + list.size());
    for (Object oRow : list) {
        Object[] arr = (Object[]) oRow;
        log.info("got row: " + arr);
        Date date = (Date) arr[0];
        Long time = date.getTime();
        Integer count = (Integer) arr[1];
        Group group = (Group) arr[2];

        groupsInSeries.add(group.getName()); // keep a set of group names for labels

        Map<String, Object> dataPoint = mapOfDataPointsByTime.get(time);
        if (dataPoint == null) {
            dataPoint = new HashMap<>();
            dataPoint.put("date", time);
            mapOfDataPointsByTime.put(time, dataPoint);
            dataPoints.add(dataPoint);
        }
        dataPoint.put(group.getName(), count);

    }
    GraphData graphData = new GraphData();
    graphData.setData(dataPoints);
    String[] labels = { "Signups" };
    graphData.setLabels(labels);
    graphData.setXkey("date");
    String[] ykeys = new String[groupsInSeries.size()];
    groupsInSeries.toArray(ykeys);
    graphData.setYkeys(ykeys);
    log.info("data points: " + dataPoints.size());
    return graphData;
}

From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java

License:Apache License

@Test
@Transactional(readOnly = true)/*from  w ww .  ja v  a2s.c o m*/
public void groupingTest() {

    DetachedCriteria dc = DetachedCriteria.forClass(Employee.class);

    dc.createAlias("company", "c").createAlias("empGrade", "eg")
            .setProjection(Projections.projectionList().add(Projections.groupProperty("c.code"))
                    .add(Projections.groupProperty("eg.code")).add(Projections.rowCount()));

    List loaded = dc.getExecutableCriteria(hibernateDao.getSession()).list();
    log.info("Group by = [{}]", loaded);
}

From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java

License:Apache License

@Test
@Transactional(readOnly = true)//  w  ww.j  av a2 s.com
public void subqueriesTest() {

    DetachedCriteria memberSizeDc = DetachedCriteria.forClass(DepartmentMember.class);
    memberSizeDc.setProjection(Projections.projectionList().add(Projections.groupProperty("department"))
            .add(Projections.rowCount(), "count")).addOrder(Order.desc("count"));

    Object[] members = (Object[]) memberSizeDc.getExecutableCriteria(hibernateDao.getSession()).setMaxResults(1)
            .uniqueResult();

    if (members != null) {
        Long departmentId = (Long) members[0];
        DetachedCriteria dc = DetachedCriteria.forClass(Department.class);
        dc.add(Restrictions.eq("id", departmentId));
        dc.getExecutableCriteria(UnitOfWorks.getCurrentSession()).list();
    }
}

From source file:kr.debop4j.access.test.repository.CriteriaSampleTest.java

License:Apache License

@Test
@Transactional(readOnly = true)/*  w w  w.j  a  va2s . c  o m*/
public void subqueriesTest2() {
    DetachedCriteria memberSizeDc = DetachedCriteria.forClass(DepartmentMember.class);
    memberSizeDc.setProjection(Projections.projectionList().add(Projections.groupProperty("department"))
            .add(Projections.rowCount(), "count"));

    DetachedCriteria dc = DetachedCriteria.forClass(Department.class);

    dc.add(Subqueries.propertyEq("id", memberSizeDc));

}