@Override
public QueryFilter createFieldValueQueryFilter(
String ddmStructureFieldName, Serializable ddmStructureFieldValue,
Locale locale)
throws Exception {
BooleanQuery booleanQuery = new BooleanQueryImpl();
String[] ddmStructureFieldNameParts = StringUtil.split(
ddmStructureFieldName, DDMIndexer.DDM_FIELD_SEPARATOR);
DDMStructure structure = _ddmStructureLocalService.getStructure(
GetterUtil.getLong(ddmStructureFieldNameParts[2]));
String fieldName = StringUtil.replaceLast(
ddmStructureFieldNameParts[3],
StringPool.UNDERLINE.concat(LocaleUtil.toLanguageId(locale)),
StringPool.BLANK);
if (structure.hasField(fieldName)) {
ddmStructureFieldValue = _ddm.getIndexedFieldValue(
ddmStructureFieldValue, structure.getFieldType(fieldName));
}
booleanQuery.addRequiredTerm(
ddmStructureFieldName,
StringPool.QUOTE + ddmStructureFieldValue + StringPool.QUOTE);
return new QueryFilter(booleanQuery);
}