public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { if (POSITIVE_VALUES.contains(criterion.getValue().toLowerCase())) { criterion.setValue(TARGET_POSITIVE_VALUE); } else if (NEGATIVE_VALUES.contains(criterion.getValue().toLowerCase())) { criterion.setValue(TARGET_NEGATIVE_VALUE); } return criterion; }
@Override public boolean validateFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String val = criterion.getValue().toLowerCase(); if (POSITIVE_VALUES.contains(val) || NEGATIVE_VALUES.contains(val)) { return true; } hint.addError(new SearchCriterionError(FieldErrorType.INVALID_CONTENT_AVAILABILITY_FORMAT, null)); return false; }
@Override protected FieldCriterion mergeConditions(List<FieldCriterion> criterions) { if (CollectionUtils.isEmpty(criterions)) { return null; } StringBuilder builder = new StringBuilder(); for (FieldCriterion criterion : criterions) { builder.append(criterion.getValue()); builder.append(" "); } return new FieldCriterion(criterions.get(0).getField(), builder.toString().trim(), criterions.get(0).getOperator()); }
@Override public boolean validateFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String val = criterion.getValue().toLowerCase(); for (Entry<String, List<String>> entry : transform.entrySet()) { if (entry.getKey().equals(val)) { return true; } } hint.addError(new SearchCriterionError(errorType, null)); return false; }
@Override public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { criterion.setValue(IdentifierFormatter.simplify(criterion.getValue())); return criterion; }
public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { criterion.setValue(stripQuotesIfPresent(criterion.getValue())); return criterion; }
public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { criterion.setValue(addQuotesIfNotPresent(criterion.getValue())); return criterion; }
@Override public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { for (Entry<String, List<String>> entry : transform.entrySet()) { if (entry.getKey().equals(criterion.getValue().toLowerCase())) { if (entry.getValue().size() > 1 && hint.isExpandFieldValues()) { BooleanCriterion result = new BooleanCriterion(); for (String fieldName : entry.getValue()) { FieldCriterion fieldCriterion = new FieldCriterion(criterion.getField(), fieldName, criterion.isParseFlag()); result.addCriterion(fieldCriterion, SearchOperator.OR); } result.setOperator(criterion.getOperator()); return result; } else { criterion.setValue(entry.getValue().get(0)); } } } return criterion; }
@Override public boolean validateFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String val = criterion.getValue(); if (isDate(val, hint.isLenientCheck())) { return true; } hint.addError(new SearchCriterionError(FieldErrorType.INVALID_DATE_FORMAT, new String[] { val })); return false; }
private BooleanCriterion expandMultipleField(FieldCriterion criterion, Set<String> multipleExpandFieldNames) { BooleanCriterion fieldCriterion = new BooleanCriterion(); String value = criterion.getValue(); for (String field : multipleExpandFieldNames) { fieldCriterion.addCriterion(new FieldCriterion(field, value), (criterion.getOperator() == SearchOperator.NOT) ? SearchOperator.NOT :SearchOperator.OR); } return fieldCriterion; }
@Override protected SearchCriterion fieldCriterionHandler(FieldCriterion criterion, SearchScheme scheme, SearchCriterionTransformerHint hint) { List<String> fieldNames = getLanguageFieldName(scheme, criterion.getField()); if (fieldNames.size() > 1 && hint.isExpandFieldValues()) { BooleanCriterion result = new BooleanCriterion(); result.setOperator(SearchOperator.OR); for(String fieldName:fieldNames) { FieldCriterion fieldCriterion = new FieldCriterion(fieldName, criterion.getValue(), criterion.isParseFlag()); result.addCriterion(fieldCriterion, SearchOperator.OR); } return result; }else { String fieldName = fieldNames.get(0); criterion.setField(fieldName); hint.getFieldsUsed().add(fieldName); return criterion; } }
public void translateSearchCriterionToFormField(SearchCriterion criterion, List<AdvancedFormFieldCondition> advancedForm, BooleanCriterion parent, SearchScheme scheme) { if (criterion instanceof BooleanCriterion) { BooleanCriterion bc = (BooleanCriterion)criterion; boolean firstChild = true; for (SearchCriterion subcriterion : bc.getCriteria()) { translateSearchCriterionToFormField(subcriterion, advancedForm, bc, scheme); if (firstChild && parent != null && bc.getOperator() == SearchOperator.OR) { advancedForm.get(advancedForm.size()-1).setOperator(AdvancedFormFieldCondition.OR_OPERATOR); } else if (firstChild && parent != null) { advancedForm.get(advancedForm.size()-1).setOperator(AdvancedFormFieldCondition.AND_OPERATOR); } firstChild = false; } } else if (criterion instanceof FieldCriterion) { FieldCriterion fieldCriterion = (FieldCriterion)criterion; String presentationFieldName = getPresentationFieldName(scheme, fieldCriterion.getField()); advancedForm.add(new AdvancedFormFieldCondition(translateSearchOperator(fieldCriterion.getOperator(), parent), presentationFieldName, fieldCriterion.getValue())); } else if (criterion instanceof FieldRangeCriterion) { FieldRangeCriterion fieldRangeCriterion = (FieldRangeCriterion)criterion; String presentationFieldName = getPresentationFieldName(scheme, fieldRangeCriterion.getField()); advancedForm.add(new AdvancedFormFieldCondition(translateSearchOperator(fieldRangeCriterion.getOperator(), parent), presentationFieldName, new String[] {fieldRangeCriterion.getFrom(), fieldRangeCriterion.getTo()})); } }
@Override protected SearchCriterion fieldCriterionHandler(FieldCriterion criterion, SearchScheme scheme, SearchCriterionTransformerHint hint) { if (!isFieldUsageAllowed(criterion.getField(), scheme)) { hint.addError(new SearchCriterionError(FieldErrorType.INVALID_FIELD, new Object[] { criterion.getField() })); return new BooleanCriterion(); } if (StringUtils.isBlank(criterion.getValue())) { hint.addError(new SearchCriterionError(FieldErrorType.EMPTY_VALUE, null)); return new BooleanCriterion(); } if (criterion.getValue().length() > CRITERION_VALUE_MAX_LENGTH) { hint.addError(new SearchCriterionError(FieldErrorType.TO_LONG_VALUE, new Object[] { CRITERION_VALUE_MAX_LENGTH })); return new BooleanCriterion(); } SearchCriterionTypeValidator additionalValidator = getValidator(criterion.getField(), scheme); if (additionalValidator != null && !additionalValidator.validateFieldCriterion(criterion, hint)) { return new BooleanCriterion(); } return criterion; }
public SearchCriterion transformFieldCriterion(FieldCriterion criterion, SearchCriterionTransformerHint hint) { String dateString = criterion.getValue(); FieldRangeCriterion dateRangeCriterion = new FieldRangeCriterion(criterion.getField()); dateRangeCriterion.setOperator(criterion.getOperator()); dateRangeCriterion.setFrom(appendMissingDateFormat(dateString, false)); dateRangeCriterion.setTo(appendMissingDateFormat(dateString, true)); return dateRangeCriterion; }
final String value = criterion.getValue(); final boolean isExactSearch = criterion.getField().startsWith(SolrConstant.FIELD_EXACTSEARCH_PREFIX); final String name = isExactSearch?criterion.getField().substring(SolrConstant.FIELD_EXACTSEARCH_PREFIX.length()):criterion.getField();
case FIELD: final FieldCriterion fieldCriterion = (FieldCriterion) criterion; criterionQueryType = detectQueryType(fieldCriterion.getField(), fieldCriterion.getValue(), schema); break;