// HACK to work around Nuxeo regression that tokenizes on '.'. \r
private static Pattern kwdSearchProblemChars = Pattern.compile("[\\:\\(\\)\\*\\%\\.]");\r
private static Pattern kwdSearchHyphen = Pattern.compile(" - ");\r
+ private static Pattern advSearchSqlWildcard = Pattern.compile(".*?[I]*LIKE\\s*\\\"\\%\\\".*?");\r
+\r
\r
private static String getLikeForm(String dataSourceName, String repositoryName) {\r
if (SEARCH_LIKE_FORM == null) {\r
}\r
return SEARCH_LIKE_FORM;\r
}\r
+ private String SQL_WILDCARD_CHAR = "%";\r
\r
@Override\r
public String getDatasourceName() {\r
public String createWhereClauseFromAdvancedSearch(String advancedSearch) {\r
String result = null;\r
//\r
- // Process search term. FIXME: REM - Do we need to perform and string filtering here?\r
+ // Process search term. FIXME: REM - Do we need to perform any string filtering here?\r
//\r
if (advancedSearch != null && !advancedSearch.isEmpty()) {\r
+ // Filtering of advanced searches on a single '%' char, per CSPACE-5828\r
+ Matcher regexMatcher = advSearchSqlWildcard.matcher(advancedSearch.trim());\r
+ if (regexMatcher.matches()) {\r
+ return "";\r
+ }\r
StringBuffer advancedSearchWhereClause = new StringBuffer(\r
advancedSearch);\r
result = advancedSearchWhereClause.toString();\r