Java 类org.hibernate.criterion.Junction 实例源码
项目:onecmdb
文件:ConstrainGroupExpression.java
@Override
public DetachedCriteria getCriteria() {
DetachedCriteria crit = getParent().getCriteria();
Junction junction = null;
if (disjunction) {
junction = Restrictions.disjunction();
} else {
junction = Restrictions.conjunction();
}
for (Iterator iter = attributeExpressions.iterator(); iter.hasNext();) {
AttributeExpression aExpr = (AttributeExpression) iter.next();
DetachedCriteria attrCriteria = aExpr.getCriteria();
junction.add(Property.forName("longId").in(attrCriteria.setProjection(Projections.property("ownerId"))));
}
crit.add(junction);
return(crit);
}
项目:jspresso-ce
文件:DefaultCriteriaFactory.java
/**
* Complements a criteria by processing an enumeration query structure.
*
* @param path
* the path to the comparable property.
* @param enumQueryStructure
* the collection of checked / unchecked enumeration values.
* @return the created criterion or null if no criterion necessary.
*/
protected Criterion createEnumQueryStructureRestriction(String path, EnumQueryStructure enumQueryStructure) {
Set<String> inListValues = new HashSet<>();
boolean nullAllowed = false;
for (EnumValueQueryStructure inListValue : enumQueryStructure.getSelectedEnumerationValues()) {
if (inListValue.getValue() == null || "".equals(inListValue.getValue())) {
nullAllowed = true;
} else {
inListValues.add(inListValue.getValue());
}
}
Junction queryStructureRestriction = null;
if (!inListValues.isEmpty() || nullAllowed) {
queryStructureRestriction = Restrictions.disjunction();
if (!inListValues.isEmpty()) {
queryStructureRestriction.add(Restrictions.in(path, inListValues));
}
if (nullAllowed) {
queryStructureRestriction.add(Restrictions.isNull(path));
}
}
return queryStructureRestriction;
}
项目:OneCMDBwithMaven
文件:ConstrainGroupExpression.java
@Override
public DetachedCriteria getCriteria() {
DetachedCriteria crit = getParent().getCriteria();
Junction junction = null;
if (disjunction) {
junction = Restrictions.disjunction();
} else {
junction = Restrictions.conjunction();
}
for (Iterator iter = attributeExpressions.iterator(); iter.hasNext();) {
AttributeExpression aExpr = (AttributeExpression) iter.next();
DetachedCriteria attrCriteria = aExpr.getCriteria();
junction.add(Property.forName("longId").in(attrCriteria.setProjection(Projections.property("ownerId"))));
}
crit.add(junction);
return(crit);
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
private Junction getDatumJunction(AdvancedSampleSearchBean searchBean) {
// if AND and more than one type of datum, don't use junction
if (searchBean.getCharacterizationLogicalOperator().equals("and")
&& searchBean.getDatumTypeCount() > 1) {
return null;
}
Disjunction datumDisjunction = Restrictions.disjunction();
Conjunction datumConjunction = Restrictions.conjunction();
for (CharacterizationQueryBean charQuery : searchBean
.getCharacterizationQueries()) {
Criterion datumCrit = getDatumCriterion(charQuery);
if (datumCrit != null) {
datumDisjunction.add(datumCrit);
if (searchBean.getDatumTypeCount() == 1) {
datumConjunction.add(datumCrit);
}
}
}
// default to or if only one query
Junction junction = (searchBean.getCharacterizationLogicalOperator()
.equals("or") || searchBean.getCharacterizationQueries().size() == 1) ? datumDisjunction
: datumConjunction;
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Get the sample name junction used in sample queries
*
* @param searchBean
* @param crit
* @return
* @throws Exception
*/
private Junction getSampleNameJunction(AdvancedSampleSearchBean searchBean)
throws Exception {
Disjunction sampleDisjunction = Restrictions.disjunction();
Conjunction sampleConjunction = Restrictions.conjunction();
for (SampleQueryBean query : searchBean.getSampleQueries()) {
if (query.getNameType().equals("sample name")) {
Criterion sampleNameCrit = getSampleNameCriterion(query);
if (sampleNameCrit != null) {
sampleDisjunction.add(sampleNameCrit);
sampleConjunction.add(sampleNameCrit);
}
}
}
Junction junction = (searchBean.getSampleLogicalOperator().equals("or") || searchBean
.getSampleQueries().size() == 1) ? sampleDisjunction
: sampleConjunction;
return junction;
}
项目:cpagenie
文件:ImpressionReportDataTables.java
public boolean applySearchFilters(Criteria criteria, String searchTerm) {
boolean filterAdded = false;
//If search string is integer type, it only searches on Id field
if (NumberUtils.isDigits(searchTerm)) {
criteria.add(Restrictions.eq(getIdField(), Integer.parseInt(searchTerm)));
filterAdded = true;
} else if (getSearchFields() != null && getSearchFields().size() != 0) {
//Text filtering is applied only if you have specified getSearchFields().
String likeTerm = "%" + searchTerm + "%";
Junction disjunction = Restrictions.disjunction();
for (String field : getSearchFields()) {
//Performs case insensitive search on all search fields.
//Also does not searches on associations. Only value types are searched.
disjunction.add(Restrictions.ilike(field, likeTerm));
}
criteria.add(disjunction);
filterAdded = true;
}
return filterAdded;
}
项目:cpagenie
文件:LeadReportDataTables.java
public boolean applySearchFilters(Criteria criteria, String searchTerm) {
boolean filterAdded = false;
//If search string is integer type, it only searches on Id field
if (NumberUtils.isDigits(searchTerm)) {
criteria.add(Restrictions.eq(getIdField(), Integer.parseInt(searchTerm)));
filterAdded = true;
} else if (getSearchFields() != null && getSearchFields().size() != 0) {
//Text filtering is applied only if you have specified getSearchFields().
String likeTerm = "%" + searchTerm + "%";
Junction disjunction = Restrictions.disjunction();
for (String field : getSearchFields()) {
//Performs case insensitive search on all search fields.
//Also does not searches on associations. Only value types are searched.
disjunction.add(Restrictions.ilike(field, likeTerm));
}
criteria.add(disjunction);
filterAdded = true;
}
return filterAdded;
}
项目:caintegrator
文件:CopyNumberAlterationCriterionConverter.java
private void addChromosomeCoordinatesToCriterion(Integer chromosomeCoordinateHigh,
Integer chromosomeCoordinateLow, Criteria segmentDataCrit, String chromosomeNumber) {
if (chromosomeCoordinateHigh == null || chromosomeCoordinateLow == null) {
segmentDataCrit.add(chromosomeNumberExpression(chromosomeNumber));
if (chromosomeCoordinateHigh != null) {
segmentDataCrit.add(segmentEndLessThanHigh(chromosomeCoordinateHigh));
}
if (chromosomeCoordinateLow != null) {
segmentDataCrit.add(segmentStartGreaterThanLow(chromosomeCoordinateLow));
}
} else {
Junction overallOrStatement = Restrictions.disjunction();
// (loc.startPos <= lowerInput && loc.endPos >= lowerInput && loc.chromosome == chromosomeInput)
// || (loc.startPos >= lowerInput && loc.startPos <= higherInput && loc.chromosome == chromosomeInput)
overallOrStatement.add(Restrictions.conjunction().add(segmentStartLessThanLow(chromosomeCoordinateLow))
.add(segmentEndGreaterThanLow(chromosomeCoordinateLow)).add(
chromosomeNumberExpression(chromosomeNumber)));
overallOrStatement.add(Restrictions.conjunction().add(segmentStartGreaterThanLow(chromosomeCoordinateLow))
.add(segmentStartLessThanHigh(chromosomeCoordinateHigh)).add(
chromosomeNumberExpression(chromosomeNumber)));
segmentDataCrit.add(overallOrStatement);
}
}
项目:caintegrator
文件:CopyNumberAlterationCriterionConverter.java
private void addMultipleChromosomeCoordinatesToCriterion(Criteria segmentDataCrit,
List<GeneChromosomalLocation> geneLocations) {
Junction overallOrStatement = Restrictions.disjunction();
// (loc.startPos <= lowerInput && loc.endPos >= lowerInput && loc.chromosome == chromosomeInput)
// || (loc.startPos >= lowerInput && loc.startPos <= higherInput && loc.chromosome == chromosomeInput)
for (GeneChromosomalLocation geneLocation : geneLocations) {
Integer chromosomeCoordinateLow = geneLocation.getLocation().getStartPosition();
Integer chromosomeCoordinateHigh = geneLocation.getLocation().getEndPosition();
overallOrStatement.add(Restrictions.conjunction().add(segmentStartLessThanLow(chromosomeCoordinateLow))
.add(segmentEndGreaterThanLow(chromosomeCoordinateLow)).add(
chromosomeNumberExpression(Cai2Util.getInternalChromosomeNumber(
geneLocation.getLocation().getChromosome()))));
overallOrStatement.add(Restrictions.conjunction().add(segmentStartGreaterThanLow(chromosomeCoordinateLow))
.add(segmentStartLessThanHigh(chromosomeCoordinateHigh)).add(
chromosomeNumberExpression(Cai2Util.getInternalChromosomeNumber(
geneLocation.getLocation().getChromosome()))));
}
segmentDataCrit.add(overallOrStatement);
}
项目:caintegrator
文件:CaIntegrator2DaoImpl.java
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings(UNCHECKED) // Hibernate operations are untyped
public List<SegmentData> findMatchingSegmentDatasByLocation(List<SegmentData> segmentDatasToMatch,
Study study, Platform platform) {
Criteria segmentDataCrit = getCurrentSession().createCriteria(SegmentData.class);
Criteria arrayDataCrit = segmentDataCrit.createCriteria("arrayData");
Criteria reporterListsCrit = arrayDataCrit.createCriteria("reporterLists");
reporterListsCrit.add(Restrictions.eq(PLATFORM_ASSOCIATION, platform));
arrayDataCrit.add(Restrictions.eq(STUDY_ASSOCIATION, study));
Junction overallOrStatement = Restrictions.disjunction();
for (SegmentData segmentData : segmentDatasToMatch) {
ChromosomalLocation location = segmentData.getLocation();
overallOrStatement.add(Restrictions.conjunction().
add(Restrictions.eq("Location.startPosition", location.getStartPosition())).
add(Restrictions.eq("Location.endPosition", location.getEndPosition())));
}
segmentDataCrit.add(overallOrStatement);
return segmentDataCrit.list();
}
项目:ctsms
文件:CategoryCriterion.java
private static boolean applyCategoryCriterion(Object criteriaJunction, CategoryCriterion categoryCriterion) {
Criterion restriction = getCategoryCriterionRestriction(categoryCriterion);
if (restriction != null) {
if (criteriaJunction instanceof Criteria) {
((Criteria) criteriaJunction).add(restriction);
return true;
} else if (criteriaJunction instanceof Junction) {
((Junction) criteriaJunction).add(restriction);
return true;
}
}
return false;
}
项目:ctsms
文件:CategoryCriterion.java
private static void applyCategoryCriterions(Criteria criteria, Junction junction, CategoryCriterion... categoryCriterions) {
if (criteria != null && junction != null && categoryCriterions != null) {
if (categoryCriterions.length > 0) {
boolean applied = false;
for (int i = 0; i < categoryCriterions.length; i++) {
applied |= applyCategoryCriterion(junction, categoryCriterions[i]);
}
if (applied) {
criteria.add(junction);
}
}
}
}
项目:breeze.server.java
文件:CriteriaBuilder.java
private Criterion createCriterion(CriteriaWrapper crit, AndOrPredicate pred,
String contextAlias) {
Operator op = pred.getOperator();
Junction junction = (op == Operator.And) ? Restrictions.conjunction()
: Restrictions.disjunction();
for (Predicate subPred : pred.getPredicates()) {
Criterion cr = toCriterion(crit, subPred, contextAlias);
junction.add(cr);
}
return junction;
}
项目:opennmszh
文件:HibernateCriteriaConverter.java
@Override
public void visitAllComplete(final AllRestriction restriction) {
final int restrictionSize = restriction.getRestrictions().size();
final int criterionSize = m_criterions.size();
if (criterionSize < restrictionSize) {
throw new IllegalStateException("AllRestriction with " + restrictionSize + " entries encountered, but we only have " + criterionSize + " criterions!");
}
final List<Criterion> criterions = m_criterions.subList(criterionSize - restrictionSize, criterionSize);
final Junction j = org.hibernate.criterion.Restrictions.conjunction();
for (final Criterion crit : criterions) {
j.add(crit);
}
criterions.clear();
m_criterions.add(j);
}
项目:opennmszh
文件:HibernateCriteriaConverter.java
@Override
public void visitAnyComplete(final AnyRestriction restriction) {
final int restrictionSize = restriction.getRestrictions().size();
final int criterionSize = m_criterions.size();
if (criterionSize < restrictionSize) {
throw new IllegalStateException("AllRestriction with " + restrictionSize + " entries encountered, but we only have " + criterionSize + " criterions!");
}
final List<Criterion> criterions = m_criterions.subList(criterionSize - restrictionSize, criterionSize);
final Junction j = org.hibernate.criterion.Restrictions.disjunction();
for (final Criterion crit : criterions) {
j.add(crit);
}
criterions.clear();
m_criterions.add(j);
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Get the junction used in function queries
*
* @param searchBean
* @param crit
* @return
* @throws Exception
*/
private Junction getFunctionJunction(AdvancedSampleSearchBean searchBean,
DetachedCriteria crit) throws Exception {
// if AND and more than one query per type, don't use junction
if (searchBean.getCompositionLogicalOperator().equals("and")
&& searchBean.getFuncCount() > 1) {
return null;
}
Disjunction compDisjunction = Restrictions.disjunction();
Conjunction compConjunction = Restrictions.conjunction();
for (CompositionQueryBean compQuery : searchBean
.getCompositionQueries()) {
// function
if (compQuery.getCompositionType().equals("function")) {
Criterion funcCrit = this.getFunctionCriterion(compQuery, "",
"");
if (funcCrit != null) {
compDisjunction.add(funcCrit);
// only add to conjunction if there is only one query for
// the type
if (searchBean.getFuncCount() == 1) {
compConjunction.add(funcCrit);
}
}
}
}
// default to or if only one query
Junction junction = (searchBean.getCompositionLogicalOperator().equals(
"or") || searchBean.getCompositionQueries().size() == 1) ? compDisjunction
: compConjunction;
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Get the junction used in nanomaterial entity queries
*
* @param searchBean
* @param crit
* @return
* @throws Exception
*/
private Junction getNanomaterialEntityJunction(
AdvancedSampleSearchBean searchBean, DetachedCriteria crit)
throws Exception {
// if AND and more than one query per type, don't use junction
if (searchBean.getCompositionLogicalOperator().equals("and")
&& searchBean.getNanoEntityCount() > 1) {
return null;
}
Disjunction compDisjunction = Restrictions.disjunction();
Conjunction compConjunction = Restrictions.conjunction();
for (CompositionQueryBean compQuery : searchBean
.getCompositionQueries()) {
// nanomaterial entity
if (compQuery.getCompositionType().equals("nanomaterial entity")) {
Criterion nanoEntityCrit = getNanomaterialEntityCriterion(
compQuery, "");
if (nanoEntityCrit != null) {
compDisjunction.add(nanoEntityCrit);
// only add to conjunction if there is only one query for
// the type
if (searchBean.getNanoEntityCount() == 1) {
compConjunction.add(nanoEntityCrit);
}
}
}
}
// default to or if only one query
Junction junction = (searchBean.getCompositionLogicalOperator().equals(
"or") || searchBean.getCompositionQueries().size() == 1) ? compDisjunction
: compConjunction;
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Get the junction used in functionalizing entity queries
*
* @param searchBean
* @param crit
* @return
* @throws Exception
*/
private Junction getFunctionalizingEntityJunction(
AdvancedSampleSearchBean searchBean, DetachedCriteria crit)
throws Exception {
// if AND and more than one query per type, don't use junction
if (searchBean.getCompositionLogicalOperator().equals("and")
&& searchBean.getFuncEntityCount() > 1) {
return null;
}
Disjunction compDisjunction = Restrictions.disjunction();
Conjunction compConjunction = Restrictions.conjunction();
for (CompositionQueryBean compQuery : searchBean
.getCompositionQueries()) {
// functionalizing entity
if (compQuery.getCompositionType().equals("functionalizing entity")) {
Criterion funcEntityCrit = getFunctionalizingEntityCriterion(
compQuery, "");
if (funcEntityCrit != null) {
compDisjunction.add(funcEntityCrit);
// only add to conjunction if there is only one query for
// the type
if (searchBean.getFuncEntityCount() == 1) {
compConjunction.add(funcEntityCrit);
}
}
}
}
// default to or if only one query
Junction junction = (searchBean.getCompositionLogicalOperator().equals(
"or") || searchBean.getCompositionQueries().size() == 1) ? compDisjunction
: compConjunction;
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Get the sample disjunction used in sample queries
*
* @param searchBean
* @param crit
* @return
* @throws Exception
*/
private Junction getSampleJunction(AdvancedSampleSearchBean searchBean)
throws Exception {
// if there are more than one POC query in AND, don't use junction.
if (searchBean.getSampleLogicalOperator().equals("and")
&& searchBean.getPocCount() > 1) {
return null;
}
Disjunction sampleDisjunction = Restrictions.disjunction();
Conjunction sampleConjunction = Restrictions.conjunction();
for (SampleQueryBean query : searchBean.getSampleQueries()) {
if (query.getNameType().equals("sample name")) {
Criterion sampleNameCrit = getSampleNameCriterion(query);
if (sampleNameCrit != null) {
sampleDisjunction.add(sampleNameCrit);
sampleConjunction.add(sampleNameCrit);
}
}
if (query.getNameType().equals("point of contact name")) {
Disjunction pocDisjunction = getPointOfContactDisjunction(
searchBean, "poc.", "otherPOC.");
if (pocDisjunction != null) {
sampleDisjunction.add(pocDisjunction);
if (searchBean.getPocCount() == 1) {
sampleConjunction.add(pocDisjunction);
}
}
}
}
Junction junction = (searchBean.getSampleLogicalOperator().equals("or") || searchBean
.getSampleQueries().size() == 1) ? sampleDisjunction
: sampleConjunction;
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Set the DetachedCriteria for sample queries
*
* @param searchBean
* @param crit
* @throws Exception
*/
private void setSampleCriteria(AdvancedSampleSearchBean searchBean,
DetachedCriteria crit) throws Exception {
if (searchBean.getSampleQueries().isEmpty()) {
return;
}
// join POC
if (searchBean.getHasPOC()) {
crit.createAlias("primaryPointOfContact", "poc");
crit.createAlias("poc.organization", "organization");
crit.createAlias("otherPointOfContactCollection", "otherPOC",
CriteriaSpecification.LEFT_JOIN);
crit.createAlias("otherPOC.organization", "otherOrg",
CriteriaSpecification.LEFT_JOIN);
}
Junction junction = getSampleJunction(searchBean);
if (junction != null) {
crit.add(junction);
}
// more than one POC and AND
else {
crit.add(getSampleNameJunction(searchBean));
for (SampleQueryBean query : searchBean.getSampleQueries()) {
if (query.getNameType().equals("point of contact name")) {
DetachedCriteria subCrit = getPointOfContactSubquery(query,
"poc.", "otherPOC.", "id");
crit.add(Subqueries.exists(subCrit));
}
}
}
}
项目:further-open-core
文件:CriterionBuilderHibernateImpl.java
/**
* @param criterion
* @see #visit(edu.utah.further.core.data.search.JunctionCriterionImpl)
*/
public void visitJunction()
{
final SearchType searchType = criterion.getSearchType();
switch (searchType)
{
case CONJUNCTION:
{
result = Restrictions.conjunction();
break;
}
case DISJUNCTION:
{
result = Restrictions.disjunction();
break;
}
default:
{
throw new BusinessRuleException(unsupportedMessage(searchType));
}
}
// Add junction arguments
for (final Criterion c : convertedCriteria)
{
((Junction) result).add(c);
}
}
项目:caarray
文件:SampleDaoImpl.java
private void addAnnotationCriterionValues(Criteria c, Junction junction, Set<String> values,
String assocPath, String alias) {
if (!values.isEmpty()) {
c.createAlias(assocPath, alias);
junction.add(Restrictions.in(alias + ".value", values));
}
}
项目:seeking
文件:HibernateQueryTranslatorTest.java
@Test
public void or() {
Criterion o1 = Restrictions.eq(property, value);
Criterion o2 = Restrictions.in(property, values);
Criterion o3 = Restrictions.lt(property, value);
Junction expected = Restrictions.disjunction().add(o1).add(o2).add(o3);
assertEquivalent(expected, translator.or(o1, o2, o3));
}
项目:seeking
文件:HibernateQueryTranslatorTest.java
@Test
public void and() {
Criterion o1 = Restrictions.eq(property, value);
Criterion o2 = Restrictions.in(property, values);
Criterion o3 = Restrictions.lt(property, value);
Junction expected = Restrictions.conjunction().add(o1).add(o2).add(o3);
assertEquivalent(expected, translator.and(o1, o2, o3));
}
项目:OpenNMS
文件:HibernateCriteriaConverter.java
@Override
public void visitAllComplete(final AllRestriction restriction) {
final int restrictionSize = restriction.getRestrictions().size();
final int criterionSize = m_criterions.size();
if (criterionSize < restrictionSize) {
throw new IllegalStateException("AllRestriction with " + restrictionSize + " entries encountered, but we only have " + criterionSize + " criterions!");
}
final List<Criterion> criterions = m_criterions.subList(criterionSize - restrictionSize, criterionSize);
final Junction j = org.hibernate.criterion.Restrictions.conjunction();
for (final Criterion crit : criterions) {
j.add(crit);
}
criterions.clear();
m_criterions.add(j);
}
项目:OpenNMS
文件:HibernateCriteriaConverter.java
@Override
public void visitAnyComplete(final AnyRestriction restriction) {
final int restrictionSize = restriction.getRestrictions().size();
final int criterionSize = m_criterions.size();
if (criterionSize < restrictionSize) {
throw new IllegalStateException("AllRestriction with " + restrictionSize + " entries encountered, but we only have " + criterionSize + " criterions!");
}
final List<Criterion> criterions = m_criterions.subList(criterionSize - restrictionSize, criterionSize);
final Junction j = org.hibernate.criterion.Restrictions.disjunction();
for (final Criterion crit : criterions) {
j.add(crit);
}
criterions.clear();
m_criterions.add(j);
}
项目:caintegrator
文件:CaIntegrator2DaoImpl.java
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings(UNCHECKED) // Hibernate operations are untyped
public List<Gene> findGenesByLocation(String chromosome, Integer startPosition, Integer endPosition,
GenomeBuildVersionEnum genomeBuildVersion) {
String locStartPosition = "location.startPosition";
String locEndPosition = "location.endPosition";
Criteria geneLocationCriteria = getCurrentSession().createCriteria(GeneChromosomalLocation.class);
// (gene.startPos <= startPosition && gene.endPos >= startPosition)
// || (gene.startPos >= lowerInput && gene.startPos <= higherInput)
Junction overallOrStatement = Restrictions.disjunction();
overallOrStatement.add(Restrictions.conjunction().add(Restrictions.le(locStartPosition, startPosition))
.add(Restrictions.ge(locEndPosition, startPosition)));
overallOrStatement.add(Restrictions.conjunction().add(Restrictions.ge(locStartPosition, startPosition)).add(
Restrictions.le(locStartPosition, endPosition)));
geneLocationCriteria.add(overallOrStatement);
geneLocationCriteria.add(getChromosomeRestriction(chromosome));
geneLocationCriteria.createCriteria("geneLocationConfiguration").
add(Restrictions.eq("genomeBuildVersion", genomeBuildVersion));
geneLocationCriteria.setProjection(Projections.property("geneSymbol"));
List<String> geneSymbols = geneLocationCriteria.list();
return geneSymbols.isEmpty() ? new ArrayList<Gene>()
: getCurrentSession().createCriteria(Gene.class).setProjection(
Projections.distinct(Projections.property(SYMBOL_ATTRIBUTE))).
add(Restrictions.in(SYMBOL_ATTRIBUTE, geneSymbols)).
addOrder(Order.asc(SYMBOL_ATTRIBUTE)).list();
}
项目:jspresso-ce
文件:DefaultCriteriaFactory.java
/**
* Complete criteria with translations.
*
* @param currentCriteria
* the current criteria
* @param translationsPath
* the translations path
* @param translationsAlias
* the translations alias
* @param property
* the property
* @param propertyDescriptor
* the property descriptor
* @param prefixedProperty
* the prefixed property
* @param locale
* the locale
* @param componentDescriptor
* the component descriptor
* @param queryComponent
* the query component
* @param context
* the context
*/
@SuppressWarnings("unchecked")
protected void completeCriteriaWithTranslations(DetachedCriteria currentCriteria, String translationsPath,
String translationsAlias, Map.Entry<String, Object> property,
IPropertyDescriptor propertyDescriptor, String prefixedProperty,
Locale locale, IComponentDescriptor<?> componentDescriptor,
IQueryComponent queryComponent, Map<String, Object> context) {
if (propertyDescriptor instanceof IStringPropertyDescriptor && ((IStringPropertyDescriptor) propertyDescriptor)
.isTranslatable()) {
String nlsOrRawValue = null;
String nlsValue = (String) property.getValue();
String barePropertyName = property.getKey();
if (property.getKey().endsWith(IComponentDescriptor.NLS_SUFFIX)) {
barePropertyName = barePropertyName.substring(0,
barePropertyName.length() - IComponentDescriptor.NLS_SUFFIX.length());
} else {
nlsOrRawValue = nlsValue;
}
if (nlsValue != null) {
Junction translationRestriction = Restrictions.conjunction();
translationRestriction.add(createStringRestriction(
((ICollectionPropertyDescriptor<IPropertyTranslation>) componentDescriptor.getPropertyDescriptor(
translationsPath)).getCollectionDescriptor().getElementDescriptor().getPropertyDescriptor(
IPropertyTranslation.TRANSLATED_VALUE), translationsAlias + "." + IPropertyTranslation.TRANSLATED_VALUE,
nlsValue, componentDescriptor, queryComponent, context));
String languagePath = translationsAlias + "." + IPropertyTranslation.LANGUAGE;
translationRestriction.add(Restrictions.eq(languagePath, locale.getLanguage()));
translationRestriction.add(Restrictions.eq(translationsAlias + "." + IPropertyTranslation.PROPERTY_NAME,
barePropertyName));
Junction disjunction = Restrictions.disjunction();
disjunction.add(translationRestriction);
if (nlsOrRawValue != null) {
Junction rawValueRestriction = Restrictions.conjunction();
rawValueRestriction.add(Restrictions.disjunction().add(Restrictions.isNull(languagePath)).add(Restrictions.ne(
languagePath, locale.getLanguage())));
String rawPropertyName = barePropertyName + IComponentDescriptor.RAW_SUFFIX;
rawValueRestriction.add(createStringRestriction(componentDescriptor.getPropertyDescriptor(rawPropertyName),
rawPropertyName, nlsOrRawValue, componentDescriptor, queryComponent, context));
disjunction.add(rawValueRestriction);
}
currentCriteria.add(disjunction);
}
} else {
completeCriteria(currentCriteria, createStringRestriction(propertyDescriptor, prefixedProperty,
(String) property.getValue(), componentDescriptor, queryComponent, context));
}
}
项目:jspresso-ce
文件:DefaultCriteriaFactory.java
/**
* Creates a string based restriction.
*
* @param propertyDescriptor
* the property descriptor.
* @param prefixedProperty
* the full path of the property.
* @param propertyValue
* the string property value.
* @param componentDescriptor
* the component descriptor
* @param queryComponent
* the query component
* @param context
* the context
* @return the created criterion or null if no criterion necessary.
*/
protected Criterion createStringRestriction(IPropertyDescriptor propertyDescriptor, String prefixedProperty,
String propertyValue, IComponentDescriptor<?> componentDescriptor,
IQueryComponent queryComponent, Map<String, Object> context) {
Junction disjunction = null;
if (propertyValue.length() > 0) {
String[] stringDisjunctions = propertyValue.split(IQueryComponent.DISJUNCT);
disjunction = Restrictions.disjunction();
for (String stringDisjunction : stringDisjunctions) {
Junction conjunction = Restrictions.conjunction();
String[] stringConjunctions = stringDisjunction.split(IQueryComponent.CONJUNCT);
for (String stringConjunction : stringConjunctions) {
String val = stringConjunction;
if (val.length() > 0) {
Criterion crit;
boolean negate = false;
if (val.startsWith(IQueryComponent.NOT_VAL)) {
val = val.substring(1);
negate = true;
}
if (IQueryComponent.NULL_VAL.equals(val)) {
crit = Restrictions.isNull(prefixedProperty);
} else {
if (IEntity.ID.equals(propertyDescriptor.getName())
|| propertyDescriptor instanceof IEnumerationPropertyDescriptor) {
crit = Restrictions.eq(prefixedProperty, val);
} else {
crit = createLikeRestriction(propertyDescriptor, prefixedProperty, val, componentDescriptor,
queryComponent, context);
}
}
if (negate) {
crit = Restrictions.not(crit);
}
conjunction.add(crit);
}
}
disjunction.add(conjunction);
}
}
return disjunction;
}
项目:jspresso-ce
文件:DefaultCriteriaFactory.java
/**
* Creates a criterion by processing a comparable query structure.
*
* @param path
* the path to the comparable property.
* @param queryStructure
* the comparable query structure.
* @param componentDescriptor
* the component descriptor
* @param queryComponent
* the query component
* @param context
* the context
* @return the created criterion or null if no criterion necessary.
*/
protected Criterion createComparableQueryStructureRestriction(String path, ComparableQueryStructure queryStructure,
IComponentDescriptor<?> componentDescriptor,
IQueryComponent queryComponent,
Map<String, Object> context) {
Junction queryStructureRestriction = null;
if (queryStructure.isRestricting()) {
queryStructureRestriction = Restrictions.conjunction();
String comparator = queryStructure.getComparator();
Object infValue = queryStructure.getInfValue();
Object supValue = queryStructure.getSupValue();
Object compareValue = infValue;
if (compareValue == null) {
compareValue = supValue;
}
switch (comparator) {
case ComparableQueryStructureDescriptor.EQ:
queryStructureRestriction.add(Restrictions.eq(path, compareValue));
break;
case ComparableQueryStructureDescriptor.GT:
queryStructureRestriction.add(Restrictions.gt(path, compareValue));
break;
case ComparableQueryStructureDescriptor.GE:
queryStructureRestriction.add(Restrictions.ge(path, compareValue));
break;
case ComparableQueryStructureDescriptor.LT:
queryStructureRestriction.add(Restrictions.lt(path, compareValue));
break;
case ComparableQueryStructureDescriptor.LE:
queryStructureRestriction.add(Restrictions.le(path, compareValue));
break;
case ComparableQueryStructureDescriptor.NU:
queryStructureRestriction.add(Restrictions.isNull(path));
break;
case ComparableQueryStructureDescriptor.NN:
queryStructureRestriction.add(Restrictions.isNotNull(path));
break;
case ComparableQueryStructureDescriptor.BE:
if (infValue != null && supValue != null) {
queryStructureRestriction.add(Restrictions.between(path, infValue, supValue));
} else if (infValue != null) {
queryStructureRestriction.add(Restrictions.ge(path, infValue));
} else {
queryStructureRestriction.add(Restrictions.le(path, supValue));
}
break;
default:
break;
}
}
return queryStructureRestriction;
}
项目:civilizer
文件:SearchQueryCreator.java
private static Junction buildQueryWithKeywords(List<Keyword> words, int target, boolean any) {
final String[] targetColumns = {
null, "TAG_NAME", "TITLE", "CONTENT", "this_.FRAGMENT_ID"
};
final String column = targetColumns[target];
if (column == null) {
throw new IllegalArgumentException();
}
final Junction junction = any ?
Restrictions.disjunction() : Restrictions.conjunction();
for (SearchParams.Keyword w : words) {
final Pair<String, Character> tmp = getPatternFromKeyword(w);
final String pattern = tmp.getFirst();
final char escapeChar = tmp.getSecond();
String sql = null;
if (w.isTrivial()) {
if (w.isCaseSensitive()) {
sql = column + " like " + "'" + pattern + "'";
}
else {
sql = "lower(" + column + ") like " + "'" + pattern.toLowerCase() + "'";
}
if (escapeChar != 0) {
sql += " escape '" + escapeChar + "'";
}
}
else {
if (w.isId()) {
sql = column + " = " + pattern;
}
else if (w.isRegex()) {
sql = column + " regexp " + "'" + pattern + "'";
}
else if (w.isWholeWord()) {
if (w.isCaseSensitive()) {
sql = column + " regexp " + "'\\b" + pattern + "\\b'";
}
else {
sql = "lower(" + column + ") regexp " + "'\\b" + pattern.toLowerCase() + "\\b'";
}
}
else if (w.isBeginningWith()) {
if (w.isCaseSensitive()) {
sql = column + " regexp " + "'\\b" + pattern + "'";
}
else {
sql = "lower(" + column + ") regexp " + "'\\b" + pattern.toLowerCase() + "'";
}
}
else if (w.isEndingWith()) {
if (w.isCaseSensitive()) {
sql = column + " regexp " + "'" + pattern + "\\b'";
}
else {
sql = "lower(" + column + ") regexp " + "'" + pattern.toLowerCase() + "\\b'";
}
}
else {
throw new UnsupportedOperationException();
}
}
if (w.isInverse()) {
sql = "not " + sql;
}
// [TODO] research compatibility issues with other DBMS vendors
junction.add(Restrictions.sqlRestriction(sql));
}
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Get the junction used in composition queries
*
* @param searchBean
* @param crit
* @return
* @throws Exception
*/
private Junction getCompositionJunction(
AdvancedSampleSearchBean searchBean, DetachedCriteria crit)
throws Exception {
// if AND and more than one query per type, don't use junction
if (searchBean.getCompositionLogicalOperator().equals("and")
&& searchBean.getFuncCount() > 1
&& searchBean.getNanoEntityCount() > 1
&& searchBean.getFuncEntityCount() > 1) {
return null;
}
Disjunction compDisjunction = Restrictions.disjunction();
Conjunction compConjunction = Restrictions.conjunction();
for (CompositionQueryBean compQuery : searchBean
.getCompositionQueries()) {
// function
if (compQuery.getCompositionType().equals("function")) {
Criterion funcCrit = this.getFunctionCriterion(compQuery,
"inherentFunction.", "function.");
if (funcCrit != null) {
compDisjunction.add(funcCrit);
// only add to conjunction if there is only one query for
// the type
if (searchBean.getFuncCount() == 1) {
compConjunction.add(funcCrit);
}
}
}
// nanomaterial entity
else if (compQuery.getCompositionType().equals(
"nanomaterial entity")) {
Criterion nanoEntityCrit = getNanomaterialEntityCriterion(
compQuery, "nanoEntity.");
if (nanoEntityCrit != null) {
compDisjunction.add(nanoEntityCrit);
// only add to conjunction if there is only one query for
// the type
if (searchBean.getNanoEntityCount() == 1) {
compConjunction.add(nanoEntityCrit);
}
}
}
// functionalizing entity
else if (compQuery.getCompositionType().equals(
"functionalizing entity")) {
Criterion funcEntityCrit = getFunctionalizingEntityCriterion(
compQuery, "funcEntity.");
if (funcEntityCrit != null) {
compDisjunction.add(funcEntityCrit);
// only add to conjunction if there is only one query for
// the type
if (searchBean.getFuncEntityCount() == 1) {
compConjunction.add(funcEntityCrit);
}
}
}
}
// default to or if only one query
Junction junction = (searchBean.getCompositionLogicalOperator().equals(
"or") || searchBean.getCompositionQueries().size() == 1) ? compDisjunction
: compConjunction;
return junction;
}
项目:cananolab
文件:AdvancedSampleServiceHelper.java
/**
* Set the DetachedCriteria used for composition queries
*
* @param searchBean
* @param crit
* @throws Exception
*/
private void setCompositionCriteriaBase(AdvancedSampleSearchBean searchBean,
DetachedCriteria crit) throws Exception {
if (searchBean.getCompositionQueries().isEmpty()) {
return;
}
// composition queries
crit.createAlias("sampleComposition", "comp",
CriteriaSpecification.LEFT_JOIN);
Boolean hasChemicalName = searchBean.getHasChemicalName();
// join function
if (searchBean.getHasFunction()) {
crit.createAlias("comp.nanomaterialEntityCollection", "nanoEntity",
CriteriaSpecification.LEFT_JOIN);
crit.createAlias("nanoEntity.composingElementCollection",
"compElement", CriteriaSpecification.LEFT_JOIN);
crit.createAlias("compElement.inherentFunctionCollection",
"inherentFunction", CriteriaSpecification.LEFT_JOIN);
crit.createAlias("comp.functionalizingEntityCollection",
"funcEntity", CriteriaSpecification.LEFT_JOIN);
crit.createAlias("funcEntity.functionCollection", "function",
CriteriaSpecification.LEFT_JOIN);
}
// join nanomaterialEntity
if (searchBean.getHasNanomaterial() && !searchBean.getHasFunction()) {
crit.createAlias("comp.nanomaterialEntityCollection", "nanoEntity",
CriteriaSpecification.LEFT_JOIN);
if (hasChemicalName) {
crit.createAlias("nanoEntity.composingElementCollection",
"compElement", CriteriaSpecification.LEFT_JOIN);
}
}
// join functionalizing entity
if (searchBean.getHasAgentMaterial() && !searchBean.getHasFunction()) {
crit.createAlias("comp.functionalizingEntityCollection",
"funcEntity", CriteriaSpecification.LEFT_JOIN);
}
Junction junction = getCompositionJunction(searchBean, crit);
if (junction != null) {
crit.add(junction);
}
/* if (searchBean.getNanoEntityCount() > 1) {
setNanomaterialEntityAndCriteria(searchBean, crit, "id");
}
if (searchBean.getFuncEntityCount() > 1) {
setFunctionalizingEntityAndCriteria(searchBean, crit, "id");
}
if (searchBean.getFuncCount() > 1) {
setFunctionAndCriteria(searchBean, crit, "id");
} */
}
项目:further-open-core
文件:HibernateLoadByIdExecutor.java
/**
* @param request
* @return
* @see edu.utah.further.core.chain.AbstractRequestHandler#process(edu.utah.further.core.api.chain.ChainRequest)
*/
@Override
public boolean process(final ChainRequest request)
{
// Read input arguments
final HibernateExecReq executionReq = new HibernateExecReq(request);
final SessionFactory sessionFactory = executionReq.getSessionFactory();
notNull(sessionFactory, "Expected SessionFactory");
final Class<? extends PersistentEntity<?>> rootEntity = executionReq
.getRootEntity();
notNull(rootEntity, "Expected root entity class");
// Read the search criteria's root entity meta data
final List<Object> list = executionReq.getResult();
final Object[] listArray = CollectionUtil.toArrayNullSafe(list);
final ClassMetadata classMetadata = sessionFactory.getClassMetadata(rootEntity);
final String identifierName = classMetadata.getIdentifierPropertyName();
final Type identifierType = classMetadata.getIdentifierType();
final int numTypes = listArray.length;
final Type[] types = new Type[numTypes];
for (int i = 0; i < numTypes; i++)
{
types[i] = identifierType;
}
// Build Hibernate criteria
final GenericCriteria criteria = GenericCriteriaFactory.criteria(
CriteriaType.CRITERIA, rootEntity, sessionFactory.getCurrentSession());
if (identifierType.isComponentType())
{
final String sqlInClause = HibernateUtil.sqlRestrictionCompositeIn(
rootEntity, sessionFactory, numTypes);
criteria.add(Restrictions.sqlRestriction(sqlInClause, listArray, types));
}
else
{
final int size = list.size();
if (size > MAX_IN)
{
// Create a disjunction of IN clauses. Add MAX_IN elements at a time to
// each IN clause (except the last IN, whose size is size % MAX_IN).
final Junction junction = Restrictions.disjunction();
for (int i = 0; i < size; i += MAX_IN)
{
junction.add(Restrictions.in(THIS + identifierName,
list.subList(i, Math.max(size, MAX_IN + i))));
}
criteria.add(junction);
}
else
{
// Single chunk, add directly as a criterion without the junction trick
criteria.add(Restrictions.in(THIS + identifierName, list));
}
}
executionReq.setResult(criteria);
return false;
}
项目:caarray
文件:SampleDaoImpl.java
/**
* {@inheritDoc}
*/
@SuppressWarnings({ "unchecked", "PMD" })
public <T extends AbstractBioMaterial> List<T> searchByCriteria(PageSortParams<T> params,
BiomaterialSearchCriteria criteria) {
Criteria c = getCurrentSession().createCriteria(AbstractBioMaterial.class);
if (criteria.getExperiment() != null) {
c.add(Restrictions.eq("experiment", criteria.getExperiment()));
}
if (!criteria.getNames().isEmpty()) {
c.add(Restrictions.in("name", criteria.getNames()));
}
if (!criteria.getExternalIds().isEmpty()) {
c.add(Restrictions.in("externalId", criteria.getExternalIds()));
}
if (!criteria.getBiomaterialClasses().isEmpty()) {
// unfortunately due to a hibernate bug we have to explicitly specify discriminators
// rather than being able to use classnames
Set<String> discriminators = new HashSet<String>();
for (Class<? extends AbstractBioMaterial> bmClass : criteria.getBiomaterialClasses()) {
discriminators.add(getDiscriminator(bmClass));
}
c.add(Restrictions.in("class", discriminators));
}
if (!criteria.getAnnotationCriterions().isEmpty()) {
Set<String> diseaseStates = new HashSet<String>();
Set<String> tissueSites = new HashSet<String>();
Set<String> cellTypes = new HashSet<String>();
Set<String> materialTypes = new HashSet<String>();
for (AnnotationCriterion ac : criteria.getAnnotationCriterions()) {
if (ac.getCategory().getName()
.equals(ExperimentOntologyCategory.DISEASE_STATE.getCategoryName())) {
diseaseStates.add(ac.getValue());
} else if (ac.getCategory().getName()
.equals(ExperimentOntologyCategory.CELL_TYPE.getCategoryName())) {
cellTypes.add(ac.getValue());
} else if (ac.getCategory().getName()
.equals(ExperimentOntologyCategory.MATERIAL_TYPE.getCategoryName())) {
materialTypes.add(ac.getValue());
} else if (ac.getCategory().getName()
.equals(ExperimentOntologyCategory.ORGANISM_PART.getCategoryName())) {
tissueSites.add(ac.getValue());
}
}
if (!diseaseStates.isEmpty() || !tissueSites.isEmpty() || !cellTypes.isEmpty()
|| !materialTypes.isEmpty()) {
Junction and = Restrictions.conjunction();
addAnnotationCriterionValues(c, and, diseaseStates, "diseaseState", "ds");
addAnnotationCriterionValues(c, and, tissueSites, "tissueSite", "ts");
addAnnotationCriterionValues(c, and, materialTypes, "materialType", "mt");
addAnnotationCriterionValues(c, and, cellTypes, "cellType", "ct");
c.add(and);
}
}
c.setFirstResult(params.getIndex());
if (params.getPageSize() > 0) {
c.setMaxResults(params.getPageSize());
}
c.addOrder(toOrder(params));
return c.list();
}