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:org.openmrs.module.inventory.db.hibernate.HibernateInventoryDAO.java

License:Open Source License

public List<InventoryStoreDrugTransactionDetail> listViewStockBalance(Integer storeId, Integer categoryId,
        String drugName, String fromDate, String toDate, boolean isExpiry, int min, int max)
        throws DAOException {
    Criteria criteria = sessionFactory.getCurrentSession()
            .createCriteria(InventoryStoreDrugTransactionDetail.class, "transactionDetail")
            .createAlias("transactionDetail.transaction", "transaction")
            .createAlias("transactionDetail.drug", "drugAlias")
            .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    ProjectionList proList = Projections.projectionList();
    proList.add(Projections.groupProperty("drug")).add(Projections.groupProperty("formulation"))
            .add(Projections.sum("currentQuantity")).add(Projections.sum("quantity"))
            .add(Projections.sum("issueQuantity"));
    criteria.add(Restrictions.eq("transaction.store.id", storeId));
    if (categoryId != null) {
        criteria.add(Restrictions.eq("drugAlias.category.id", categoryId));
    }/*  w  w w.ja  va2 s . c  o m*/
    if (!StringUtils.isBlank(drugName)) {
        criteria.add(Restrictions.like("drugAlias.name", "%" + drugName + "%"));
    }
    if (!StringUtils.isBlank(fromDate) && StringUtils.isBlank(toDate)) {
        String startFromDate = fromDate + " 00:00:00";
        String endFromDate = fromDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startFromDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endFromDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listSubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    } else if (StringUtils.isBlank(fromDate) && !StringUtils.isBlank(toDate)) {
        String startToDate = toDate + " 00:00:00";
        String endToDate = toDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startToDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endToDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listSubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    } else if (!StringUtils.isBlank(fromDate) && !StringUtils.isBlank(toDate)) {
        String startToDate = fromDate + " 00:00:00";
        String endToDate = toDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startToDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endToDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listInventorySubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    }
    if (isExpiry) {
        criteria.add(Restrictions.lt("transactionDetail.dateExpiry", new Date()));
    } else {
        criteria.add(Restrictions.ge("transactionDetail.dateExpiry", new Date()));
    }

    /*
     * Sagar Bele : 13-08-2012 Bug #330 ( [INVENTORY]-error in Current
     * quantity of pharmacy )
     */
    criteria.add(Restrictions.ge("transactionDetail.currentQuantity", 0));

    criteria.setProjection(proList);
    if (max > 0) {
        criteria.setFirstResult(min).setMaxResults(max);
    }
    List<Object> lst = criteria.list();
    if (lst == null || lst.size() == 0) {
        return null;
    }
    List<InventoryStoreDrugTransactionDetail> list = new ArrayList<InventoryStoreDrugTransactionDetail>();
    for (int i = 0; i < lst.size(); i++) {
        Object[] row = (Object[]) lst.get(i);
        InventoryStoreDrugTransactionDetail tDetail = new InventoryStoreDrugTransactionDetail();
        tDetail.setDrug((InventoryDrug) row[0]);
        tDetail.setFormulation((InventoryDrugFormulation) row[1]);
        tDetail.setCurrentQuantity((Integer) row[2]);
        tDetail.setQuantity((Integer) row[3]);
        tDetail.setIssueQuantity((Integer) row[4]);
        list.add(tDetail);
    }

    return list;
}

From source file:org.openmrs.module.inventory.db.hibernate.HibernateInventoryDAO.java

License:Open Source License

@Override
public List<InventoryStoreItemTransactionDetail> listStoreItemAvaiable(Integer storeId,
        Collection<Integer> items, Collection<Integer> specifications) throws DAOException {
    Criteria criteria = sessionFactory.getCurrentSession()
            .createCriteria(InventoryStoreItemTransactionDetail.class, "transactionDetail")
            .createAlias("transactionDetail.transaction", "transaction")
            .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    ProjectionList proList = Projections.projectionList();
    proList.add(Projections.groupProperty("item")).add(Projections.groupProperty("specification"))
            .add(Projections.sum("currentQuantity"));
    criteria.add(Restrictions.eq("transaction.store.id", storeId));
    if (CollectionUtils.isNotEmpty(items)) {
        criteria.createCriteria("transactionDetail.item", Criteria.INNER_JOIN)
                .add(Restrictions.in("id", items));
    }//from   w  ww  . j a va 2s . co  m
    criteria.add(Restrictions.eq("transaction.typeTransaction", ActionValue.TRANSACTION[0]));
    if (CollectionUtils.isNotEmpty(specifications)) {
        criteria.createCriteria("transactionDetail.specification", Criteria.LEFT_JOIN)
                .add(Restrictions.in("id", specifications));
    }
    criteria.setProjection(proList);
    List<Object> lst = criteria.list();
    if (lst == null || lst.size() == 0) {
        return null;
    }
    List<InventoryStoreItemTransactionDetail> list = new ArrayList<InventoryStoreItemTransactionDetail>();
    // System.out.println("lst size: "+lst.size());
    for (int i = 0; i < lst.size(); i++) {
        Object[] row = (Object[]) lst.get(i);
        InventoryStoreItemTransactionDetail tDetail = new InventoryStoreItemTransactionDetail();
        tDetail.setItem((InventoryItem) row[0]);
        tDetail.setSpecification((InventoryItemSpecification) row[1]);
        tDetail.setCurrentQuantity((Integer) row[2]);
        list.add(tDetail);
        // System.out.println("I: "+i+" item: "+tDetail.getItem().getName()+" specification: "+(tDetail.getSpecification()
        // != null ?tDetail.getSpecification().getName() : " null ")
        // +" quantity: "+tDetail.getCurrentQuantity());
    }
    // System.out.println("list available: "+list);
    return list;
}

From source file:org.openmrs.module.inventory.db.hibernate.HibernateInventoryDAO.java

License:Open Source License

@Override
public List<InventoryStoreItemTransactionDetail> listStoreItemViewStockBalance(Integer storeId,
        Integer categoryId, String itemName, String fromDate, String toDate, int min, int max)
        throws DAOException {
    Criteria criteria = sessionFactory.getCurrentSession()
            .createCriteria(InventoryStoreItemTransactionDetail.class, "transactionDetail")
            .createAlias("transactionDetail.transaction", "transaction")
            .createAlias("transactionDetail.item", "itemAlias")
            .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    ProjectionList proList = Projections.projectionList();
    proList.add(Projections.groupProperty("item")).add(Projections.groupProperty("specification"))
            .add(Projections.sum("currentQuantity")).add(Projections.sum("quantity"))
            .add(Projections.sum("issueQuantity"));
    criteria.add(Restrictions.eq("transaction.store.id", storeId));
    if (categoryId != null) {
        criteria.add(Restrictions.eq("itemAlias.subCategory.id", categoryId));
    }//  w  w  w  .  j  av a  2  s .  c om
    if (!StringUtils.isBlank(itemName)) {
        criteria.add(Restrictions.like("itemAlias.name", "%" + itemName + "%"));
    }
    if (!StringUtils.isBlank(fromDate) && StringUtils.isBlank(toDate)) {
        String startFromDate = fromDate + " 00:00:00";
        String endFromDate = fromDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startFromDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endFromDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listSubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    } else if (StringUtils.isBlank(fromDate) && !StringUtils.isBlank(toDate)) {
        String startToDate = toDate + " 00:00:00";
        String endToDate = toDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startToDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endToDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listSubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    } else if (!StringUtils.isBlank(fromDate) && !StringUtils.isBlank(toDate)) {
        String startToDate = fromDate + " 00:00:00";
        String endToDate = toDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startToDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endToDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listInventorySubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    }

    criteria.setProjection(proList);
    if (max > 0) {
        criteria.setFirstResult(min).setMaxResults(max);
    }
    List<Object> lst = criteria.list();
    if (lst == null || lst.size() == 0) {
        return null;
    }
    List<InventoryStoreItemTransactionDetail> list = new ArrayList<InventoryStoreItemTransactionDetail>();
    for (int i = 0; i < lst.size(); i++) {
        Object[] row = (Object[]) lst.get(i);
        InventoryStoreItemTransactionDetail tDetail = new InventoryStoreItemTransactionDetail();
        tDetail.setItem((InventoryItem) row[0]);
        tDetail.setSpecification((InventoryItemSpecification) row[1]);
        tDetail.setCurrentQuantity((Integer) row[2]);
        tDetail.setQuantity((Integer) row[3]);
        tDetail.setIssueQuantity((Integer) row[4]);
        list.add(tDetail);
    }

    return list;
}

From source file:org.openmrs.module.inventory.db.hibernate.HibernateInventoryDAO.java

License:Open Source License

@Override
public Integer countStoreItemViewStockBalance(Integer storeId, Integer categoryId, String itemName,
        String fromDate, String toDate) throws DAOException {
    Criteria criteria = sessionFactory.getCurrentSession()
            .createCriteria(InventoryStoreItemTransactionDetail.class, "transactionDetail")
            .createAlias("transactionDetail.transaction", "transaction")
            .createAlias("transactionDetail.item", "itemAlias");

    ProjectionList proList = Projections.projectionList();
    proList.add(Projections.groupProperty("item")).add(Projections.groupProperty("specification"))
            .add(Projections.sum("currentQuantity")).add(Projections.sum("quantity"))
            .add(Projections.sum("issueQuantity"));
    criteria.add(Restrictions.eq("transaction.store.id", storeId));
    if (categoryId != null) {
        criteria.add(Restrictions.eq("itemAlias.subCategory.id", categoryId));
    }//ww w.  j av  a2  s.  c om
    if (!StringUtils.isBlank(itemName)) {
        criteria.add(Restrictions.like("itemAlias.name", "%" + itemName + "%"));
    }
    if (!StringUtils.isBlank(fromDate) && StringUtils.isBlank(toDate)) {
        String startFromDate = fromDate + " 00:00:00";
        String endFromDate = fromDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startFromDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endFromDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listSubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    } else if (StringUtils.isBlank(fromDate) && !StringUtils.isBlank(toDate)) {
        String startToDate = toDate + " 00:00:00";
        String endToDate = toDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startToDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endToDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listSubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    } else if (!StringUtils.isBlank(fromDate) && !StringUtils.isBlank(toDate)) {
        String startToDate = fromDate + " 00:00:00";
        String endToDate = toDate + " 23:59:59";
        try {
            criteria.add(Restrictions.and(
                    Restrictions.ge("transactionDetail.createdOn", formatter.parse(startToDate)),
                    Restrictions.le("transactionDetail.createdOn", formatter.parse(endToDate))));
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("listInventorySubStoreIndent>>Error convert date: " + e.toString());
            e.printStackTrace();
        }
    }
    criteria.setProjection(proList);
    List<Object> list = criteria.list();
    Number total = 0;
    if (!CollectionUtils.isEmpty(list)) {
        total = (Number) list.size();
    }
    return total.intValue();
}

From source file:org.opennms.netmgt.dao.hibernate.AccessPointDaoHibernate.java

License:Open Source License

/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override/*from  w w w.  j a  v a2 s  .c  om*/
public List<String> findDistinctPackagesLike(final String pkg) {
    final HibernateCallback<List<String>> callback = new HibernateCallback<List<String>>() {
        @Override
        public List<String> doInHibernate(final Session session) throws SQLException {
            return session.createCriteria(OnmsAccessPoint.class)
                    .setProjection(Projections.groupProperty("pollingPackage"))
                    .add(Restrictions.like("pollingPackage", pkg)).list();
        }
    };
    return (List<String>) getHibernateTemplate().executeFind(callback);
}

From source file:org.remus.marketplace.controller.admin.MarketAdminController.java

License:Open Source License

@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {

    List<Market> find = marketDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

    List<Object> query = nodeDao.query(new AdvancedCriteria()
            .setProjection(Projections.projectionList().add(Projections.groupProperty(Node.ID), "cat_node")
                    .add(Projections.alias(Projections.rowCount(), "catCount")))
            .addSubCriteria(new AdvancedCriteria().setAssosication(Node.CATEGORIES)));

    List<Node> orphans = new ArrayList<Node>();
    List<Integer> nonOrphan = new ArrayList<Integer>();
    for (Object object : query) {
        nonOrphan.add((Integer) ((Object[]) object)[0]);
    }/*from  w  ww.  jav a  2s  .  co  m*/
    if (nonOrphan.size() == 0) {
        orphans = nodeDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);
    } else {
        orphans = nodeDao.find(
                new AdvancedCriteria().addRestriction(Restrictions.not(Restrictions.in(Node.ID, nonOrphan))));
    }
    List<Category> categories = categoryDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

    List<Platform> platforms = platformDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

    List<Node> nodes = nodeDao.find(AdvancedCriteria.EMPTY_READONLY_INSTANCE);

    Map<String, Object> response = new HashMap<String, Object>();
    response.put("markets", find);
    response.put("orphans", orphans);
    response.put("platforms", platforms);
    response.put("categories", categories);
    response.put("solutions", nodes);

    return new ModelAndView("admin/markets", response);

}

From source file:org.remus.marketplace.controller.IndexController.java

License:Open Source License

@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {

    List<Node> featured = nodeDao.find(
            new AdvancedCriteria().addRestriction(Restrictions.eq(Node.FOUNDATIONMEMBER, 1)).setMaxResults(10));

    List<Object> popular = nodeDao.query(new AdvancedCriteria().setMaxResults(10)
            .setProjection(Projections.projectionList().add(Projections.groupProperty(Node.ID), "dl_node")
                    .add(Projections.alias(Projections.rowCount(), "downloadCount")))
            .addSubCriteria(new AdvancedCriteria().setAssosication(Node.DOWNLOADS)

                    .addOrder(Order.desc("downloadCount"))));
    List<Popular> popularResponse = new ArrayList<IndexController.Popular>();
    for (Object object : popular) {
        Popular popular2 = new Popular();
        popular2.setCount((Integer) ((Object[]) object)[1]);
        popular2.setId((Integer) ((Object[]) object)[0]);
        popular2.setName(nodeDao.findById(popular2.getId()).getName());
        popularResponse.add(popular2);/* www . ja v  a  2s.c  o  m*/
    }

    Map<String, Object> response = new HashMap<String, Object>();
    response.put("featured", featured);
    response.put("popular", popularResponse);
    return new ModelAndView("index", response);

}

From source file:org.remus.marketplace.servlets.PopularListing.java

License:Open Source License

@Override
public void handleRequest(HttpServletRequest arg0, HttpServletResponse arg1)
        throws ServletException, IOException {
    arg1.setContentType("text/xml");
    try {/* ww w  .  j  a  v a 2  s.c o m*/
        JAXBContext newInstance = JAXBContext.newInstance(Marketplace.class,
                org.remus.marketplace.xml.Market.class);

        Marketplace marketplace = new Marketplace();

        List<Object> findByCategoriesId = nodeDao.query(new AdvancedCriteria().setMaxResults(10)
                .setProjection(Projections.projectionList().add(Projections.groupProperty(Node.ID), "dl_node")
                        .add(Projections.alias(Projections.rowCount(), "downloadCount")))
                .addSubCriteria(new AdvancedCriteria().setAssosication(Node.DOWNLOADS)

                        .addOrder(Order.desc("downloadCount"))));
        boolean favoriteMode = arg0.getParameter("favorites") != null
                && Boolean.parseBoolean(arg0.getParameter("favorites"));
        Favorite favorite = null;
        Popular popular = null;
        if (favoriteMode) {
            favorite = new Favorite();
            favorite.setCount(findByCategoriesId.size());
        } else {
            popular = new Popular();
            popular.setCount(findByCategoriesId.size());
        }
        for (Object findById : findByCategoriesId) {
            Object[] rs = (Object[]) findById;
            int parseInt = Integer.parseInt(rs[0].toString());
            Node findById2 = nodeDao.findById(parseInt);
            org.remus.marketplace.xml.Node node = XMLBuilder.buildNode(serverPrefix, findById2);
            if (favoriteMode) {
                favorite.getNode().add(node);
            } else {
                popular.getNode().add(node);
            }
        }
        if (favoriteMode) {
            marketplace.setFavorites(favorite);
        } else {
            marketplace.setPopular(popular);
        }
        Marshaller createMarshaller = newInstance.createMarshaller();
        XMLSerializer xmlSerializer = XMLBuilder.getXMLSerializer(arg1.getOutputStream());
        createMarshaller.marshal(marketplace, xmlSerializer.asContentHandler());
    } catch (JAXBException e) {
        throw new ServletException(e);
    }

}

From source file:org.sakaiproject.contentreview.dao.ContentReviewItemDao.java

License:Educational Community License

@SuppressWarnings("unchecked")
public List<ContentReviewItem> findByProviderGroupedBySiteAndTask(Integer providerId) {

    Criteria c = sessionFactory.getCurrentSession().createCriteria(ContentReviewItem.class)
            .add(Restrictions.eq("providerId", providerId)).setProjection(Projections.projectionList()
                    .add(Projections.groupProperty("siteId")).add(Projections.groupProperty("taskId")));

    return c.list();
}

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  w w  w  .j  a v a  2s  .  co m
        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);
}