Changeset 4519
- Timestamp:
- 02/14/14 10:21:02 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src
- Files:
-
- 2 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/QueryFacetsSelection.java
r4511 r4519 18 18 19 19 import java.io.Serializable; 20 import java.util.List; 20 import java.util.Collection; 21 import java.util.Collections; 22 import java.util.Map; 21 23 22 24 /** … … 27 29 28 30 private final String queryString; 29 private final List<FacetSelection> selection;31 private final Map<String, Collection<String>> selection; 30 32 31 public QueryFacetsSelection(List<FacetSelection> selection) { 33 /** 34 * creates an empty selection (no string, no facet values) 35 */ 36 public QueryFacetsSelection() { 37 this(null, Collections.<String, Collection<String>>emptyMap()); 38 } 39 40 /** 41 * creates a selection without a query 42 * 43 * @param selection facet values selection map 44 */ 45 public QueryFacetsSelection(Map<String, Collection<String>> selection) { 32 46 this(null, selection); 33 47 } 34 35 public QueryFacetsSelection(String query, List<FacetSelection> selection) { 48 49 /** 50 * creates a selection with a textual query and facet value selection 51 * 52 * @param query textual query 53 * @param selection facet values selection map 54 */ 55 public QueryFacetsSelection(String query, Map<String, Collection<String>> selection) { 36 56 this.queryString = query; 37 57 this.selection = selection; 38 58 } 39 59 40 public List<FacetSelection> getSelection() { 60 /** 61 * 62 * @return a facet -> values map representing the current selection 63 */ 64 public Map<String, Collection<String>> getSelection() { 41 65 return selection; 42 66 } 43 67 68 /** 69 * 70 * @return the facets present in the current selection 71 */ 72 public Collection<String> getFacets() { 73 return selection.keySet(); 74 } 75 76 /** 77 * 78 * @param facet facet to get values for 79 * @return the selected values for the specified facet 80 */ 81 public Collection<String> getSelectionValues(String facet) { 82 return selection.get(facet); 83 } 84 85 /** 86 * 87 * @return the current textual query, may be null in case of no query 88 */ 44 89 public String getQuery() { 45 90 return queryString; -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/FacetFieldsService.java
r4511 r4519 18 18 package eu.clarin.cmdi.vlo.service; 19 19 20 import eu.clarin.cmdi.vlo.pojo. FacetSelection;20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 21 import java.util.List; 22 22 import org.apache.solr.client.solrj.response.FacetField; … … 28 28 public interface FacetFieldsService { 29 29 30 List<FacetField> getFacetFields( List<FacetSelection> selection, String query);30 List<FacetField> getFacetFields(QueryFacetsSelection selection); 31 31 32 32 long getFacetFieldCount(); -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/SolrQueryFactory.java
r4513 r4519 17 17 package eu.clarin.cmdi.vlo.service; 18 18 19 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 20 import java.util.List; 19 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 20 import org.apache.solr.client.solrj.SolrQuery; 22 21 … … 27 26 public interface SolrQueryFactory { 28 27 29 SolrQuery createFacetQuery( List<FacetSelection> selection, String query);28 SolrQuery createFacetQuery(QueryFacetsSelection selection); 30 29 31 30 SolrQuery createCountFacetsQuery(); -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/FacetFieldsDataProvider.java
r4512 r4519 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import eu.clarin.cmdi.vlo.pojo.FacetSelection;20 19 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 20 import eu.clarin.cmdi.vlo.service.FacetFieldsService; … … 26 25 import org.apache.wicket.model.IModel; 27 26 import org.apache.wicket.model.Model; 28 import org.apache.wicket.model.PropertyModel;29 27 30 28 /** … … 35 33 36 34 private final FacetFieldsService facetFieldService; 37 private final IModel<List<FacetSelection>> selectionModel; 38 private final IModel<String> searchQuery; 35 private final IModel<QueryFacetsSelection> selectionModel; 39 36 40 public FacetFieldsDataProvider(FacetFieldsService facetFieldService, IModel<QueryFacetsSelection> model) { 41 this(facetFieldService, 42 new PropertyModel<List<FacetSelection>>(model, "selection"), 43 new PropertyModel<String>(model, "query")); 44 } 45 46 public FacetFieldsDataProvider(FacetFieldsService facetFieldService, IModel<List<FacetSelection>> selectionModel, IModel<String> searchQuery) { 37 public FacetFieldsDataProvider(FacetFieldsService facetFieldService, IModel<QueryFacetsSelection> selectionModel) { 47 38 this.facetFieldService = facetFieldService; 48 39 this.selectionModel = selectionModel; 49 this.searchQuery = searchQuery;50 40 } 51 41 52 42 @Override 53 43 public Iterator<? extends FacetField> iterator(long first, long count) { 54 List<FacetField> facets = facetFieldService.getFacetFields(selectionModel.getObject() , searchQuery.getObject());44 List<FacetField> facets = facetFieldService.getFacetFields(selectionModel.getObject()); 55 45 return facets.listIterator((int) first); 56 46 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrFacetFieldsService.java
r4513 r4519 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import eu.clarin.cmdi.vlo.pojo. FacetSelection;19 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 20 20 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 21 21 import eu.clarin.cmdi.vlo.service.SearchResultsDao; … … 39 39 40 40 @Override 41 public List<FacetField> getFacetFields( List<FacetSelection> selection, String query) {42 return searchResultsDao.getFacets(queryFatory.createFacetQuery(selection , query));41 public List<FacetField> getFacetFields(QueryFacetsSelection selection) { 42 return searchResultsDao.getFacets(queryFatory.createFacetQuery(selection)); 43 43 } 44 44 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrQueryFactoryImpl.java
r4518 r4519 20 20 import eu.clarin.cmdi.vlo.config.VloConfig; 21 21 import eu.clarin.cmdi.vlo.service.SolrQueryFactory; 22 import eu.clarin.cmdi.vlo.pojo. FacetSelection;22 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 23 23 import java.util.ArrayList; 24 24 import java.util.Collection; 25 25 import java.util.List; 26 import java.util.Map; 26 27 import org.apache.solr.client.solrj.SolrQuery; 27 28 import org.apache.solr.client.solrj.util.ClientUtils; … … 46 47 47 48 @Override 48 public SolrQuery createFacetQuery(List<FacetSelection> selections, String queryString) { 49 SolrQuery query = getDefaultFacetQuery(); 49 public SolrQuery createFacetQuery(QueryFacetsSelection queryFacetsSelections) { 50 final SolrQuery query = getDefaultFacetQuery(); 51 final String queryString = queryFacetsSelections.getQuery(); 50 52 51 53 if (queryString == null) { … … 55 57 } 56 58 57 if (selections != null) {58 final List<String> encodedQueries = new ArrayList(selections.size()); 59 for (FacetSelection selection : selections) {60 final String facetName = selection.getFacetName();61 final Collection<String> values = selection.getValue();62 if (values != null) {63 for (String value : values) {64 encodedQueries.add(String.format("%s:%s", facetName, ClientUtils.escapeQueryChars(value)));65 }59 Map<String, Collection<String>> selections = queryFacetsSelections.getSelection(); 60 61 final List<String> encodedQueries = new ArrayList(selections.size()); // assuming every facet has one selection, most common scenario 62 for (Map.Entry<String, Collection<String>> selection : selections.entrySet()) { 63 final String facetName = selection.getKey(); 64 final Collection<String> values = selection.getValue(); 65 if (values != null) { 66 for (String value : values) { 67 encodedQueries.add(String.format("%s:%s", facetName, ClientUtils.escapeQueryChars(value))); 66 68 } 67 69 } 68 query.setFilterQueries(encodedQueries.toArray(new String[encodedQueries.size()]));69 70 } 71 query.setFilterQueries(encodedQueries.toArray(new String[encodedQueries.size()])); 70 72 return query; 71 73 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java
r4518 r4519 2 2 3 3 import eu.clarin.cmdi.vlo.wicket.components.FacetsPanel; 4 import eu.clarin.cmdi.vlo.pojo.FacetSelection;5 4 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 6 import java.util. Arrays;5 import java.util.Collection; 7 6 import java.util.Collections; 8 7 import org.apache.wicket.request.mapper.parameter.PageParameters; … … 17 16 super(parameters); 18 17 19 final FacetSelection languageSelection = new FacetSelection("language", Collections.singleton("Dutch")); 20 21 final QueryFacetsSelection selection = new QueryFacetsSelection(Arrays.asList(languageSelection)); 18 final QueryFacetsSelection selection = new QueryFacetsSelection( 19 Collections.<String, Collection<String>>singletonMap("language", Collections.singleton("Dutch"))); 22 20 23 21 add(new FacetsPanel("facets", new Model<QueryFacetsSelection>(selection))); -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/impl/SolrQueryFactoryImplTest.java
r4518 r4519 18 18 19 19 import eu.clarin.cmdi.vlo.config.VloConfig; 20 import eu.clarin.cmdi.vlo.pojo. FacetSelection;20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 21 import java.util.Arrays; 22 import java.util.Collection; 22 23 import java.util.Collections; 24 import java.util.HashMap; 23 25 import java.util.List; 26 import java.util.Map; 24 27 import org.apache.solr.client.solrj.SolrQuery; 25 28 import org.hamcrest.Matchers; … … 58 61 @Test 59 62 public void testCreateFacetQueryNoFacets() { 60 List<FacetSelection> selection = Collections.emptyList(); 61 SolrQuery query = instance.createFacetQuery(selection, null); 63 // default constructor -> empty 64 QueryFacetsSelection selection = new QueryFacetsSelection(); 65 SolrQuery query = instance.createFacetQuery(selection); 62 66 63 67 // default: query selects all values … … 74 78 public void testCreateFacetQueryNoSelection() { 75 79 // Facets are present but no values are selected 76 List<FacetSelection> selection = Arrays.asList(77 new FacetSelection(78 "facet1",79 Collections.<String>emptyList()),80 new FacetSelection(81 "facet2",82 Collections.<String>emptyList())); 83 SolrQuery query = instance.createFacetQuery( selection, null);80 Map<String, Collection<String>> selection = new HashMap<String, Collection<String>>() { 81 { 82 put("facet1", Collections.<String>emptySet()); 83 put("facet2", Collections.<String>emptyList()); 84 } 85 }; 86 87 SolrQuery query = instance.createFacetQuery(new QueryFacetsSelection(selection)); 84 88 85 89 // default: query selects all values … … 96 100 public void testCreateFacetQuerySelection() { 97 101 // Some facets have one or more values selected 98 List<FacetSelection> selection = Arrays.asList( 99 new FacetSelection( 100 "facet1", 101 Arrays.asList("valueA")), 102 new FacetSelection( 103 "facet2", 104 Arrays.asList("valueB", "valueC")), 105 new FacetSelection( 106 "facet3", 107 Collections.<String>emptyList())); 108 SolrQuery query = instance.createFacetQuery(selection, null); 102 Map<String, Collection<String>> selection = new HashMap<String, Collection<String>>() { 103 { 104 put("facet1", Arrays.asList("valueA")); 105 put("facet2", Arrays.asList("valueB", "valueC")); 106 put("facet3", Collections.<String>emptyList()); 107 } 108 }; 109 SolrQuery query = instance.createFacetQuery(new QueryFacetsSelection(selection)); 109 110 110 111 // default: query selects all values … … 124 125 @Test 125 126 public void testCreateFacetQuerySelectionAndQuery() { 126 List<FacetSelection> selection = Arrays.asList( 127 new FacetSelection( 128 "facet1", 129 Arrays.asList("valueA"))); 130 SolrQuery query = instance.createFacetQuery(selection, "query string"); 127 Map<String, Collection<String>> selection = new HashMap<String, Collection<String>>() { 128 { 129 put("facet1", Arrays.asList("valueA")); 130 } 131 }; 132 SolrQuery query = instance.createFacetQuery(new QueryFacetsSelection("query string", selection)); 131 133 132 134 assertEquals(1, query.getFilterQueries().length); -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestFacetedSearchPage.java
r4515 r4519 4 4 import eu.clarin.cmdi.vlo.VloWicketApplication; 5 5 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 6 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 6 7 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 7 8 import java.util.Arrays; … … 71 72 atLeast(1).of(facetFieldsService).getFacetFieldCount(); 72 73 will(returnValue(2L)); 73 oneOf(facetFieldsService).getFacetFields(with(any( List.class)), with(anyOf(aNull(String.class), any(String.class))));74 oneOf(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class))); 74 75 will(returnValue(Arrays.asList(new FacetField("language"), new FacetField("resource class")))); 75 76 }
Note: See TracChangeset
for help on using the changeset viewer.