Changeset 4999
- Timestamp:
- 04/17/14 07:39:46 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/QueryFacetsSelectionParametersConverter.java
r4983 r4999 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import com.google.common.base.Splitter; 19 20 import com.google.common.collect.Maps; 20 21 import static eu.clarin.cmdi.vlo.VloWebAppParameters.*; … … 40 41 41 42 public final static Logger logger = LoggerFactory.getLogger(QueryFacetsSelectionParametersConverter.class); 43 /** 44 * Splitter for facet query strings like "language:Dutch". Because it is 45 * limited to two tokens, will also work for strings with a colon in their 46 * value such as "collection:TLA: DoBeS archive". 47 */ 48 public final static Splitter FILTER_SPLITTER = Splitter.on(":").limit(2); 42 49 43 50 @Override … … 52 59 for (StringValue selectionType : facetSelectionTypes) { 53 60 if (!selectionType.isEmpty()) { 54 final String[] fqType = selectionType.toString().split(":");55 if (fqType. length== 2) {56 final String facet = fqType [0];57 final String type = fqType [1].toUpperCase();61 final List<String> fqType = FILTER_SPLITTER.splitToList(selectionType.toString()); 62 if (fqType.size() == 2) { 63 final String facet = fqType.get(0); 64 final String type = fqType.get(1).toUpperCase(); 58 65 59 66 try { … … 72 79 for (StringValue facetValue : facetValues) { 73 80 if (!facetValue.isEmpty()) { 74 final String[] fq = facetValue.toString().split(":");75 if (fq. length== 2) {81 final List<String> fq = FILTER_SPLITTER.splitToList(facetValue.toString()); 82 if (fq.size() == 2) { 76 83 // we have a facet - value pair 77 final String facet = fq [0];78 final String value = fq [1];84 final String facet = fq.get(0); 85 final String value = fq.get(1); 79 86 if (selection.containsKey(facet)) { 80 87 selection.get(facet).getValues().add(value); -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/impl/QueryFacetsSelectionParametersConverterTest.java
r4983 r4999 58 58 params.add("fq", "facet1:valueA"); 59 59 params.add("fq", "facet1:valueB"); 60 params.add("fq", "facet2:value C");60 params.add("fq", "facet2:value:C"); // has a colon in value 61 61 params.add("fq", "illegal-no-colon"); //should get ignored 62 62 params.add("fq", ""); // not a valid facet selection … … 74 74 assertThat(result.getSelectionValues("facet1").getValues(), hasItem("valueA")); 75 75 assertThat(result.getSelectionValues("facet1").getValues(), hasItem("valueB")); 76 assertThat(result.getSelectionValues("facet2").getValues(), hasItem("value C"));76 assertThat(result.getSelectionValues("facet2").getValues(), hasItem("value:C")); 77 77 // OR explicitly set 78 78 assertEquals(FacetSelectionType.OR, result.getSelectionValues("facet1").getSelectionType()); … … 110 110 final Map<String, FacetSelection> map = Maps.newHashMapWithExpectedSize(3); 111 111 map.put("facet1", new FacetSelection(FacetSelectionType.OR, Arrays.asList("valueA", "valueB"))); 112 map.put("facet2", new FacetSelection(FacetSelectionType.AND, Collections.singleton("value C")));112 map.put("facet2", new FacetSelection(FacetSelectionType.AND, Collections.singleton("value:C"))); 113 113 map.put("facet3", new FacetSelection(FacetSelectionType.NOT_EMPTY)); 114 114 … … 122 122 assertThat(fq, hasItem(StringValue.valueOf("facet1:valueA"))); 123 123 assertThat(fq, hasItem(StringValue.valueOf("facet1:valueB"))); 124 assertThat(fq, hasItem(StringValue.valueOf("facet2:value C")));124 assertThat(fq, hasItem(StringValue.valueOf("facet2:value:C"))); 125 125 126 126 final List<StringValue> fqType = result.getValues("fqType");
Note: See TracChangeset
for help on using the changeset viewer.