Changeset 4511
- Timestamp:
- 02/13/14 16:16:28 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src
- Files:
-
- 3 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/components/FacetsPanel.java
r4501 r4511 18 18 19 19 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 20 21 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 21 22 import eu.clarin.cmdi.vlo.service.impl.FacetFieldsDataProvider; 23 import java.util.List; 22 24 import org.apache.solr.client.solrj.response.FacetField; 23 25 import org.apache.wicket.markup.html.panel.Panel; … … 25 27 import org.apache.wicket.markup.repeater.data.DataView; 26 28 import org.apache.wicket.markup.repeater.data.IDataProvider; 27 import org.apache.wicket.model.util.ListModel; 29 import org.apache.wicket.model.IModel; 30 import org.apache.wicket.model.PropertyModel; 28 31 import org.apache.wicket.spring.injection.annot.SpringBean; 29 32 … … 36 39 @SpringBean 37 40 private FacetFieldsService facetFieldsService; 38 39 public FacetsPanel(String id, ListModel<FacetSelection> model) {41 42 public FacetsPanel(String id, IModel<QueryFacetsSelection> model) { 40 43 super(id, model); 41 44 42 final IDataProvider<FacetField> provider = new FacetFieldsDataProvider(facetFieldsService, model); 45 final IDataProvider<FacetField> provider = new FacetFieldsDataProvider(facetFieldsService, 46 new PropertyModel<List<FacetSelection>>(model, "selection"), 47 new PropertyModel<String>(model, "query")); 43 48 add(new DataView<FacetField>("facets", provider) { 44 49 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java
r4507 r4511 73 73 @Bean 74 74 public SolrQueryFactory queryFactory() { 75 return new SolrQueryFactoryImpl( );75 return new SolrQueryFactoryImpl(vloConfig()); 76 76 } 77 77 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pages/FacetedSearchPage.java
r4501 r4511 4 4 import eu.clarin.cmdi.vlo.pojo.Facet; 5 5 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 6 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 6 7 import java.util.Arrays; 7 8 import java.util.Collections; 8 9 import org.apache.wicket.request.mapper.parameter.PageParameters; 9 10 import org.apache.wicket.markup.html.WebPage; 10 import org.apache.wicket.model. util.ListModel;11 import org.apache.wicket.model.Model; 11 12 12 13 public class FacetedSearchPage extends WebPage { … … 16 17 public FacetedSearchPage(final PageParameters parameters) { 17 18 super(parameters); 18 final FacetSelection languageSelection = new FacetSelection(new Facet("Language"), Collections.singleton("Dutch"));19 final FacetSelection typeSelection = new FacetSelection(new Facet("Resource type"), Collections.<String>emptySet());20 19 21 add(new FacetsPanel("facets", 22 new ListModel<FacetSelection>( 23 Arrays.asList(languageSelection, typeSelection) 24 ))); 20 final FacetSelection languageSelection = new FacetSelection(new Facet("language"), Collections.singleton("Dutch")); 21 22 final QueryFacetsSelection selection = new QueryFacetsSelection(Arrays.asList(languageSelection)); 23 24 add(new FacetsPanel("facets", new Model<QueryFacetsSelection>(selection))); 25 25 } 26 26 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/FacetSelection.java
r4481 r4511 39 39 } 40 40 41 public Collection getValue() {41 public Collection<String> getValue() { 42 42 return values; 43 43 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/FacetFieldsService.java
r4501 r4511 28 28 public interface FacetFieldsService { 29 29 30 List<FacetField> getFacetFields(List<FacetSelection> selection );30 List<FacetField> getFacetFields(List<FacetSelection> selection, String query); 31 31 32 32 long getFacetFieldCount(); -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/SolrQueryFactory.java
r4501 r4511 15 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 16 */ 17 18 17 package eu.clarin.cmdi.vlo.service; 19 18 … … 28 27 public interface SolrQueryFactory { 29 28 30 SolrQuery create Query(List<FacetSelection> selection);31 29 SolrQuery createFacetQuery(List<FacetSelection> selection, String query); 30 32 31 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/FacetFieldsDataProvider.java
r4501 r4511 25 25 import org.apache.wicket.model.IModel; 26 26 import org.apache.wicket.model.Model; 27 import org.apache.wicket.model.util.ListModel;28 27 29 28 /** … … 34 33 35 34 private final FacetFieldsService facetFieldService; 36 private final ListModel<FacetSelection> selectionModel; 35 private final IModel<List<FacetSelection>> selectionModel; 36 private final IModel<String> searchQuery; 37 37 38 public FacetFieldsDataProvider(FacetFieldsService facetFieldService, ListModel<FacetSelection> selectionModel) {38 public FacetFieldsDataProvider(FacetFieldsService facetFieldService, IModel<List<FacetSelection>> selectionModel, IModel<String> searchQuery) { 39 39 this.facetFieldService = facetFieldService; 40 40 this.selectionModel = selectionModel; 41 this.searchQuery = searchQuery; 41 42 } 42 43 43 44 @Override 44 45 public Iterator<? extends FacetField> iterator(long first, long count) { 45 List<FacetField> facets = facetFieldService.getFacetFields(selectionModel.getObject() );46 List<FacetField> facets = facetFieldService.getFacetFields(selectionModel.getObject(), searchQuery.getObject()); 46 47 return facets.listIterator((int) first); 47 48 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrFacetFieldsService.java
r4501 r4511 40 40 41 41 @Override 42 public List<FacetField> getFacetFields(List<FacetSelection> selection ) {43 return searchResultsDao.getFacets(queryFatory.create Query(selection));42 public List<FacetField> getFacetFields(List<FacetSelection> selection, String query) { 43 return searchResultsDao.getFacets(queryFatory.createFacetQuery(selection, query)); 44 44 } 45 45 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrQueryFactoryImpl.java
r4501 r4511 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import eu.clarin.cmdi.vlo.FacetConstants; 20 import eu.clarin.cmdi.vlo.config.VloConfig; 19 21 import eu.clarin.cmdi.vlo.service.SolrQueryFactory; 20 22 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 23 import java.util.ArrayList; 21 24 import java.util.List; 22 25 import org.apache.solr.client.solrj.SolrQuery; 26 import org.apache.solr.client.solrj.util.ClientUtils; 23 27 24 28 /** … … 28 32 public class SolrQueryFactoryImpl implements SolrQueryFactory { 29 33 30 @Override 31 public SolrQuery createQuery(List<FacetSelection> selection) { 32 throw new UnsupportedOperationException(); 34 private static final String SOLR_SEARCH_ALL = "*:*"; 35 private final VloConfig config; 36 37 public SolrQueryFactoryImpl(VloConfig config) { 38 this.config = config; 33 39 } 34 40 41 @Override 42 public SolrQuery createFacetQuery(List<FacetSelection> selections, String queryString) { 43 SolrQuery query = getDefaultFacetQuery(); 44 45 if (queryString == null) { 46 query.setQuery(SOLR_SEARCH_ALL); 47 } else { 48 query.setQuery(ClientUtils.escapeQueryChars(queryString)); 49 } 50 51 if (selections != null) { 52 final List<String> encodedQueries = new ArrayList(selections.size()); 53 for (FacetSelection selection : selections) { 54 String facet = selection.getFacet().getName(); 55 for (String value : selection.getValue()) { 56 encodedQueries.add(String.format("%s:%s", facet, ClientUtils.escapeQueryChars(value))); 57 } 58 } 59 query.setFilterQueries(encodedQueries.toArray(new String[encodedQueries.size()])); 60 } 61 return query; 62 } 63 64 private SolrQuery getDefaultFacetQuery() { 65 SolrQuery result = new SolrQuery(); 66 result.setRows(10); 67 result.setStart(0); 68 result.setFields(FacetConstants.FIELD_NAME, FacetConstants.FIELD_ID, FacetConstants.FIELD_DESCRIPTION); 69 result.setFacet(true); 70 result.setFacetMinCount(1); 71 result.addFacetField(config.getFacetFields()); 72 return result; 73 } 35 74 } -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/pages/TestFacetedSearchPage.java
r4501 r4511 21 21 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 22 22 import org.springframework.test.context.support.AnnotationConfigContextLoader; 23 24 import static org.hamcrest.core.AnyOf.*; 23 25 24 26 /** … … 66 68 mockery.checking(new Expectations() { 67 69 { 68 oneOf(facetFieldsService).getFacetFieldCount();70 atLeast(1).of(facetFieldsService).getFacetFieldCount(); 69 71 will(returnValue(2L)); 70 oneOf(facetFieldsService).getFacetFields(with(any(List.class)) );72 oneOf(facetFieldsService).getFacetFields(with(any(List.class)), with(anyOf(aNull(String.class), any(String.class)))); 71 73 will(returnValue(Arrays.asList(new FacetField("language"), new FacetField("resource class")))); 72 74 }
Note: See TracChangeset
for help on using the changeset viewer.