List of usage examples for org.hibernate.criterion DetachedCriteria forClass
public static DetachedCriteria forClass(Class clazz)
From source file:com.eucalyptus.compute.common.internal.tags.TagSupport.java
License:Open Source License
/** * Get the tags for the given resources, grouped by ID and ordered for display. * // ww w .ja v a2 s . c om * @param owner The account for the tags * @param identifiers The resource identifiers for the tags * @return The tag map with an entry for each requested resource */ public Map<String, List<Tag>> getResourceTagMap(final OwnerFullName owner, final Iterable<String> identifiers) { final int identifiersSize = Iterables.size(identifiers); final Map<String, List<Tag>> tagMap = Maps.newHashMapWithExpectedSize(identifiersSize); for (final String id : identifiers) { tagMap.put(id, Lists.<Tag>newArrayList()); } if (!tagMap.isEmpty()) { final Tag example = example(owner); final Criterion idRestriction = identifiersSize < 1000 ? Property.forName(tagClassResourceField) .in(DetachedCriteria.forClass(resourceClass) .add(Restrictions.in(resourceClassIdField, Lists.newArrayList(identifiers))) .setProjection(Projections.id())) : Restrictions.conjunction(); try { final List<Tag> tags = Tags.list(example, Predicates.alwaysTrue(), idRestriction, Collections.<String, String>emptyMap()); for (final Tag tag : tags) { final List<Tag> keyTags = tagMap.get(tag.getResourceId()); if (keyTags != null) { keyTags.add(tag); } } } catch (Exception e) { log.error(e, e); } Ordering<Tag> order = Ordering.natural().onResultOf(Tags.key()); for (final String id : identifiers) { Collections.sort(tagMap.get(id), order); } } return tagMap; }
From source file:com.eucalyptus.tags.TagSupport.java
License:Open Source License
/** * Get the tags for the given resources, grouped by ID and ordered for display. * /*from ww w .j a v a 2 s .c o m*/ * @param owner The account for the tags * @param identifiers The resource identifiers for the tags * @return The tag map with an entry for each requested resource */ public Map<String, List<Tag>> getResourceTagMap(final OwnerFullName owner, final Iterable<String> identifiers) { final Map<String, List<Tag>> tagMap = Maps.newHashMap(); for (final String id : identifiers) { tagMap.put(id, Lists.<Tag>newArrayList()); } if (!tagMap.isEmpty()) { final Tag example = example(owner); final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(resourceClass) .add(Restrictions.in(resourceClassIdField, Lists.newArrayList(identifiers))) .setProjection(Projections.id()); final Criterion idRestriction = Property.forName(tagClassResourceField).in(detachedCriteria); try { final List<Tag> tags = Tags.list(example, Predicates.alwaysTrue(), idRestriction, Collections.<String, String>emptyMap()); for (final Tag tag : tags) { tagMap.get(tag.getResourceId()).add(tag); } } catch (NoSuchMetadataException e) { log.error(e, e); } Ordering<Tag> order = Ordering.natural().onResultOf(Tags.key()); for (final String id : identifiers) { Collections.sort(tagMap.get(id), order); } } return tagMap; }
From source file:com.evolveum.midpoint.repo.sql.query.restriction.OrgRestriction.java
License:Apache License
@Override public Criterion interpret(OrgFilter filter) throws QueryException { if (filter.isRoot()) { // Criteria pCriteria = getInterpreter().getCriteria(null); DetachedCriteria dc = DetachedCriteria.forClass(ROrgClosure.class); String[] strings = new String[1]; strings[0] = "descendant.oid"; Type[] type = new Type[1]; type[0] = StringType.INSTANCE;//from w ww .j a v a 2 s.c o m dc.setProjection(Projections.sqlGroupProjection("descendant_oid", "descendant_oid having count(descendant_oid)=1", strings, type)); // pCriteria.add(Subqueries.in("this.oid", dc)); return Subqueries.propertyIn("oid", dc); // Query rootOrgQuery = session.createQuery("select org from ROrg as org where org.oid in (select descendant.oid from ROrgClosure group by descendant.oid having count(descendant.oid)=1)"); } if (filter.getOrgRef() == null) { throw new QueryException("No organization reference defined in the search query."); } if (filter.getOrgRef().getOid() == null) { throw new QueryException( "No oid specified in organization reference " + filter.getOrgRef().debugDump()); } DetachedCriteria detached; switch (filter.getScope()) { case ONE_LEVEL: detached = DetachedCriteria.forClass(RParentOrgRef.class, "p"); detached.setProjection(Projections.distinct(Projections.property("p.ownerOid"))); detached.add(Restrictions.eq("p.targetOid", filter.getOrgRef().getOid())); break; case SUBTREE: default: detached = DetachedCriteria.forClass(ROrgClosure.class, "cl"); detached.setProjection(Projections.distinct(Projections.property("cl.descendantOid"))); detached.add(Restrictions.eq("cl.ancestorOid", filter.getOrgRef().getOid())); detached.add(Restrictions.ne("cl.descendantOid", filter.getOrgRef().getOid())); } String mainAlias = getContext().getAlias(null); return Subqueries.propertyIn(mainAlias + ".oid", detached); }
From source file:com.glaf.base.utils.HibernateUtil.java
License:Apache License
/** * /*w w w . j a v a 2 s.c om*/ * @param map * @param forClass * @return */ public static DetachedCriteria getCriteria(Map<String, String> map, Class<?> forClass) { DetachedCriteria detachedCriteria = DetachedCriteria.forClass(forClass); Set<String> params = map.keySet(); // boolean createAliased = false; if (params != null) { Map<String, String> aliasMap = new java.util.HashMap<String, String>();// ?? int aliasNum = 0;// ??? Iterator<String> it = params.iterator(); while (it.hasNext()) { String key = (String) it.next(); String value = map.get(key) == null ? null : map.get(key).toString(); value = value == null ? value : value.trim(); if (key.startsWith(QUERY_PREFIX) && value != null && value.trim().length() > 0) { // ?? String name = key.substring(QUERY_PREFIX.length()); // ?? "=" String op = "eq"; if (name.indexOf("_") != -1) { int pos = name.lastIndexOf("_"); op = name.substring(pos + 1); name = name.substring(0, pos); } if ("me".equals(op)) { // ????? String maintAlias = detachedCriteria.getAlias(); // ? string detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=" + value)); } else if ("zns".equals(op)) { // // ? string detachedCriteria.add(Restrictions.sqlRestriction(" 1 = 2 ")); } else if ("mn".equals(op)) { // ????? String maintAlias = detachedCriteria.getAlias(); // ? string detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is NULL ")); } else if ("mnn".equals(op)) { // ????? String maintAlias = detachedCriteria.getAlias(); // ? string detachedCriteria .add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is not NULL ")); } else if ("md".equals(op)) { // ????? String maintAlias = detachedCriteria.getAlias(); // ? string detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=?", DateUtils.toDate(value), StandardBasicTypes.DATE)); } else if ("mis".equals(op)) { // in( ?_select ) String maintAlias = detachedCriteria.getAlias(); // ? string detachedCriteria.add( Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") ")); } else if ("xd".equals(op)) { // . date // ? string int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=? ", DateUtils.toDate(value), StandardBasicTypes.DATE)); } else if ("xs".equals(op)) { // . String // ? string int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "='" + value + "' ")); } else if ("xe".equals(op)) { // . if (!value.equals("") && Integer.parseInt(value) > 0) { int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value)); } } else if ("ixe".equals(op)) { // . if (!value.equals("") && Integer.parseInt(value) >= 0) { int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value)); } } else if ("xel".equals(op)) { // . if (!value.equals("") && Long.parseLong(value) != -1) { int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value)); } } else if ("xne".equals(op)) { // . if (!value.equals("") && Integer.parseInt(value) != -1) { int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "<>" + value)); } } else if ("xi".equals(op)) { // . in () String int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } // ? string detachedCriteria.add( Restrictions.sqlRestriction(aliasMap.get(alias) + name + " in (" + value + ") ")); } else if ("xl".equals(op)) { // like . String int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria.add(Restrictions .sqlRestriction(aliasMap.get(alias) + name + " like '%" + value + "%'")); } else if (op.startsWith("xdate")) { // Date String dateOp = "="; if ("xdatelt".equals(op)) { dateOp = "<"; } else if ("xdategt".equals(op)) { dateOp = ">"; } else if ("xdatele".equals(op)) { dateOp = "<="; } else if ("xdatege".equals(op)) { dateOp = ">="; } int pos = name.lastIndexOf("."); String alias = name.substring(0, pos); name = name.substring(pos + 1); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + dateOp + "?", DateUtils.toDate(value), StandardBasicTypes.DATE)); } else if (op.startsWith("date")) { // Date String dateOp = "="; if ("datelt".equals(op)) { dateOp = "<"; } else if ("dategt".equals(op)) { dateOp = ">"; } else if ("datele".equals(op)) { dateOp = "<="; } else if ("datege".equals(op)) { dateOp = ">="; } detachedCriteria.add(Restrictions.sqlRestriction(name + dateOp + "?", DateUtils.toDate(value), StandardBasicTypes.DATE)); } /* * else if(op.equals("double")){ //Double String doubleOp * = "="; if("double".equals(op)){ } } */else if ("like".equals(op)) { // like detachedCriteria.add(Restrictions.like(name, "%" + value + "%")); } else if ("es".equals(op)) { // if(Integer.parseInt(value) != -1){ detachedCriteria .add(Restrictions.sqlRestriction(name + " = ? ", value, StandardBasicTypes.STRING)); // } } else if ("ex".equals(op)) { // =int if (Integer.parseInt(value) != -1) { detachedCriteria.add(Restrictions.eq(name, new Integer(value))); } } else if ("el".equals(op)) { // =long if (Long.parseLong(value) != -1) { detachedCriteria.add(Restrictions.eq(name, new Long(value))); } } else if ("ed".equals(op)) { // =double if (Double.parseDouble(value) != -1) { detachedCriteria.add(Restrictions.eq(name, new Double(value))); } } else if ("nei".equals(op)) { // <>int if (Integer.parseInt(value) != -1) { detachedCriteria.add(Restrictions.ne(name, new Integer(value))); } } else if ("nel".equals(op)) { // <>long if (Long.parseLong(value) != -1) { detachedCriteria.add(Restrictions.ne(name, new Long(value))); } } else if ("in".equals(op)) { // in () if (!"".trim().equals(value)) { String maintAlias = detachedCriteria.getAlias(); detachedCriteria.add( Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") ")); // detachedCriteria.add(Restrictions // .sqlRestriction(name + " in (" + value // + ") ")); } } else if ("nin".equals(op)) { // not in () if (!"".trim().equals(value)) { String maintAlias = detachedCriteria.getAlias(); detachedCriteria.add(Restrictions .sqlRestriction(maintAlias + "_." + name + " not in (" + value + ") ")); // detachedCriteria.add(Restrictions // .sqlRestriction(name + " not in (" + value // + ") ")); } } else { detachedCriteria.add(Restrictions.eq(name, value)); } } else if (key.startsWith(ORDER_PREFIX)) { // ????? //order__asc(desc) ? hidden String name = key.substring(ORDER_PREFIX.length()); int pos = name.lastIndexOf("."); if (pos != -1) { String alias = name.substring(0, pos); if (aliasMap.get(alias) == null) { detachedCriteria.createAlias(alias, alias); aliasNum++; aliasMap.put(alias, getNewAliasName(alias, aliasNum)); } } if (value.trim().equalsIgnoreCase("asc")) { detachedCriteria.addOrder(Order.asc(name)); } else { detachedCriteria.addOrder(Order.desc(name)); } } } map.putAll(aliasMap); } return detachedCriteria; }
From source file:com.griffinslogistics.book.BookService.java
@Override public List<BookModel> getBookModelsByTransportId(Long transportId) { logger.log(Level.SEVERE, "{0}: getBookModelsByTransportation started", CLASS_NAME); List<BookModel> resultList = new ArrayList<BookModel>(); try {//www.jav a 2 s. com DetachedCriteria criteria = DetachedCriteria.forClass(Book.class); criteria.add(Restrictions.eq("transportId", transportId)); criteria.setProjection( Projections.projectionList().add(Projections.groupProperty("bookNumber"), "bookNumber") .add(Projections.property("title"), "title")) .setResultTransformer(Transformers.aliasToBean(BookModel.class)); resultList = (List<BookModel>) this.dao.getAllByDetachedCriteria(criteria); Collections.reverse(resultList); } catch (HibernateException e) { logger.log(Level.SEVERE, e.getMessage()); } finally { logger.log(Level.SEVERE, "{0}: getBookModelsByTransportation finished", CLASS_NAME); } return resultList; }
From source file:com.griffinslogistics.book.BookService.java
@Override public boolean updateBook(Book book) { // update all Titles for the same bookNumber in the same transport DetachedCriteria criteria = DetachedCriteria.forClass(Book.class); criteria.add(Restrictions.eq("transportId", book.getTransportId())); criteria.add(Restrictions.eq("bookNumber", book.getBookNumber())); criteria.add(Restrictions.ne("id", book.getId())); List<Book> toBeUpdatedList = this.dao.getAllByDetachedCriteria(criteria); for (Book bookToBeUpdated : toBeUpdatedList) { bookToBeUpdated.setTitle(book.getTitle()); this.dao.update(bookToBeUpdated); }/*from w w w. j a va2s.co m*/ return this.dao.update(book); }
From source file:com.griffinslogistics.book.BookService.java
@Override public List<BookLabelModel> getLabelInfoForBooks(List<Long> selectedBookIds) { DetachedCriteria criteria = DetachedCriteria.forClass(Book.class) .setFetchMode(Bookspackage.class.getName(), FetchMode.JOIN) .add(Restrictions.in("id", selectedBookIds)); List<Book> books = (List<Book>) this.dao.getAllByDetachedCriteria(criteria); List<BookLabelModel> result = new ArrayList<BookLabelModel>(); if (books != null && !books.isEmpty()) { Transport transport = (Transport) books.get(0).getTransport(); for (Book book : books) { BookLabelModel model = new BookLabelModel(book.getDeliveryAddress(), book.getBookspackage().getPostalCode(), book.getTitle(), book.getBookNumber(), book.getBookspackage().getClient(), transport.getWeekNumber() + "/" + transport.getYear(), (long) book.getCount(), book.getBookspackage().getPackageNumber(), book.getISBN()); result.add(model);//w w w .ja v a 2s. com } } return result; }
From source file:com.griffinslogistics.book.BookService.java
@Override public List<BookForTransportationModel> getBooksForTransportModelByTransportId(Long transportId) { logger.log(Level.SEVERE, "{0}: getBooksForTransportation started", CLASS_NAME); List<BookForTransportationModel> resultList = new ArrayList<BookForTransportationModel>(); try {//from w w w . j a v a 2 s . co m DetachedCriteria criteria = DetachedCriteria.forClass(Transport.class); criteria.add(Restrictions.eq("id", transportId)); criteria.setFetchMode("books", FetchMode.JOIN); criteria.setFetchMode("books.boxes", FetchMode.JOIN); Transport transportation = (Transport) this.dao.getByDetachedCriteria(criteria); for (Book book : transportation.getBooks()) { Hibernate.initialize(book.getBoxes()); if (book.getPrintingHouse() != null) { book.getPrintingHouse().getName(); } BookForTransportationModel model = BookForTransportationModel.fromBook(book); resultList.add(model); } Collections.reverse(resultList); } catch (HibernateException e) { logger.log(Level.SEVERE, e.getMessage()); } finally { logger.log(Level.SEVERE, "{0}: getBooksForTransportation finished", CLASS_NAME); } return resultList; }
From source file:com.griffinslogistics.bookspackage.BookspackageService.java
@Override public List<Bookspackage> getBookspackagesByTransportId(Long transportId) { DetachedCriteria criteria = DetachedCriteria.forClass(Transport.class); criteria.add(Restrictions.eq("id", transportId)); criteria.setFetchMode("bookspackages", FetchMode.JOIN); criteria.setFetchMode("bookspackages.truckGroup", FetchMode.JOIN); criteria.setFetchMode("bookspackages.books", FetchMode.JOIN); criteria.setFetchMode("bookspackages.boxes", FetchMode.JOIN); criteria.setFetchMode("bookspackages.books.boxes", FetchMode.JOIN); Transport transportationForBookspackage = (Transport) this.dao.getByDetachedCriteria(criteria); List<Bookspackage> bookspackages = new ArrayList(transportationForBookspackage.getBookspackages()); for (Bookspackage bookspackage : bookspackages) { BookspackagePriorityEnum priorityEnum = BookspackagePriorityEnum.byValue(bookspackage.getPriority()); bookspackage.setDisplayPriority(priorityEnum.getDisplayValue()); int totalBooksCount = 0; double totalBooksWeight = 0; int totalOrderedBooksCount = 0; double totalOrderedBooksWeight = 0; int totalBoxesCount = 0; for (Book book : bookspackage.getBooks()) { if (book.isDiscarded()) { bookspackage.setHasDiscardedBooks(true); }//from ww w. ja v a 2s .c o m totalOrderedBooksCount += book.getCount(); totalOrderedBooksWeight += book.getWeight(); for (Box box : book.getBoxes()) { int boxesCount = box.getBoxesCount(); int booksCount = box.getBooksCount(); totalBooksCount += boxesCount * booksCount; totalBooksWeight += boxesCount * booksCount * book.getWeightPerBook(); totalBoxesCount += boxesCount; } } TruckGroup truckGroup = bookspackage.getTruckGroup(); if (truckGroup != null) { truckGroup.getName(); } totalBooksWeight = Math.round(totalBooksWeight); totalOrderedBooksWeight = Math.round(totalOrderedBooksWeight); bookspackage.setTotalBooksCount(totalBooksCount); bookspackage.setTotalBooksWeight(totalBooksWeight); bookspackage.setTotalOrderedBooksCount(totalOrderedBooksCount); bookspackage.setTotalOrderedBooksWeight(totalOrderedBooksWeight); bookspackage.setBoxesCount(totalBoxesCount); } Collections.reverse(bookspackages); return bookspackages; }
From source file:com.griffinslogistics.pulsiodetails.PulsioDetailsService.java
@Override public Pulsiodetails getDetails() { logger.log(Level.SEVERE, "{0}: getDetails started", CLASS_NAME); Pulsiodetails pulsiodetails = null;//ww w . j a v a2 s. co m try { DetachedCriteria criteria = DetachedCriteria.forClass(Pulsiodetails.class); pulsiodetails = (Pulsiodetails) this.pulsioDetailsDAO.getByDetachedCriteria(criteria); } catch (HibernateException e) { logger.log(Level.SEVERE, e.getMessage()); } finally { logger.log(Level.SEVERE, "{0}: getDetails finished", CLASS_NAME); } return pulsiodetails; }