Changeset 4965
- Timestamp:
- 04/14/14 12:06:37 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/FacetSelection.java
r4963 r4965 19 19 import com.google.common.collect.Lists; 20 20 import java.io.Serializable; 21 import java.util.ArrayList; 21 22 import java.util.Collection; 22 23 … … 36 37 public FacetSelection(FacetSelectionType selectionType, Collection<String> values) { 37 38 this.selectionType = selectionType; 38 if (values instanceof Serializable) { 39 // always store as array list, which is modifiable and serialisable 40 if (values instanceof ArrayList) { 39 41 this.values = values; 40 42 } else { 41 // make serializable43 // copy to new list 42 44 this.values = Lists.newArrayList(values); 43 45 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/solr/impl/QueryFacetsSelectionParametersConverter.java
r4963 r4965 17 17 package eu.clarin.cmdi.vlo.service.solr.impl; 18 18 19 import com.google.common.collect.HashMultimap;20 import com.google.common.collect.Lists;21 19 import com.google.common.collect.Maps; 22 import com.google.common.collect.Multimap;23 20 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 24 21 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 25 22 import eu.clarin.cmdi.vlo.service.PageParametersConverter; 26 import java.io.Serializable; 27 import java.util.Collection; 23 import java.util.Arrays; 28 24 import java.util.HashMap; 29 25 import java.util.List; 30 import java.util.Map;31 26 import java.util.Map.Entry; 32 27 import org.apache.wicket.request.mapper.parameter.PageParameters; … … 48 43 // Get facet selections from params 49 44 final List<StringValue> facetValues = params.getValues("fq"); 50 // Store in a multimap to allow for multiple selections per facet 51 final Multimap<String, String> selectionMap = HashMultimap.<String, String>create(facetValues.size(), 1);45 46 final HashMap<String, FacetSelection> selection = Maps.newHashMapWithExpectedSize(facetValues.size()); 52 47 for (StringValue facetValue : facetValues) { 53 48 if (!facetValue.isEmpty()) { … … 55 50 if (fq.length == 2) { 56 51 // we have a facet - value pair 57 selectionMap.put(fq[0], fq[1]); 52 final String facet = fq[0]; 53 final String value = fq[1]; 54 if (selection.containsKey(facet)) { 55 selection.get(facet).getValues().add(value); 56 } else { 57 selection.put(facet, new FacetSelection(Arrays.asList(value))); 58 } 58 59 } 59 60 } 60 61 } 61 62 62 // Facet selection expects a mutable and serializable map, so first convert63 // back to ordinary map, then insert serializable values64 final HashMap<String, FacetSelection> selection = multimapToSerializableCollectionMap(selectionMap);65 66 // Facet selection expects a mutable and serializable map, so first convert67 63 return new QueryFacetsSelection(query, selection); 68 64 } … … 89 85 return params; 90 86 } 91 92 /**93 *94 * @param selectionMap multimap holding the selection95 * @return a fully serializable map with collection values96 */97 private HashMap<String, FacetSelection> multimapToSerializableCollectionMap(final Multimap<String, String> selectionMap) {98 99 final HashMap<String, FacetSelection> selection = Maps.newHashMapWithExpectedSize(selectionMap.size());100 for (Entry<String, Collection<String>> entry : selectionMap.asMap().entrySet()) {101 final FacetSelection value = new FacetSelection(entry.getValue());102 if (value instanceof Serializable) {103 // keep serializable collection value104 selection.put(entry.getKey(), value);105 } else {106 // copy to a serializable collection107 selection.put(entry.getKey(), value);108 }109 }110 return selection;111 }112 87 }
Note: See TracChangeset
for help on using the changeset viewer.