/**
* ***************************************************************************
* Copyright (c) 2010 Qcadoo Limited
* Project: Qcadoo Framework
* Version: 1.4
*
* This file is part of Qcadoo.
*
* Qcadoo is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published
* by the Free Software Foundation; either version 3 of the License,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* ***************************************************************************
*/
package com.qcadoo.model.api.search;
import org.hibernate.criterion.Subqueries;
import com.qcadoo.model.internal.search.SearchCriteria;
import com.qcadoo.model.internal.search.SearchCriterionImpl;
/**
* Utility with factory methods for {@link SearchCriterion} related with subqueries.
*
* @since 0.4.1
*/
public final class SearchSubqueries {
private SearchSubqueries() {
}
/**
* Creates criterion which checks if none row exists in given subquery.
*
* @param criteria
* subcriteria
* @return criteria
*/
public static SearchCriterion notExists(final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.notExists(((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
/**
* Creates criterion which checks if any row exists in given subquery.
*
* @param criteria
* subcriteria
* @return criteria
*/
public static SearchCriterion exists(final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.exists(((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
/**
* Creates criterion which checks if given value exists in given subquery.
*
* @param value
* value
* @param criteria
* subcriteria
* @return criteria
*/
public static SearchCriterion in(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.in(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
/**
* Creates criterion which checks if given field's value exists in given subquery.
*
* @param field
* field
* @param criteria
* subcriteria
* @return criteria
*/
public static SearchCriterion fieldIn(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyNotIn(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
/**
* Creates criterion which checks if given value doesn't exist in given subquery.
*
* @param value
* value
* @param criteria
* subcriteria
* @return criteria
*/
public static SearchCriterion notIn(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.notIn(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
/**
* Creates criterion which checks if given field's value doesn't exist in given subquery.
*
* @param field
* field
* @param criteria
* subcriteria
* @return criteria
*/
public static SearchCriterion fieldNotIn(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyNotIn(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion eq(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.eq(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion eqAll(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.eqAll(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldEq(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyEq(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldEqAll(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyEqAll(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion ge(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.ge(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion geAll(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.geAll(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion geSome(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.geSome(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldGe(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyGe(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldGeAll(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyGeAll(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldGeSome(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyGeSome(field,
((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion gt(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.gt(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion gtAll(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.gtAll(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion gtSome(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.gtSome(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldGt(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyGt(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldGtAll(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyGtAll(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldGtSome(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyGtSome(field,
((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion lt(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.lt(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion ltAll(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.ltAll(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion ltSome(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.ltSome(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldLt(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyLt(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldLtAll(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyLtAll(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldLtSome(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyLtSome(field,
((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion le(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.le(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion leAll(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.leAll(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion leSome(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.leSome(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldLe(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyLe(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldLeAll(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(
Subqueries.propertyLeAll(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldLeSome(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyLeSome(field,
((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion ne(final Object value, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.ne(value, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
public static SearchCriterion fieldNe(final String field, final SearchCriteriaBuilder criteria) {
return new SearchCriterionImpl(Subqueries.propertyNe(field, ((SearchCriteria) criteria).getHibernateDetachedCriteria()));
}
}