Changeset 4579
- Timestamp:
- 02/25/14 16:33:17 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src
- Files:
-
- 2 added
- 6 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java
r4566 r4579 28 28 import eu.clarin.cmdi.vlo.service.impl.SolrFacetQueryFactoryImpl; 29 29 import java.io.IOException; 30 import java.util.Collections; 30 31 import org.apache.solr.client.solrj.SolrServer; 31 32 import org.apache.solr.client.solrj.impl.HttpSolrServer; … … 46 47 public class VloSpringConfig { 47 48 49 public final static String FACETS_PANEL_SERVICE = "factsPanelService"; 50 public final static String COLLECTION_FACET_SERVICE = "factsPanelService"; 51 48 52 /** 49 53 * … … 69 73 } 70 74 71 @Bean 75 @Bean(name = FACETS_PANEL_SERVICE) 72 76 public FacetFieldsService facetFieldsService() { 73 77 return new SolrFacetFieldsService(searchResultsDao(), facetQueryFactory()); 78 } 79 80 @Bean 81 public SolrFacetQueryFactory facetQueryFactory() { 82 return new SolrFacetQueryFactoryImpl(vloConfig().getFacetFields()); 83 } 84 85 @Bean(name = COLLECTION_FACET_SERVICE) 86 public FacetFieldsService collectionFacetFieldsService() { 87 return new SolrFacetFieldsService(searchResultsDao(), collectionFacetQueryFactory()); 88 } 89 90 @Bean 91 public SolrFacetQueryFactory collectionFacetQueryFactory() { 92 return new SolrFacetQueryFactoryImpl(Collections.singletonList("collection")); 74 93 } 75 94 … … 82 101 public SearchResultsDao searchResultsDao() { 83 102 return new SearchResultsDaoImpl(solrServer(), vloConfig()); 84 }85 86 @Bean87 public SolrFacetQueryFactory facetQueryFactory() {88 return new SolrFacetQueryFactoryImpl(vloConfig().getFacetFields());89 103 } 90 104 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java
r4572 r4579 17 17 package eu.clarin.cmdi.vlo.wicket.components; 18 18 19 import eu.clarin.cmdi.vlo. wicket.model.FacetSelectionModel;19 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 20 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 21 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 22 22 import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldsDataProvider; 23 23 import java.util.Collection; 24 import java.util.HashSet;25 24 import org.apache.solr.client.solrj.response.FacetField; 26 import org.apache.wicket.ajax.AjaxRequestTarget;27 25 import org.apache.wicket.markup.html.panel.Panel; 28 26 import org.apache.wicket.markup.repeater.Item; … … 42 40 * @author twagoo 43 41 */ 44 public class FacetsPanel extends Panel {42 public class FacetsPanel extends AbstractFacetsPanel { 45 43 46 @SpringBean 44 @SpringBean(name = VloSpringConfig.FACETS_PANEL_SERVICE) 47 45 private FacetFieldsService facetFieldsService; 48 private final IModel<QueryFacetsSelection> model;49 46 50 47 public FacetsPanel(final String id, IModel<QueryFacetsSelection> model) { 51 48 super(id, model); 52 this.model = model;53 49 54 50 add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) { … … 56 52 @Override 57 53 protected void populateItem(Item<FacetField> item) { 58 createFacetPanel("facet", item);54 item.add(createFacetPanel("facet", item.getModel())); 59 55 } 60 56 }); 61 57 } 62 58 63 private void createFacetPanel(String id, Item<FacetField> item) {59 private Panel createFacetPanel(String id, IModel<FacetField> facetFieldModel) { 64 60 // Is there a selection for this facet? 65 final IModel<FacetField> facetFieldModel = item.getModel();66 61 final String facetName = facetFieldModel.getObject().getName(); 67 62 final Collection<String> selectionValues = model.getObject().getSelectionValues(facetName); 68 69 63 // Show different panel, depending on selected values 70 64 if (selectionValues == null || selectionValues.isEmpty()) { 71 65 // No values selected, show value selection panel 72 item.add(createFacetValuesPanel(id, facetFieldModel));66 return createFacetValuesPanel(id, facetFieldModel); 73 67 } else { 74 68 // Values selected, show selected values panel (with option to remove) 75 item.add(createSelectedFacetPanel(id, facetName));69 return createSelectedFacetPanel(id, facetName); 76 70 } 77 71 } 78 79 private FacetValuesPanel createFacetValuesPanel(String id, final IModel<FacetField> facetFieldModel) {80 return new FacetValuesPanel(id, facetFieldModel) {81 82 @Override83 public void onValuesSelected(String facet, Collection<String> value, AjaxRequestTarget target) {84 // A value has been selected on this facet's panel,85 // update the model!86 model.getObject().selectValues(facet, value);87 88 if (target != null) {89 // reload entire page for now90 target.add(getPage());91 }92 }93 };94 }95 96 private SelectedFacetPanel createSelectedFacetPanel(String id, String facetName) {97 return new SelectedFacetPanel(id, new FacetSelectionModel(facetName, model)) {98 99 @Override100 public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) {101 // Values have been removed, calculate remainder102 final Collection<String> currentSelection = model.getObject().getSelectionValues(facet);103 final Collection<String> newSelection = new HashSet<String>(currentSelection);104 newSelection.removeAll(valuesRemoved);105 106 // Update model107 model.getObject().selectValues(facet, newSelection);108 109 if (target != null) {110 // reload entire page for now111 target.add(getPage());112 }113 }114 };115 }116 72 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SearchResultsPanel.java
r4560 r4579 17 17 package eu.clarin.cmdi.vlo.wicket.components; 18 18 19 import eu.clarin.cmdi.vlo.FacetConstants;20 19 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 20 import eu.clarin.cmdi.vlo.service.SolrDocumentService; 22 import eu.clarin.cmdi.vlo.wicket.model.NullFallbackModel;23 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldModel;24 21 import eu.clarin.cmdi.vlo.wicket.provider.SolrDocumentProvider; 25 22 import java.util.Arrays; … … 93 90 @Override 94 91 protected void onConfigure() { 92 super.onConfigure(); 93 95 94 // only show pagination navigators if there's more than one page 96 95 final boolean showPaging = resultsView.getPageCount() > 1; -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SingleFacetPanel.html
r4515 r4579 24 24 <body> 25 25 <wicket:panel> 26 <div class="sidebaritem"> 27 <!-- rounded corners - top **** --> 28 <div class="rtop"><div class="r1"></div><div class="r2"></div><div class="r3"></div><div class="r4"></div></div> 29 <h1>Narrow down</h1> 30 <p> 31 Use the categories below to limit the search results to those matching the selected value(s). 32 </p> 33 <wicket:container wicket:id="facets"> 34 <div wicket:id="facet">[facet]</div> 35 </wicket:container> 36 <!-- rounded corners - bottom **** --> 37 <div class="rbottom"><div class="r4"></div><div class="r3"></div><div class="r2"></div><div class="r1"></div></div> 38 </div> 26 <wicket:container wicket:id="facetValues" /> 27 <wicket:container wicket:id="facetSelection" /> 39 28 </wicket:panel> 40 29 </body> -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.html
r4530 r4579 62 62 </div> 63 63 64 <div class="topbar facet collapsedfacet" id="collections"> 64 <div wicket:id="collectionsFacet">[COLLECTIONS]</div> 65 66 <!-- <div class="topbar facet collapsedfacet" id="collections"> 65 67 <div class="rtop"><div class="r1"></div><div class="r2"></div><div class="r3"></div><div class="r4"></div></div> 66 68 <a href="#" class="expandfacet"><span>expand</span></a> … … 90 92 </ul> 91 93 </div> 92 <!-- rounded corners - bottom **** -->94 rounded corners - bottom **** 93 95 <div class="rbottom"><div class="r4"></div><div class="r3"></div><div class="r2"></div><div class="r1"></div></div> 94 </div> 96 </div>--> 95 97 96 98 <div class="content"> -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java
r4543 r4579 3 3 import eu.clarin.cmdi.vlo.wicket.components.FacetsPanel; 4 4 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 5 import eu.clarin.cmdi.vlo.wicket.components.SingleFacetPanel; 5 6 import eu.clarin.cmdi.vlo.wicket.components.SearchForm; 6 7 import eu.clarin.cmdi.vlo.wicket.components.SearchResultsPanel; … … 26 27 final Model<QueryFacetsSelection> queryModel = new Model<QueryFacetsSelection>(selection); 27 28 29 add(new SingleFacetPanel("collectionsFacet", queryModel)); 30 28 31 add(new FacetsPanel("facets", queryModel)); 29 32 -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestFacetedSearchPage.java
r4530 r4579 3 3 import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage; 4 4 import eu.clarin.cmdi.vlo.VloWicketApplication; 5 import eu.clarin.cmdi.vlo.config.VloConfig; 5 6 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 6 7 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; … … 27 28 28 29 import static org.hamcrest.core.AnyOf.*; 30 import org.springframework.beans.factory.annotation.Qualifier; 29 31 30 32 /** … … 48 50 49 51 @Override 52 @Bean(name = VloSpringConfig.FACETS_PANEL_SERVICE) 50 53 public FacetFieldsService facetFieldsService() { 51 return mockery().mock(FacetFieldsService.class); 54 return mockery().mock(FacetFieldsService.class, "facetFieldsService"); 55 } 56 57 @Override 58 @Bean(name = COLLECTION_FACET_SERVICE) 59 public FacetFieldsService collectionFacetFieldsService() { 60 return mockery().mock(FacetFieldsService.class, "collectionFacetFieldsService"); 52 61 } 53 62 … … 59 68 60 69 private WicketTester tester; 61 @Autowired 70 @Autowired(required = true) 62 71 private VloWicketApplication application; 63 @Autowired 72 @Autowired(required = true) 64 73 private Mockery mockery; 65 @Autowired 74 75 @Autowired(required = true) 76 @Qualifier(VloSpringConfig.FACETS_PANEL_SERVICE) 66 77 private FacetFieldsService facetFieldsService; 67 @Autowired 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 83 @Autowired(required = true) 68 84 private SolrDocumentService documentService; 69 85 … … 81 97 atLeast(1).of(facetFieldsService).getFacetFieldCount(); 82 98 will(returnValue(2L)); 83 oneOf(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class)));99 atLeast(1).of(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class))); 84 100 will(returnValue(Arrays.asList(new FacetField("language"), new FacetField("resource class")))); 85 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")))); 107 86 108 // mock search results 87 109 atLeast(1).of(documentService).getDocumentCount(with(any(QueryFacetsSelection.class)));
Note: See TracChangeset
for help on using the changeset viewer.