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:com.floreantpos.model.dao.TicketDAO.java

License:Open Source License

public List<Ticket> getTicketsWithSpecificFields(String... fields) {
    Session session = null;//from www.  j a va 2 s.com
    Criteria criteria = null;
    User currentUser = Application.getCurrentUser();
    boolean filterUser = !currentUser.isAdministrator() || !currentUser.isManager();
    try {
        session = createNewSession();
        criteria = session.createCriteria(Ticket.class);
        ProjectionList projectionList = Projections.projectionList();
        for (String field : fields) {
            projectionList.add(Projections.property(field));
        }
        criteria.add(Restrictions.eq(Ticket.PROP_CLOSED, Boolean.FALSE));
        if (filterUser) {
            criteria.createAlias(Ticket.PROP_OWNER, "u");
            criteria.add(Restrictions.eq("u.userId", currentUser.getUserId()));
        }
        ResultTransformer transformer = new ResultTransformer() {

            public Object transformTuple(Object[] row, String[] arg1) {
                Ticket ticket = new Ticket();
                ticket.setId(Integer.valueOf("" + row[0]));
                ticket.setDueAmount(Double.valueOf("" + row[1]));
                return ticket;
            }

            public List transformList(List arg0) {
                return arg0;
            }
        };
        criteria.setProjection(projectionList).setResultTransformer(transformer);
        return criteria.list();
    } finally {
        closeSession(session);
    }
}

From source file:com.floreantpos.report.service.ReportService.java

License:Open Source License

public MenuUsageReport getMenuUsageReport(Date fromDate, Date toDate) {
    GenericDAO dao = new GenericDAO();
    MenuUsageReport report = new MenuUsageReport();
    Session session = null;/*from  w  w w. j a v a2 s  .c  o  m*/

    try {

        session = dao.getSession();

        Criteria criteria = session.createCriteria(MenuCategory.class);
        List<MenuCategory> categories = criteria.list();
        MenuCategory miscCategory = new MenuCategory();
        miscCategory.setName(com.floreantpos.POSConstants.MISC_BUTTON_TEXT);
        categories.add(miscCategory);

        for (MenuCategory category : categories) {
            criteria = session.createCriteria(TicketItem.class, "item"); //$NON-NLS-1$
            criteria.createCriteria("ticket", "t"); //$NON-NLS-1$ //$NON-NLS-2$
            ProjectionList projectionList = Projections.projectionList();
            projectionList.add(Projections.sum(TicketItem.PROP_ITEM_COUNT));
            projectionList.add(Projections.sum(TicketItem.PROP_SUBTOTAL_AMOUNT));
            projectionList.add(Projections.sum(TicketItem.PROP_DISCOUNT_AMOUNT));
            criteria.setProjection(projectionList);
            criteria.add(Restrictions.eq("item." + TicketItem.PROP_CATEGORY_NAME, category.getName())); //$NON-NLS-1$
            criteria.add(Restrictions.ge("t." + Ticket.PROP_CREATE_DATE, fromDate)); //$NON-NLS-1$
            criteria.add(Restrictions.le("t." + Ticket.PROP_CREATE_DATE, toDate)); //$NON-NLS-1$
            criteria.add(Restrictions.eq("t." + Ticket.PROP_PAID, Boolean.TRUE)); //$NON-NLS-1$

            List datas = criteria.list();
            if (datas.size() > 0) {
                Object[] objects = (Object[]) datas.get(0);

                MenuUsageReportData data = new MenuUsageReportData();
                data.setCategoryName(category.getName());

                if (objects.length > 0 && objects[0] != null)
                    data.setCount(((Number) objects[0]).intValue());

                if (objects.length > 1 && objects[1] != null)
                    data.setGrossSales(((Number) objects[1]).doubleValue());

                if (objects.length > 2 && objects[2] != null)
                    data.setDiscount(((Number) objects[2]).doubleValue());

                data.calculate();
                report.addReportData(data);
            }
        }

        return report;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.floreantpos.report.service.ReportService.java

License:Open Source License

public ServerProductivityReport getServerProductivityReport(Date fromDate, Date toDate) {
    GenericDAO dao = new GenericDAO();
    ServerProductivityReport report = new ServerProductivityReport();
    Session session = null;//from  w  w w  . ja v  a 2  s  .  c om

    try {

        session = dao.getSession();

        Criteria criteria = session.createCriteria(User.class);
        //criteria.add(Restrictions.eq(User.PROP_USER_TYPE, User.USER_TYPE_SERVER));
        List<User> servers = criteria.list();

        criteria = session.createCriteria(MenuCategory.class);
        List<MenuCategory> categories = criteria.list();
        MenuCategory miscCategory = new MenuCategory();
        miscCategory.setName(com.floreantpos.POSConstants.MISC_BUTTON_TEXT);
        categories.add(miscCategory);

        for (User server : servers) {
            ServerProductivityReportData data = new ServerProductivityReportData();
            data.setServerName(server.getUserId() + "/" + server.toString()); //$NON-NLS-1$
            criteria = session.createCriteria(Ticket.class);
            criteria.add(Restrictions.eq(Ticket.PROP_OWNER, server));
            criteria.add(Restrictions.eq(Ticket.PROP_PAID, Boolean.TRUE));
            criteria.add(Restrictions.eq(Ticket.PROP_VOIDED, Boolean.FALSE)); //$NON-NLS-1$
            criteria.add(Restrictions.eq(Ticket.PROP_REFUNDED, Boolean.FALSE)); //$NON-NLS-1$
            criteria.add(Restrictions.ge(Ticket.PROP_CREATE_DATE, fromDate));
            criteria.add(Restrictions.le(Ticket.PROP_CREATE_DATE, toDate));

            ProjectionList projectionList = Projections.projectionList();
            projectionList.add(Projections.rowCount());
            projectionList.add(Projections.sum(Ticket.PROP_NUMBER_OF_GUESTS));
            projectionList.add(Projections.sum(TicketItem.PROP_TOTAL_AMOUNT));

            criteria.setProjection(projectionList);

            Object[] o = (Object[]) criteria.uniqueResult();
            int totalCheckCount = 0;
            double totalServerSale = 0;
            if (o != null) {
                if (o.length > 0 && o[0] != null) {
                    int i = ((Number) o[0]).intValue();
                    data.setTotalCheckCount(totalCheckCount = i);
                }
                if (o.length > 1 && o[1] != null) {
                    int i = ((Number) o[1]).intValue();
                    data.setTotalGuestCount(i);
                }
                if (o.length > 2 && o[2] != null) {
                    totalServerSale = ((Number) o[2]).doubleValue();
                    data.setTotalSales(totalServerSale);
                }
            }

            data.calculate();
            report.addReportData(data);

            for (MenuCategory category : categories) {
                data = new ServerProductivityReportData();
                data.setServerName(server.getUserId() + "/" + server.toString()); //$NON-NLS-1$

                criteria = session.createCriteria(TicketItem.class, "item"); //$NON-NLS-1$
                criteria.createCriteria(TicketItem.PROP_TICKET, "t"); //$NON-NLS-1$

                projectionList = Projections.projectionList();
                criteria.setProjection(projectionList);
                projectionList.add(Projections.sum(TicketItem.PROP_ITEM_COUNT));
                projectionList.add(Projections.sum(TicketItem.PROP_SUBTOTAL_AMOUNT));
                projectionList.add(Projections.sum("t." + Ticket.PROP_DISCOUNT_AMOUNT)); //$NON-NLS-1$
                projectionList.add(Projections.rowCount());

                criteria.add(Restrictions.eq("item." + TicketItem.PROP_CATEGORY_NAME, category.getName())); //$NON-NLS-1$
                criteria.add(Restrictions.ge("t." + Ticket.PROP_CREATE_DATE, fromDate)); //$NON-NLS-1$
                criteria.add(Restrictions.le("t." + Ticket.PROP_CREATE_DATE, toDate)); //$NON-NLS-1$
                criteria.add(Restrictions.eq("t." + Ticket.PROP_OWNER, server)); //$NON-NLS-1$
                criteria.add(Restrictions.eq("t." + Ticket.PROP_PAID, Boolean.TRUE)); //$NON-NLS-1$
                criteria.add(Restrictions.eq("t." + Ticket.PROP_VOIDED, Boolean.FALSE)); //$NON-NLS-1$
                criteria.add(Restrictions.eq("t." + Ticket.PROP_REFUNDED, Boolean.FALSE)); //$NON-NLS-1$

                List datas = criteria.list();
                if (datas.size() > 0) {
                    Object[] objects = (Object[]) datas.get(0);

                    data.setCategoryName(category.getName());
                    data.setTotalCheckCount(totalCheckCount);
                    if (objects.length > 0 && objects[0] != null) {
                        int i = ((Number) objects[0]).intValue();
                        data.setCheckCount(i);
                    }

                    if (objects.length > 1 && objects[1] != null) {
                        double d = ((Number) objects[1]).doubleValue();
                        data.setGrossSales(d);
                    }

                    if (objects.length > 2 && objects[2] != null) {
                        double d = ((Number) objects[2]).doubleValue();
                        if (d > 0)
                            data.setSalesDiscount(d);
                    }
                    data.setAllocation((data.getGrossSales() / totalServerSale) * 100.0);
                    data.calculate();
                    report.addReportData(data);
                }
            }
        }
        return report;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.floreantpos.report.service.ReportService.java

License:Open Source License

private void calculateDrawerPullAmount(Session session, SalesBalanceReport report, Date fromDate, Date toDate,
        User user) {/*from  www .  j av  a2 s  .  com*/
    Criteria criteria = session.createCriteria(DrawerPullReport.class);
    criteria.add(Restrictions.ge(DrawerPullReport.PROP_REPORT_TIME, fromDate));
    criteria.add(Restrictions.le(DrawerPullReport.PROP_REPORT_TIME, toDate));

    if (user != null) {
        criteria.add(Restrictions.eq(DrawerPullReport.PROP_ASSIGNED_USER, user));
    }

    ProjectionList projectionList = Projections.projectionList();
    projectionList.add(Projections.sum(DrawerPullReport.PROP_DRAWER_ACCOUNTABLE));
    projectionList.add(Projections.sum(DrawerPullReport.PROP_BEGIN_CASH));
    criteria.setProjection(projectionList);

    Object[] o = (Object[]) criteria.uniqueResult();
    if (o.length > 0 && o[0] instanceof Number) {
        double amount = ((Number) o[0]).doubleValue();
        report.setDrawerPullsAmount(amount);
    }
    if (o.length > 1 && o[1] instanceof Number) {
        double amount = ((Number) o[1]).doubleValue();
        report.setDrawerPullsAmount(report.getDrawerPullsAmount() - amount);
    }
}

From source file:com.floreantpos.report.service.ReportService.java

License:Open Source License

public SalesDetailedReport getSalesDetailedReport(Date fromDate, Date toDate) {
    GenericDAO dao = new GenericDAO();
    SalesDetailedReport report = new SalesDetailedReport();
    Session session = null;//from   w  w w  .j  av a  2  s . c  o m

    report.setFromDate(fromDate);
    report.setToDate(toDate);
    report.setReportTime(new Date());
    try {

        session = dao.getSession();

        Criteria criteria = session.createCriteria(DrawerPullReport.class);
        criteria.add(Restrictions.ge(DrawerPullReport.PROP_REPORT_TIME, fromDate));
        criteria.add(Restrictions.le(DrawerPullReport.PROP_REPORT_TIME, toDate));
        List list = criteria.list();
        for (Iterator iter = list.iterator(); iter.hasNext();) {
            DrawerPullReport drawerPullReport = (DrawerPullReport) iter.next();
            DrawerPullData data = new DrawerPullData();
            data.setDrawerPullId(drawerPullReport.getId());
            data.setTicketCount(drawerPullReport.getTicketCount());
            data.setIdealAmount(drawerPullReport.getDrawerAccountable());
            data.setActualAmount(drawerPullReport.getCashToDeposit());
            data.setVarinceAmount(
                    drawerPullReport.getDrawerAccountable() - drawerPullReport.getCashToDeposit());
            report.addDrawerPullData(data);
        }

        criteria = session.createCriteria(CreditCardTransaction.class);
        criteria.add(Restrictions.ge(CreditCardTransaction.PROP_TRANSACTION_TIME, fromDate));
        criteria.add(Restrictions.le(CreditCardTransaction.PROP_TRANSACTION_TIME, toDate));
        list = criteria.list();

        for (Iterator iter = list.iterator(); iter.hasNext();) {
            CreditCardTransaction t = (CreditCardTransaction) iter.next();
            report.addCreditCardData(t);
        }

        criteria = session.createCriteria(DebitCardTransaction.class);
        criteria.add(Restrictions.ge(DebitCardTransaction.PROP_TRANSACTION_TIME, fromDate));
        criteria.add(Restrictions.le(DebitCardTransaction.PROP_TRANSACTION_TIME, toDate));
        list = criteria.list();

        for (Iterator iter = list.iterator(); iter.hasNext();) {
            DebitCardTransaction t = (DebitCardTransaction) iter.next();
            report.addCreditCardData(t);
        }

        criteria = session.createCriteria(GiftCertificateTransaction.class);
        criteria.add(Restrictions.ge(GiftCertificateTransaction.PROP_TRANSACTION_TIME, fromDate));
        criteria.add(Restrictions.le(GiftCertificateTransaction.PROP_TRANSACTION_TIME, toDate));
        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.rowCount());
        projectionList.add(Projections.sum(GiftCertificateTransaction.PROP_AMOUNT));
        criteria.setProjection(projectionList);
        Object[] object = (Object[]) criteria.uniqueResult();
        if (object != null && object.length > 0 && object[0] instanceof Number) {
            report.setGiftCertReturnCount(((Number) object[0]).intValue());
        }
        if (object != null && object.length > 1 && object[1] instanceof Number) {
            report.setGiftCertReturnAmount(((Number) object[1]).doubleValue());
        }

        criteria = session.createCriteria(GiftCertificateTransaction.class);
        criteria.add(Restrictions.ge(GiftCertificateTransaction.PROP_TRANSACTION_TIME, fromDate));
        criteria.add(Restrictions.le(GiftCertificateTransaction.PROP_TRANSACTION_TIME, toDate));
        criteria.add(
                Restrictions.gt(GiftCertificateTransaction.PROP_GIFT_CERT_CASH_BACK_AMOUNT, Double.valueOf(0)));
        projectionList = Projections.projectionList();
        projectionList.add(Projections.rowCount());
        projectionList.add(Projections.sum(GiftCertificateTransaction.PROP_GIFT_CERT_CASH_BACK_AMOUNT));
        criteria.setProjection(projectionList);
        object = (Object[]) criteria.uniqueResult();
        if (object != null && object.length > 0 && object[0] instanceof Number) {
            report.setGiftCertChangeCount(((Number) object[0]).intValue());
        }
        if (object != null && object.length > 1 && object[1] instanceof Number) {
            report.setGiftCertChangeAmount(((Number) object[1]).doubleValue());
        }

        criteria = session.createCriteria(Ticket.class);
        criteria.createAlias(Ticket.PROP_GRATUITY, "g"); //$NON-NLS-1$
        criteria.add(Restrictions.ge(Ticket.PROP_CREATE_DATE, fromDate));
        criteria.add(Restrictions.le(Ticket.PROP_CREATE_DATE, toDate));
        criteria.add(Restrictions.gt("g." + Gratuity.PROP_AMOUNT, Double.valueOf(0))); //$NON-NLS-1$
        projectionList = Projections.projectionList();
        projectionList.add(Projections.rowCount());
        projectionList.add(Projections.sum("g." + Gratuity.PROP_AMOUNT)); //$NON-NLS-1$
        criteria.setProjection(projectionList);
        object = (Object[]) criteria.uniqueResult();
        if (object != null && object.length > 0 && object[0] instanceof Number) {
            report.setTipsCount(((Number) object[0]).intValue());
        }
        if (object != null && object.length > 1 && object[1] instanceof Number) {
            report.setChargedTips(((Number) object[1]).doubleValue());
        }

        criteria = session.createCriteria(Ticket.class);
        criteria.createAlias(Ticket.PROP_GRATUITY, "g"); //$NON-NLS-1$
        criteria.add(Restrictions.ge(Ticket.PROP_CREATE_DATE, fromDate));
        criteria.add(Restrictions.le(Ticket.PROP_CREATE_DATE, toDate));
        criteria.add(Restrictions.gt("g." + Gratuity.PROP_AMOUNT, Double.valueOf(0))); //$NON-NLS-1$
        criteria.add(Restrictions.gt("g." + Gratuity.PROP_PAID, Boolean.TRUE)); //$NON-NLS-1$
        projectionList = Projections.projectionList();
        projectionList.add(Projections.sum("g." + Gratuity.PROP_AMOUNT)); //$NON-NLS-1$
        criteria.setProjection(projectionList);
        object = (Object[]) criteria.uniqueResult();
        if (object != null && object.length > 0 && object[0] instanceof Number) {
            report.setTipsPaid(((Number) object[0]).doubleValue());
        }

        return report;
    } finally {
        if (session != null) {
            session.close();
        }
    }
}

From source file:com.gisgraphy.domain.repository.GenericGisDao.java

License:Open Source License

/**
 * base method for all findNearest* //from w w  w.  ja v a  2 s.  c  o m
 * 
 * @param point
 *                The point from which we want to find GIS Object
 * @param pointId
 *                the id of the point that we don't want to be include, it
 *                is used to not include the gisFeature from which we want
 *                to find the nearest
 * @param distance
 *                distance The radius in meters
 * @param firstResult
 *                the firstResult index (for pagination), numbered from 1,
 *                if < 1 : it will not be taken into account
 * @param maxResults
 *                The Maximum number of results to retrieve (for
 *                pagination), if <= 0 : it will not be taken into acount
 * @param requiredClass
 *                the class of the object to be retireved
 * @param isMunicipality whether we should filter on city that are flag as 'municipality'.
          act as a filter, if false it doesn't filters( false doesn't mean that we return non municipality)
 * @return A List of GisFeatureDistance with the nearest elements or an
 *         emptylist (never return null), ordered by distance.<u>note</u>
 *         the specified gisFeature will not be included into results
 * @see GisFeatureDistance
 * @return a list of gisFeature (never return null but an empty list)
 */
@SuppressWarnings("unchecked")
protected List<GisFeatureDistance> getNearestAndDistanceFrom(final Point point, final Long pointId,
        final double distance, final int firstResult, final int maxResults, final boolean includeDistanceField,
        final Class<? extends GisFeature> requiredClass, final boolean isMunicipality) {
    Assert.notNull(point);
    return (List<GisFeatureDistance>) this.getHibernateTemplate().execute(new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {
            Criteria criteria = session.createCriteria(requiredClass);

            if (maxResults > 0) {
                criteria = criteria.setMaxResults(maxResults);
            }
            if (firstResult >= 1) {
                criteria = criteria.setFirstResult(firstResult - 1);
            }
            criteria = criteria.add(new DistanceRestriction(point, distance));
            List<String> fieldList = IntrospectionHelper.getFieldsAsList(requiredClass);
            ProjectionList projections = ProjectionBean.fieldList(fieldList, true);
            if (includeDistanceField) {
                projections.add(SpatialProjection.distance_sphere(point, GisFeature.LOCATION_COLUMN_NAME)
                        .as("distance"));
            }
            criteria.setProjection(projections);
            if (pointId != 0) {
                // remove The From Point
                criteria = criteria.add(Restrictions.not(Restrictions.idEq(pointId)));
            }
            if (includeDistanceField) {
                criteria.addOrder(new ProjectionOrder("distance"));
            }
            if (isMunicipality && (requiredClass == City.class || requiredClass == GisFeature.class)) {
                criteria.add(Restrictions.eq(City.MUNICIPALITY_FIELD_NAME, isMunicipality));
            }

            criteria.setCacheable(true);
            List<Object[]> queryResults = criteria.list();

            String[] aliasList;
            if (includeDistanceField) {
                aliasList = (String[]) ArrayUtils.add(IntrospectionHelper.getFieldsAsArray(requiredClass),
                        "distance");
            } else {
                aliasList = IntrospectionHelper.getFieldsAsArray(requiredClass);
            }
            int idPropertyIndexInAliasList = 0;
            for (int i = 0; i < aliasList.length; i++) {
                if (aliasList[i] == "id") {
                    idPropertyIndexInAliasList = i;
                    break;
                }
            }

            boolean hasZipCodesProperty = ZipCodesAware.class.isAssignableFrom(requiredClass);
            Map<Long, Set<String>> idToZipCodesMap = null;
            if (hasZipCodesProperty && queryResults.size() > 0) {
                List<Long> ids = new ArrayList<Long>();
                for (Object[] tuple : queryResults) {
                    ids.add((Long) tuple[idPropertyIndexInAliasList]);
                }
                String zipCodeQuery = "SELECT code as code,gisfeature as id FROM "
                        + ZipCode.class.getSimpleName().toLowerCase() + " zip where zip.gisfeature in (:ids)";
                Query qry = session.createSQLQuery(zipCodeQuery).addScalar("code", Hibernate.STRING)
                        .addScalar("id", Hibernate.LONG);
                qry.setCacheable(true);

                qry.setParameterList("ids", ids);
                List<Object[]> zipCodes = (List<Object[]>) qry.list();

                if (zipCodes.size() > 0) {
                    idToZipCodesMap = new HashMap<Long, Set<String>>();
                    for (Object[] zipCode : zipCodes) {
                        Long idFromZipcode = (Long) zipCode[1];
                        Set<String> zipCodesFromMap = idToZipCodesMap.get(idFromZipcode);
                        if (zipCodesFromMap == null) {
                            Set<String> zipCodesToAdd = new HashSet<String>();
                            idToZipCodesMap.put(idFromZipcode, zipCodesToAdd);
                            zipCodesFromMap = zipCodesToAdd;
                        }
                        zipCodesFromMap.add((String) zipCode[0]);
                    }
                }
            }
            List<GisFeatureDistance> results = ResultTransformerUtil.transformToGisFeatureDistance(aliasList,
                    queryResults, idToZipCodesMap, requiredClass);
            return results;
        }
    });

}

From source file:com.gisgraphy.domain.repository.OpenStreetMapDao.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<StreetDistance> getNearestAndDistanceFrom(final Point point, final double distance,
        final int firstResult, final int maxResults, final StreetType streetType, final Boolean oneWay,
        final String name, final StreetSearchMode streetSearchMode, final boolean includeDistanceField) {
    if (streetSearchMode == StreetSearchMode.FULLTEXT && !GisgraphyConfig.STREET_SEARCH_FULLTEXT_MODE) {
        throw new GisgraphyException(
                "The fulltext mode has been removed in gisgraphy v 3.0 and has been replaced by fulltext webservice with placetype=street. please Consult user guide.");
    }//from  w  w  w .  j a v  a 2 s  .  c  o m
    if (name != null && streetSearchMode == null) {
        throw new IllegalArgumentException("streetSearchmode can not be null if name is provided");
    }
    if (point == null && streetSearchMode == StreetSearchMode.CONTAINS) {
        throw new IllegalArgumentException(
                "you must specify lat/lng when streetsearchmode = " + StreetSearchMode.CONTAINS);
    }
    return (List<StreetDistance>) this.getHibernateTemplate().execute(new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {
            Criteria criteria = session.createCriteria(OpenStreetMap.class);

            List<String> fieldList = IntrospectionHelper.getFieldsAsList(OpenStreetMap.class);

            ProjectionList projections = ProjectionBean.fieldList(fieldList, false);
            if (includeDistanceField && point != null) {
                projections.add(
                        //            SpatialProjection.distance_sphere(point, GisFeature.LOCATION_COLUMN_NAME).as(
                        //               "distance"));
                        SpatialProjection.distance_pointToLine(point, OpenStreetMap.SHAPE_COLUMN_NAME)
                                .as("distance"));
            }
            criteria.setProjection(projections);
            if (includeDistanceField && point != null) {
                criteria.addOrder(new ProjectionOrder("distance"));
            }
            if (maxResults > 0) {
                criteria = criteria.setMaxResults(maxResults);
            }
            if (firstResult >= 1) {
                criteria = criteria.setFirstResult(firstResult - 1);
            }
            if (point != null) {
                Polygon polygonBox = GeolocHelper.createPolygonBox(point.getX(), point.getY(), distance);
                criteria = criteria.add(new IntersectsRestriction(OpenStreetMap.SHAPE_COLUMN_NAME, polygonBox));
            }
            if (name != null) {
                if (streetSearchMode == StreetSearchMode.CONTAINS) {
                    criteria = criteria.add(Restrictions.isNotNull("name"));//optimisation!
                    criteria = criteria.add(
                            Restrictions.ilike(OpenStreetMap.FULLTEXTSEARCH_PROPERTY_NAME, "%" + name + "%"));
                    //criteria = criteria.add(new PartialWordSearchRestriction(OpenStreetMap.PARTIALSEARCH_VECTOR_COLUMN_NAME, name));
                } else if (streetSearchMode == StreetSearchMode.FULLTEXT) {
                    criteria = criteria.add(
                            new FulltextRestriction(OpenStreetMap.FULLTEXTSEARCH_VECTOR_PROPERTY_NAME, name));
                } else {
                    throw new NotImplementedException(
                            streetSearchMode + " is not implemented for street search");
                }
            }
            if (streetType != null) {
                criteria = criteria.add(Restrictions.eq("streetType", streetType));
            }
            if (oneWay != null) {
                criteria = criteria.add(Restrictions.eq("oneWay", oneWay));
            }
            criteria.setCacheable(true);
            // List<Object[]> queryResults =testCriteria.list();
            List<?> queryResults = criteria.list();

            if (queryResults != null && queryResults.size() != 0) {
                String[] propertiesNameArray;
                if (includeDistanceField && point != null) {
                    propertiesNameArray = (String[]) ArrayUtils
                            .add(IntrospectionHelper.getFieldsAsArray(OpenStreetMap.class), "distance");
                } else {
                    propertiesNameArray = IntrospectionHelper.getFieldsAsArray(OpenStreetMap.class);
                }
                List<StreetDistance> results = ResultTransformerUtil
                        .transformToStreetDistance(propertiesNameArray, queryResults);
                return results;
            } else {
                return new ArrayList<StreetDistance>();
            }

        }
    });
}

From source file:com.hypersocket.resource.AbstractAssignableResourceRepositoryImpl.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*from  w ww.j  av  a2  s. c om*/
public Collection<T> searchAssignedResources(List<Principal> principals, final String searchPattern,
        final int start, final int length, final ColumnSort[] sorting, CriteriaConfiguration... configs) {

    Criteria criteria = createCriteria(getResourceClass());
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    if (StringUtils.isNotBlank(searchPattern)) {
        criteria.add(Restrictions.ilike("name", searchPattern));
    }

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    criteria.add(Restrictions.eq("realm", principals.get(0).getRealm()));
    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", true));

    Set<T> everyone = new HashSet<T>(criteria.list());

    criteria = createCriteria(getResourceClass());

    ProjectionList projList = Projections.projectionList();
    projList.add(Projections.property("id"));
    projList.add(Projections.property("name"));

    criteria.setProjection(Projections.distinct(projList));
    criteria.setFirstResult(start);
    criteria.setMaxResults(length);

    if (StringUtils.isNotBlank(searchPattern)) {
        criteria.add(Restrictions.ilike("name", searchPattern));
    }

    for (CriteriaConfiguration c : configs) {
        c.configure(criteria);
    }

    for (ColumnSort sort : sorting) {
        criteria.addOrder(sort.getSort() == Sort.ASC ? Order.asc(sort.getColumn().getColumnName())
                : Order.desc(sort.getColumn().getColumnName()));
    }

    criteria.add(Restrictions.eq("realm", principals.get(0).getRealm()));

    criteria = criteria.createCriteria("roles");
    criteria.add(Restrictions.eq("allUsers", false));
    criteria = criteria.createCriteria("principals");

    List<Long> ids = new ArrayList<Long>();
    for (Principal p : principals) {
        ids.add(p.getId());
    }
    criteria.add(Restrictions.in("id", ids));

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

    if (results.size() > 0) {
        Long[] entityIds = new Long[results.size()];
        int idx = 0;
        for (Object[] obj : results) {
            entityIds[idx++] = (Long) obj[0];
        }

        criteria = createCriteria(getResourceClass());
        criteria.add(Restrictions.in("id", entityIds));

        everyone.addAll((List<T>) criteria.list());
    }
    return everyone;
}

From source file:com.hyzy.core.orm.hibernate.SimpleHibernateDao.java

License:Apache License

/**
 * //from w  w w.ja  va2s  .  c  om
 * 
 * ??
 * 
 * @author: zhaozongzhan
 * 
 * @create: 2016113 ?10:40:57
 * 
 *
 * 
 * @param showFieldNames ?
 * @param criterions
 * @return
 */
protected Criteria setShowFields(List<String> showFieldNames, final Criterion... criterions) {
    Criteria criteria = createCriteria(criterions);
    if (showFieldNames != null && showFieldNames.size() > 0) {
        ProjectionList proList = Projections.projectionList();// ?
        for (String fieldName : showFieldNames) {

            proList.add(Projections.property(fieldName));
        }
        criteria.setProjection(proList);
    }

    return criteria;
}

From source file:com.ihsolution.hqipo.dao.utils.QueryHelper.java

License:Open Source License

/**
 * convert the InputDTO to QueryHelper to get the count (omitting sort order)
 *//*from  www .j  a  v a2  s. com*/
@SuppressWarnings("deprecation")
public QueryHelper convertDtoToQhelperForCount(InputDTO dto) {
    if (dto == null)
        return this;
    this.dto = dto;
    int ind = 0;
    try {
        Junction j = null;
        Junction conj = Restrictions.conjunction();
        Junction disj = Restrictions.disjunction();
        String operator = "";
        boolean disjB = false, conjB = false;
        if (dto.getFetchMode() != null) {
            for (Map.Entry<String, String> entry : dto.getFetchMode().entrySet()) {
                FetchMode fmode = null;
                logger.debug("FetchMode key=" + entry.getKey() + " val=" + entry.getValue());
                if (entry.getValue().equals("join"))
                    fmode = FetchMode.JOIN;
                else if (entry.getValue().equals("eager"))
                    fmode = FetchMode.EAGER;
                else if (entry.getValue().equals("lazy"))
                    fmode = FetchMode.LAZY;
                else
                    fmode = FetchMode.LAZY;
                this.detCriteria.setFetchMode(entry.getKey(), fmode);
            }
        }
        for (String field : dto.getFields()) {
            operator = dto.getOperators().get(ind);
            if ("or".equals(operator)) {
                j = disj;
                disjB = true;
            } else {
                j = conj;
                conjB = true;
            }
            this.addFieldAndVal(createAliases(field), dto.getValues().get(ind), dto.getOperations().get(ind),
                    j);
            ind++;
        }

        if (dto.getExpressions() != null) {
            for (String expr : dto.getExpressions()) {
                j.add(Expression.sql(expr));
            }
        }
        if (dto.getFieldsToSelect() != null && dto.getFieldsToSelect().length > 0) {
            ProjectionList prList = Projections.projectionList();
            Projection projection = null;

            for (String fld : dto.getFieldsToSelect()) {
                String als = this.createAliases(fld);
                prList.add(Projections.property(als));
            }
            if (dto.isDistinct()) {
                projection = Projections.distinct(prList);
            } else {
                projection = prList;
            }
            this.detCriteria.setProjection(projection);

        } else {
            this.fldSelectedSet = false;
        }

        if (disjB)
            detCriteria.add(disj);
        if (conjB)
            detCriteria.add(conj);
        if (logger.isDebugEnabled()) {
            if (conjB)
                logger.debug("conjuction=" + conj.toString());
            if (disjB)
                logger.debug("disjunction=" + disj.toString());
        }
        if (dto.isDistinct())
            detCriteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    } catch (Exception e) {
        e.printStackTrace();
        logger.error(e);
    }
    return this;
}