Author: ssmiweve
Date: 2009-01-16 14:22:45 +0100 (Fri, 16 Jan 2009)
New Revision: 7149
Modified:
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractFast4SearchCommand.java
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/NavigatableESPFastCommand.java
Log:
enhance the two identical methods createNavigationFilterStrings so to handle
searching with multiple selections.
Issue SKER5040: (Fast Navigators with multiple selections at one level)
Modified:
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractFast4SearchCommand.java
===================================================================
---
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractFast4SearchCommand.java
2009-01-15 19:55:49 UTC (rev 7148)
+++
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractFast4SearchCommand.java
2009-01-16 13:22:45 UTC (rev 7149)
@@ -131,7 +131,10 @@
// Public --------------------------------------------------------
/** Return all our configured navigator's field:value pairs in one string
in filter syntax.
+ * Commas in the navigator's parameter value are treated as separators
between optional selected navigator items.
*
+ * @deprecated @todo extract to a query transformer,
FastNavigationQueryTransformer
+ *
* @return field:value filter string.
*/
public Collection<String> createNavigationFilterStrings() {
@@ -154,18 +157,26 @@
// }
for (final Navigator navigator :
getSearchConfiguration().getNavigators().values()) {
+
final StringDataObject navigatedValue =
datamodel.getParameters().getValue(navigator.getId());
if (navigatedValue != null) {
- final String value = navigator.isBoundaryMatch() ? "^\""
- + navigatedValue.getString() + "\"$" : "\"" +
navigatedValue.getString() + "\"";
- // FIXME this test should be encapsulated with the delegated
filterBuilder
- if ("adv".equals(getSearchConfiguration().getFiltertype())){
- filterStrings.add(" AND " + navigator.getField() + ':' +
value );
- }else{
- filterStrings.add("+" + navigator.getField() + ':' +
value);
+ // TODO this test should be encapsulated with the delegated
filterBuilder
+ final StringBuilder filter
+ = new
StringBuilder("adv".equals(getSearchConfiguration().getFiltertype()) ? " AND ("
: " +(");
+
+ // splitting here allows for multiple navigation selections
within the one navigation level.
+ for(String navSingleValue :
navigatedValue.getString().split(",")){
+
+ final String value = navigator.isBoundaryMatch()
+ ? "^\"" + navSingleValue + "\"$"
+ : "\"" + navSingleValue + "\"";
+
+ filter.append(' ' + navigator.getField() + ':' + value);
}
+
+ filterStrings.add(filter.append(" )").toString());
}
}
Modified:
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/NavigatableESPFastCommand.java
===================================================================
---
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/NavigatableESPFastCommand.java
2009-01-15 19:55:49 UTC (rev 7148)
+++
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/NavigatableESPFastCommand.java
2009-01-16 13:22:45 UTC (rev 7149)
@@ -68,7 +68,10 @@
}
/** Return all our configured navigator's field:value pairs in one string
in filter syntax.
+ * Commas in the navigator's parameter value are treated as separators
between optional selected navigator items.
*
+ * @deprecated @todo extract to a query transformer,
FastNavigationQueryTransformer
+ *
* @return field:value filter string.
*/
public Collection createNavigationFilterStrings() {
@@ -85,20 +88,26 @@
// }
for (final Navigator navigator :
getSearchConfiguration().getNavigators().values()) {
- final StringDataObject navigatedValue =
datamodelParameters.get(navigator.getId());
+ final StringDataObject navigatedValue =
datamodel.getParameters().getValue(navigator.getId());
if (navigatedValue != null) {
- final String value = navigator.isBoundaryMatch() ? "^\""
- + navigatedValue.getString() + "\"$" : "\""
- + navigatedValue.getString() + "\"";
- // FIXME this test should be encapsulated with the delegated
filterBuilder
- if ("adv".equals(getSearchConfiguration().getFiltertype())){
- filterStrings.add(" AND " + navigator.getField() + ':' +
value );
- }else{
- filterStrings.add("+" + navigator.getField() + ':' +
value);
+ // TODO this test should be encapsulated with the delegated
filterBuilder
+ final StringBuilder filter
+ = new
StringBuilder("adv".equals(getSearchConfiguration().getFiltertype()) ? " AND ("
: " +(");
+
+ // splitting here allows for multiple navigation selections
within the one navigation level.
+ for(String navSingleValue :
navigatedValue.getString().split(",")){
+
+ final String value = navigator.isBoundaryMatch()
+ ? "^\"" + navSingleValue + "\"$"
+ : "\"" + navSingleValue + "\"";
+
+ filter.append(' ' + navigator.getField() + ':' + value);
}
+
+ filterStrings.add(filter.append(" )").toString());
}
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits