List of usage examples for org.hibernate.criterion ProjectionList add
public ProjectionList add(Projection projection)
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; }