Changeset 4582
- Timestamp:
- 02/27/14 15:14:16 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app
- Files:
-
- 3 added
- 3 deleted
- 9 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/pom.xml
r4536 r4582 132 132 </exclusion> 133 133 </exclusions> 134 </dependency> 135 <dependency> 136 <groupId>com.google.guava</groupId> 137 <artifactId>guava</artifactId> 138 <version>16.0.1</version> 134 139 </dependency> 135 140 </dependencies> -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java
r4579 r4582 17 17 package eu.clarin.cmdi.vlo.config; 18 18 19 import com.google.common.collect.Lists; 19 20 import eu.clarin.cmdi.vlo.VloWicketApplication; 20 21 import eu.clarin.cmdi.vlo.service.FacetFieldsService; … … 28 29 import eu.clarin.cmdi.vlo.service.impl.SolrFacetQueryFactoryImpl; 29 30 import java.io.IOException; 30 import java.util. Collections;31 import java.util.ArrayList; 31 32 import org.apache.solr.client.solrj.SolrServer; 32 33 import org.apache.solr.client.solrj.impl.HttpSolrServer; … … 47 48 public class VloSpringConfig { 48 49 49 public final static String FACETS_PANEL_SERVICE = "factsPanelService";50 public final static String COLLECTION_FACET_SERVICE = "factsPanelService";51 52 50 /** 53 51 * … … 73 71 } 74 72 75 @Bean (name = FACETS_PANEL_SERVICE)73 @Bean 76 74 public FacetFieldsService facetFieldsService() { 77 75 return new SolrFacetFieldsService(searchResultsDao(), facetQueryFactory()); … … 80 78 @Bean 81 79 public SolrFacetQueryFactory facetQueryFactory() { 82 return new SolrFacetQueryFactoryImpl(vloConfig().getFacetFields()); 80 final ArrayList<String> facets = Lists.newArrayList(vloConfig().getFacetFields()); 81 //TODO: get collections facet from config 82 facets.add("collection"); 83 84 return new SolrFacetQueryFactoryImpl(facets); 83 85 } 84 86 85 @Bean(name = COLLECTION_FACET_SERVICE)86 public FacetFieldsService collectionFacetFieldsService() {87 return new SolrFacetFieldsService(searchResultsDao(), collectionFacetQueryFactory());88 }89 90 @Bean91 public SolrFacetQueryFactory collectionFacetQueryFactory() {92 return new SolrFacetQueryFactoryImpl(Collections.singletonList("collection"));93 }94 95 87 @Bean 96 88 public SolrDocumentService documentService() { … … 102 94 return new SearchResultsDaoImpl(solrServer(), vloConfig()); 103 95 } 104 96 105 97 @Bean 106 98 public SolrDocumentQueryFactoryImpl documentQueryFactory() { -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/FacetSelection.java
r4542 r4582 19 19 20 20 import java.util.List; 21 import org.apache.solr.client.solrj.response.FacetField; 21 22 22 23 /** … … 26 27 public interface FacetSelection { 27 28 28 String getFacet();29 FacetField getFacetField(); 29 30 30 31 List<String> getFacetValues(); -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/QueryFacetsSelection.java
r4543 r4582 83 83 * 84 84 * @param facet facet to get values for 85 * @return the selected values for the specified facet 85 * @return the selected values for the specified facet. Can be null. 86 86 */ 87 87 public Collection<String> getSelectionValues(String facet) { -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java
r4579 r4582 17 17 package eu.clarin.cmdi.vlo.wicket.components; 18 18 19 import eu.clarin.cmdi.vlo.config.VloSpringConfig;20 19 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 20 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 22 import eu.clarin.cmdi.vlo.wicket. provider.FacetFieldsDataProvider;23 import java.util. Collection;21 import eu.clarin.cmdi.vlo.wicket.model.FacetSelectionModel; 22 import java.util.List; 24 23 import org.apache.solr.client.solrj.response.FacetField; 24 import org.apache.wicket.markup.html.list.ListItem; 25 import org.apache.wicket.markup.html.list.ListView; 25 26 import org.apache.wicket.markup.html.panel.Panel; 26 import org.apache.wicket.markup.repeater.Item;27 import org.apache.wicket.markup.repeater.data.DataView;28 27 import org.apache.wicket.model.IModel; 29 import org.apache.wicket.spring.injection.annot.SpringBean;30 28 31 29 /** … … 40 38 * @author twagoo 41 39 */ 42 public class FacetsPanel extends AbstractFacetsPanel {40 public class FacetsPanel extends Panel { 43 41 44 @SpringBean(name = VloSpringConfig.FACETS_PANEL_SERVICE)45 private FacetFieldsService facetFieldsService;42 public FacetsPanel(final String id, final IModel<List<FacetField>> facetsModel, final IModel<QueryFacetsSelection> selectionModel) { 43 super(id, selectionModel); 46 44 47 public FacetsPanel(final String id, IModel<QueryFacetsSelection> model) { 48 super(id, model); 49 50 add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) { 45 add(new ListView<FacetField>("facets", facetsModel) { 51 46 52 47 @Override 53 protected void populateItem(Item<FacetField> item) { 54 item.add(createFacetPanel("facet", item.getModel())); 48 protected void populateItem(ListItem<FacetField> item) { 49 item.add( 50 new FacetPanel("facet", new FacetSelectionModel(item.getModel(), selectionModel)) 51 ); 55 52 } 56 53 }); 57 54 } 58 59 private Panel createFacetPanel(String id, IModel<FacetField> facetFieldModel) {60 // Is there a selection for this facet?61 final String facetName = facetFieldModel.getObject().getName();62 final Collection<String> selectionValues = model.getObject().getSelectionValues(facetName);63 // Show different panel, depending on selected values64 if (selectionValues == null || selectionValues.isEmpty()) {65 // No values selected, show value selection panel66 return createFacetValuesPanel(id, facetFieldModel);67 } else {68 // Values selected, show selected values panel (with option to remove)69 return createSelectedFacetPanel(id, facetName);70 }71 }72 55 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SelectedFacetPanel.java
r4540 r4582 44 44 super(id, model); 45 45 this.model = model; 46 setDefaultModel(new CompoundPropertyModel<FacetSelection>(model));47 46 48 47 // Facet name becomes title 49 add(new Label("facet" ));48 add(new Label("facet", new PropertyModel(model, "facetField.name"))); 50 49 // Add removers for all selected values 51 50 add(createSelectionRemovers("facetValueRemover")); … … 79 78 // Call callback 80 79 onValuesUnselected( 81 model.getObject().getFacet (),80 model.getObject().getFacetField().getName(), 82 81 // Remove a single value 83 82 Collections.singleton(item.getModel().getObject()), target); -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/FacetSelectionModel.java
r4542 r4582 19 19 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 20 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 import java.util.Collection; 22 import java.util.Collections; 21 23 import java.util.List; 22 24 import java.util.concurrent.CopyOnWriteArrayList; 25 import org.apache.solr.client.solrj.response.FacetField; 23 26 import org.apache.wicket.model.AbstractReadOnlyModel; 24 27 import org.apache.wicket.model.IModel; … … 32 35 public class FacetSelectionModel extends AbstractReadOnlyModel<FacetSelection> implements FacetSelection { 33 36 34 private final String facet;35 37 private final IModel<QueryFacetsSelection> selectionModel; 38 private final IModel<FacetField> facetFieldModel; 36 39 37 40 /** 38 * 39 * @param facet facet to represent selection for41 * 42 * @param facetFieldModel 40 43 * @param selectionModel broad (multi-facet) selection model 41 44 */ 42 public FacetSelectionModel( String facet, IModel<QueryFacetsSelection> selectionModel) {43 this.facet = facet;45 public FacetSelectionModel(IModel<FacetField> facetFieldModel, IModel<QueryFacetsSelection> selectionModel) { 46 this.facetFieldModel = facetFieldModel; 44 47 this.selectionModel = selectionModel; 45 48 } 46 49 47 50 @Override 48 public String getFacet() {49 return facet ;51 public FacetField getFacetField() { 52 return facetFieldModel.getObject(); 50 53 } 51 54 52 55 @Override 53 56 public List<String> getFacetValues() { 54 return new CopyOnWriteArrayList<String>(getSelection().getSelectionValues(facet)); 57 final String facetName = getFacetField().getName(); 58 final Collection<String> selectionValues = getSelection().getSelectionValues(facetName); 59 if (selectionValues == null) { 60 return Collections.emptyList(); 61 } else { 62 return new CopyOnWriteArrayList<String>(selectionValues); 63 } 55 64 } 56 65 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java
r4579 r4582 1 1 package eu.clarin.cmdi.vlo.wicket.pages; 2 2 3 import eu.clarin.cmdi.vlo.config.VloConfig; 3 4 import eu.clarin.cmdi.vlo.wicket.components.FacetsPanel; 4 5 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 5 import eu.clarin.cmdi.vlo.wicket.components.SingleFacetPanel; 6 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 7 import eu.clarin.cmdi.vlo.wicket.components.FacetPanel; 6 8 import eu.clarin.cmdi.vlo.wicket.components.SearchForm; 7 9 import eu.clarin.cmdi.vlo.wicket.components.SearchResultsPanel; 10 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel; 11 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel; 12 import eu.clarin.cmdi.vlo.wicket.model.FacetSelectionModel; 8 13 import java.util.Collection; 14 import java.util.List; 9 15 import java.util.Map; 16 import org.apache.solr.client.solrj.response.FacetField; 10 17 import org.apache.wicket.request.mapper.parameter.PageParameters; 11 18 import org.apache.wicket.markup.html.WebPage; 19 import org.apache.wicket.model.IModel; 12 20 import org.apache.wicket.model.Model; 21 import org.apache.wicket.spring.injection.annot.SpringBean; 13 22 14 23 /** … … 21 30 private static final long serialVersionUID = 1L; 22 31 32 @SpringBean 33 private FacetFieldsService facetFieldsService; 34 @SpringBean 35 private VloConfig vloConfig; 36 23 37 public FacetedSearchPage(final PageParameters parameters) { 24 38 super(parameters); … … 27 41 final Model<QueryFacetsSelection> queryModel = new Model<QueryFacetsSelection>(selection); 28 42 29 add(new SingleFacetPanel("collectionsFacet", queryModel)); 30 31 add(new FacetsPanel("facets", queryModel)); 43 final FacetFieldModel collectionFacetFieldModel = new FacetFieldModel(facetFieldsService, "collection", queryModel); 44 final FacetSelectionModel collectionSelectionModel = new FacetSelectionModel(collectionFacetFieldModel, queryModel); 45 add(new FacetPanel("collectionsFacet", collectionSelectionModel)); 46 47 final IModel<List<FacetField>> facetFieldsModel = new FacetFieldsModel(facetFieldsService, vloConfig.getFacetFields(), queryModel); 48 add(new FacetsPanel("facets", facetFieldsModel, queryModel)); 32 49 33 50 add(new SearchForm("search", queryModel)); … … 38 55 private QueryFacetsSelection paramsToQueryFacetSelection(final PageParameters parameters) { 39 56 final String query = parameters.get("q").toOptionalString(); 40 57 41 58 //TODO: Map parameters to facet selection 42 59 final Map<String, Collection<String>> selection = null; 43 60 44 61 return new QueryFacetsSelection(query, selection); 45 62 } -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestFacetedSearchPage.java
r4579 r4582 1 1 package eu.clarin.cmdi.vlo.wicket.pages; 2 2 3 import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;4 3 import eu.clarin.cmdi.vlo.VloWicketApplication; 5 import eu.clarin.cmdi.vlo.config.VloConfig;6 4 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 7 5 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; … … 9 7 import eu.clarin.cmdi.vlo.service.SolrDocumentService; 10 8 import java.util.Arrays; 11 import java.util.List;12 9 import org.apache.solr.client.solrj.response.FacetField; 13 10 import org.apache.solr.common.SolrDocument; … … 27 24 import org.springframework.test.context.support.AnnotationConfigContextLoader; 28 25 29 import static org.hamcrest.core.AnyOf.*;30 import org.springframework.beans.factory.annotation.Qualifier;31 26 32 27 /** … … 50 45 51 46 @Override 52 @Bean(name = VloSpringConfig.FACETS_PANEL_SERVICE)53 47 public FacetFieldsService facetFieldsService() { 54 48 return mockery().mock(FacetFieldsService.class, "facetFieldsService"); 55 }56 57 @Override58 @Bean(name = COLLECTION_FACET_SERVICE)59 public FacetFieldsService collectionFacetFieldsService() {60 return mockery().mock(FacetFieldsService.class, "collectionFacetFieldsService");61 49 } 62 50 … … 74 62 75 63 @Autowired(required = true) 76 @Qualifier(VloSpringConfig.FACETS_PANEL_SERVICE)77 64 private FacetFieldsService facetFieldsService; 78 79 @Autowired(required = true)80 @Qualifier(VloSpringConfig.COLLECTION_FACET_SERVICE)81 private FacetFieldsService collectionsFacetFieldsService; //TODO: Make sure this gets injected separately (like qualifier should ensure)82 65 83 66 @Autowired(required = true) … … 98 81 will(returnValue(2L)); 99 82 atLeast(1).of(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class))); 100 will(returnValue(Arrays.asList(new FacetField("language"), new FacetField("resource class")))); 101 // 102 // // mock collection facet 103 // atLeast(1).of(collectionsFacetFieldsService).getFacetFieldCount(); 104 // will(returnValue(1L)); 105 // oneOf(collectionsFacetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class))); 106 // will(returnValue(Arrays.asList(new FacetField("collection")))); 83 will(returnValue(Arrays.asList(new FacetField("collection"), new FacetField("language"), new FacetField("resource class")))); 107 84 108 85 // mock search results
Note: See TracChangeset
for help on using the changeset viewer.