List of usage examples for org.hibernate.criterion Projections groupProperty
public static PropertyProjection groupProperty(String propertyName)
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)); }