Example usage for org.hibernate.criterion DetachedCriteria createCriteria

List of usage examples for org.hibernate.criterion DetachedCriteria createCriteria

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria createCriteria.

Prototype

public DetachedCriteria createCriteria(String associationPath) 

Source Link

Document

Creates a nested DetachedCriteria representing the association path.

Usage

From source file:org.n52.sos.ds.hibernate.dao.OfferingDAO.java

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * observableProperty identifier//from w w w . j  av  a  2s .  co m
 *
 * @param observablePropertyIdentifier
 *            ObservableProperty identifier parameter
 * @param session
 *            Hibernate session
 * @return Detached Criteria with Offering entities as result
 */
private DetachedCriteria getDetachedCriteriaOfferingForObservablePropertyFromObservationConstellation(
        String observablePropertyIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.OBSERVABLE_PROPERTY)
            .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.OFFERING)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.dao.OfferingDAO.java

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * procedure identifier/*from  w ww  .j av  a  2 s.  c om*/
 *
 * @param procedureIdentifier
 *            Procedure identifier parameter
 * @param session
 *            Hibernate session
 * @return Detached Criteria with Offering entities as result
 */
private DetachedCriteria getDetachedCriteriaOfferingForProcedureFromObservationConstellation(
        String procedureIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.PROCEDURE)
            .add(Restrictions.eq(Procedure.IDENTIFIER, procedureIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.OFFERING)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * observableProperty identifier/*from   w  ww.j  a  v  a  2 s .  c o m*/
 *
 * @param observablePropertyIdentifier
 *            ObservableProperty identifier parameter
 * @param session
 *            Hibernate session
 * @return Hiberante Detached Criteria with Procedure entities
 */
private DetachedCriteria getDetachedCriteriaProceduresForObservablePropertyFromObservationConstellation(
        String observablePropertyIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.OBSERVABLE_PROPERTY)
            .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.PROCEDURE)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class Series and observableProperty
 * identifier/*from   w  ww .  j  a  v a 2s  . co m*/
 *
 * @param observablePropertyIdentifier
 *            ObservableProperty identifier parameter
 * @param session
 *            Hibernate session
 * @return Hiberante Detached Criteria with Procedure entities
 * @throws CodedException 
 */
private DetachedCriteria getDetachedCriteriaProceduresForObservablePropertyFromSeries(
        String observablePropertyIdentifier, Session session) throws CodedException {
    final DetachedCriteria detachedCriteria = DetachedCriteria
            .forClass(DaoFactory.getInstance().getSeriesDAO().getClass());
    detachedCriteria.add(Restrictions.eq(Series.DELETED, false));
    detachedCriteria.createCriteria(Series.OBSERVABLE_PROPERTY)
            .add(Restrictions.eq(ObservableProperty.IDENTIFIER, observablePropertyIdentifier));
    detachedCriteria.setProjection(Projections.distinct(Projections.property(Series.PROCEDURE)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.dao.ProcedureDAO.java

License:Open Source License

/**
 * Get Hibernate Detached Criteria for class ObservationConstellation and
 * offering identifier//from w  ww.  j  a va 2  s. c  o  m
 *
 * @param offeringIdentifier
 *            Offering identifier parameter
 * @param session
 *            Hibernate session
 * @return Detached Criteria with Procedure entities
 */
private DetachedCriteria getDetachedCriteriaProceduresForOfferingFromObservationConstellation(
        String offeringIdentifier, Session session) {
    final DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ObservationConstellation.class);
    detachedCriteria.add(Restrictions.eq(ObservationConstellation.DELETED, false));
    detachedCriteria.createCriteria(ObservationConstellation.OFFERING)
            .add(Restrictions.eq(Offering.IDENTIFIER, offeringIdentifier));
    detachedCriteria
            .setProjection(Projections.distinct(Projections.property(ObservationConstellation.PROCEDURE)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java

License:Open Source License

/**
 * Get Detached Criteria for series concept. Criteria results are
 * FeatureOfInterest entities.//w w w .  ja va2 s  . c  o m
 *
 * @param req
 *            GetFeatureOfInterest request
 * @param session
 *            Hibernate Sesstion
 * @return Detached Criteria
 * @throws CodedException If an error occurs during processing
 */
private DetachedCriteria getDetachedCriteriaForSeriesWithProcedureObservableProperty(
        GetFeatureOfInterestRequest req, Session session) throws CodedException {
    final DetachedCriteria detachedCriteria = DetachedCriteria
            .forClass(EntitiyHelper.getInstance().getSeriesEntityClass());
    detachedCriteria.add(Restrictions.eq(Series.DELETED, false));
    // observableProperties
    if (req.isSetObservableProperties()) {
        detachedCriteria.createCriteria(Series.OBSERVABLE_PROPERTY)
                .add(Restrictions.in(ObservableProperty.IDENTIFIER, req.getObservedProperties()));
    }
    // procedures
    if (req.isSetProcedures()) {
        detachedCriteria.createCriteria(Series.PROCEDURE)
                .add(Restrictions.in(Procedure.IDENTIFIER, req.getProcedures()));
    }
    detachedCriteria.setProjection(Projections.distinct(Projections.property(Series.FEATURE_OF_INTEREST)));
    return detachedCriteria;
}

From source file:org.n52.sos.ds.hibernate.GetFeatureOfInterestDAO.java

License:Open Source License

/**
 * Get Detached Criteria for SOS 1.0.0 and series concept. Criteria results
 * are Series entities.// www. java2s .  c om
 *
 * @param req
 *            GetFeatureOfInterest request
 * @param session
 *            Hibernate Sesstion
 * @return Detached Criteria
 * @throws CodedException If an error occurs during processing
 */
private DetachedCriteria getDetachedCriteriaForSeriesWithProcedureObservablePropertyTemporalFilter(
        GetFeatureOfInterestRequest req, Session session) throws CodedException {
    final DetachedCriteria detachedCriteria = DetachedCriteria
            .forClass(EntitiyHelper.getInstance().getObservationInfoEntityClass());
    DetachedCriteria seriesCriteria = detachedCriteria.createCriteria(SeriesObservationInfo.SERIES);
    detachedCriteria.add(Restrictions.eq(Series.DELETED, false));
    // observableProperties
    if (req.isSetObservableProperties()) {
        seriesCriteria.createCriteria(Series.OBSERVABLE_PROPERTY)
                .add(Restrictions.in(ObservableProperty.IDENTIFIER, req.getObservedProperties()));
    }
    // procedures
    if (req.isSetProcedures()) {
        seriesCriteria.createCriteria(Series.PROCEDURE)
                .add(Restrictions.in(Procedure.IDENTIFIER, req.getProcedures()));
    }
    // temporal filter
    if (req.isSetTemporalFilters()) {
        detachedCriteria.add(TemporalRestrictions.filter(req.getTemporalFilters()));
    }

    detachedCriteria.setProjection(Projections.distinct(Projections.property(SeriesObservationInfo.SERIES)));
    return detachedCriteria;
}

From source file:org.shredzone.cilla.service.search.strategy.AbstractSearchStrategy.java

License:Open Source License

/**
 * Creates a {@link Criteria} object for the filter given in the
 * {@link SearchResultImpl}./*  www  .  j  a v  a  2  s . co  m*/
 */
protected Criteria createCriteria(SearchResultImpl result) throws CillaServiceException {
    Criteria crit = pageDao.criteria();
    crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    crit.add(Restrictions.and(Restrictions.isNotNull("publication"),
            Restrictions.le("publication", result.getNow())));

    crit.add(
            Restrictions.or(Restrictions.isNull("expiration"), Restrictions.gt("expiration", result.getNow())));

    crit.add(Restrictions.eq("hidden", false));

    FilterModel filter = result.getFilter();
    if (filter != null) {
        if (filter.getCategory() != null) {
            // I'd prefer to use Restrictions.in instead, but this seems to be difficult.
            // http://stackoverflow.com/questions/407737/hibernate-criteria-querying-tables-in-nm-relationship
            Disjunction dis = Restrictions.disjunction();
            result.getEffectiveCategories().stream().mapToLong(Category::getId)
                    .forEach(id -> dis.add(Restrictions.idEq(id)));
            crit.createCriteria("categories").add(dis);
        }

        if (filter.getTag() != null) {
            long tagId = filter.getTag().getId();
            Disjunction dis = Restrictions.disjunction();

            // All pages with the requested tag
            crit.createAlias("tags", "tt");
            dis.add(Restrictions.eq("tt.id", tagId));

            // All pages with pictures in a gallery section having the requested tag
            DetachedCriteria subcrit = DetachedCriteria.forClass(GallerySection.class);
            subcrit.createCriteria("pictures").createCriteria("tags").add(Restrictions.idEq(tagId));
            subcrit.setProjection(Projections.distinct(Projections.property("page.id")));
            dis.add(Subqueries.propertyIn("id", subcrit));

            crit.add(dis);
        }

        if (filter.getCreator() != null) {
            crit.add(Restrictions.eq("creator", filter.getCreator()));
        }

        if (filter.getPage() != null) {
            crit.add(Restrictions.idEq(filter.getPage().getId()));
        }

        if (filter.getDate() != null) {
            DateRange dr = filter.getDate();
            PageOrder order = (filter.getOrder() != null ? filter.getOrder() : PageOrder.PUBLICATION);
            crit.add(Restrictions.between(order.getColumn(), dr.getFromDate().getTime(),
                    dr.getThruDate().getTime()));
        }

        if (filter.getQuery() != null) {
            // No challenge protected pages for context search, because protected
            // contents may be revealed in the search results.
            crit.add(Restrictions.isNull("challenge"));
        }
    }

    return crit;
}

From source file:org.tonguetied.keywordmanagement.KeywordRepositoryImpl.java

License:Apache License

public PaginatedList<Keyword> findKeywords(Keyword keyword, final boolean ignoreCase, final Order order,
        final Integer firstResult, final Integer maxResults) throws IllegalArgumentException {
    if (keyword == null) {
        throw new IllegalArgumentException("keyword cannot be null");
    }/*from   ww  w.j av  a2 s  . c o  m*/
    final MatchMode matchMode = MatchMode.ANYWHERE;
    Example criterionKeyword = Example.create(keyword);
    criterionKeyword.enableLike(matchMode);
    if (ignoreCase) {
        criterionKeyword.ignoreCase();
    }

    // Normally, Hibernate performs a left-outer join, when searching for 
    // an object with collections using Criteria. This returns a ResultSet
    // that contains duplicate objects. In order to get a unique list of 
    // Keywords with paginated support, we need to a nested query to find
    // distinct matching ids, then get the Keywords. The end result is a
    // subselect in the main query, but only one query is sent.
    DetachedCriteria dc = DetachedCriteria.forClass(Keyword.class);
    dc.add(criterionKeyword);
    dc.setResultTransformer(DISTINCT_ROOT_ENTITY);

    Conjunction conjunction = createTranslationConditions(keyword.getTranslations(), ignoreCase, matchMode);
    if (conjunction != null)
        dc.createCriteria(FIELD_TRANSLATIONS).add(conjunction);
    dc.setProjection(Projections.id());

    Criteria criteria = getSession().createCriteria(Keyword.class);
    criteria.add(Subqueries.propertyIn(FIELD_ID, dc));
    if (Order.desc == order)
        criteria.addOrder(desc(FIELD_KEYWORD));
    else
        criteria.addOrder(asc(FIELD_KEYWORD));
    if (firstResult != null)
        criteria.setFirstResult(firstResult);
    if (maxResults != null)
        criteria.setMaxResults(maxResults);

    final List<Keyword> criteriaList = criteria.list();
    int maxListSize = 0;
    if (criteriaList.size() > 0) {
        maxListSize = calculateMaxListSize(criterionKeyword, conjunction);
    }

    return new PaginatedList<Keyword>(criteriaList, maxListSize);
}

From source file:org.tynamo.hibernate.services.HibernatePersistenceServiceImpl.java

License:Apache License

public List getInstances(final Object example, final TynamoClassDescriptor classDescriptor) {
    //create Criteria instance
    DetachedCriteria searchCriteria = DetachedCriteria.forClass(example.getClass());
    searchCriteria = alterCriteria(example.getClass(), searchCriteria);

    //loop over the example object's PropertyDescriptors
    for (TynamoPropertyDescriptor propertyDescriptor : classDescriptor.getPropertyDescriptors()) {
        //only add a Criterion to the Criteria instance if this property is searchable
        if (propertyDescriptor.isSearchable()) {
            String propertyName = propertyDescriptor.getName();
            Class propertyClass = propertyDescriptor.getPropertyType();
            Object value = getPropertyAccess().get(example, propertyName);

            //only add a Criterion to the Criteria instance if the value for this property is non-null
            if (value != null) {
                if (String.class.isAssignableFrom(propertyClass) && ((String) value).length() > 0) {
                    searchCriteria.add(Restrictions.like(propertyName, value.toString(), MatchMode.ANYWHERE));
                }/*from   w w  w  .j ava  2  s  .  c o  m*/
                /**
                 * 'one'-end of many-to-one, one-to-one
                 *
                 * Just match the identifier
                 */
                else if (propertyDescriptor.isObjectReference()) {
                    Serializable identifierValue = getIdentifier(value,
                            descriptorService.getClassDescriptor(propertyDescriptor.getBeanType()));
                    searchCriteria.createCriteria(propertyName).add(Restrictions.idEq(identifierValue));
                } else if (propertyClass.isPrimitive()) {
                    //primitive types: ignore zeroes in case of numeric types, ignore booleans anyway (TODO come up with something...)
                    if (!propertyClass.equals(boolean.class) && ((Number) value).longValue() != 0) {
                        searchCriteria.add(Restrictions.eq(propertyName, value));
                    }
                } else if (propertyDescriptor.isCollection()) {
                    //one-to-many or many-to-many
                    CollectionDescriptor collectionDescriptor = (CollectionDescriptor) propertyDescriptor;
                    TynamoClassDescriptor collectionClassDescriptor = descriptorService
                            .getClassDescriptor(collectionDescriptor.getElementType());
                    if (collectionClassDescriptor != null) {
                        String identifierName = collectionClassDescriptor.getIdentifierDescriptor().getName();
                        Collection<Serializable> identifierValues = new ArrayList<Serializable>();
                        Collection associatedItems = (Collection) value;
                        if (associatedItems != null && associatedItems.size() > 0) {
                            for (Object o : associatedItems) {
                                identifierValues.add(getIdentifier(o, collectionClassDescriptor));
                            }
                            //add a 'value IN collection' restriction
                            searchCriteria.createCriteria(propertyName)
                                    .add(Restrictions.in(identifierName, identifierValues));
                        }
                    }
                }
            }
        }
    }
    searchCriteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    // FIXME This won't work because the shadow proxy doesn't implement SessionImplementor
    // that session is casted to. Maybe we should inject SessionManager instead
    // and obtain the Session from it
    return searchCriteria.getExecutableCriteria(getSession()).list();
}