Changeset 4579


Ignore:
Timestamp:
02/25/14 16:33:17 (10 years ago)
Author:
twagoo
Message:

Added single facet panel for collection selection

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  
    2828import eu.clarin.cmdi.vlo.service.impl.SolrFacetQueryFactoryImpl;
    2929import java.io.IOException;
     30import java.util.Collections;
    3031import org.apache.solr.client.solrj.SolrServer;
    3132import org.apache.solr.client.solrj.impl.HttpSolrServer;
     
    4647public class VloSpringConfig {
    4748
     49    public final static String FACETS_PANEL_SERVICE = "factsPanelService";
     50    public final static String COLLECTION_FACET_SERVICE = "factsPanelService";
     51   
    4852    /**
    4953     *
     
    6973    }
    7074
    71     @Bean
     75    @Bean(name = FACETS_PANEL_SERVICE)
    7276    public FacetFieldsService facetFieldsService() {
    7377        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"));
    7493    }
    7594   
     
    82101    public SearchResultsDao searchResultsDao() {
    83102        return new SearchResultsDaoImpl(solrServer(), vloConfig());
    84     }
    85 
    86     @Bean
    87     public SolrFacetQueryFactory facetQueryFactory() {
    88         return new SolrFacetQueryFactoryImpl(vloConfig().getFacetFields());
    89103    }
    90104   
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java

    r4572 r4579  
    1717package eu.clarin.cmdi.vlo.wicket.components;
    1818
    19 import eu.clarin.cmdi.vlo.wicket.model.FacetSelectionModel;
     19import eu.clarin.cmdi.vlo.config.VloSpringConfig;
    2020import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2121import eu.clarin.cmdi.vlo.service.FacetFieldsService;
    2222import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldsDataProvider;
    2323import java.util.Collection;
    24 import java.util.HashSet;
    2524import org.apache.solr.client.solrj.response.FacetField;
    26 import org.apache.wicket.ajax.AjaxRequestTarget;
    2725import org.apache.wicket.markup.html.panel.Panel;
    2826import org.apache.wicket.markup.repeater.Item;
     
    4240 * @author twagoo
    4341 */
    44 public class FacetsPanel extends Panel {
     42public class FacetsPanel extends AbstractFacetsPanel {
    4543
    46     @SpringBean
     44    @SpringBean(name = VloSpringConfig.FACETS_PANEL_SERVICE)
    4745    private FacetFieldsService facetFieldsService;
    48     private final IModel<QueryFacetsSelection> model;
    4946
    5047    public FacetsPanel(final String id, IModel<QueryFacetsSelection> model) {
    5148        super(id, model);
    52         this.model = model;
    5349
    5450        add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) {
     
    5652            @Override
    5753            protected void populateItem(Item<FacetField> item) {
    58                 createFacetPanel("facet", item);
     54                item.add(createFacetPanel("facet", item.getModel()));
    5955            }
    6056        });
    6157    }
    6258
    63     private void createFacetPanel(String id, Item<FacetField> item) {
     59    private Panel createFacetPanel(String id, IModel<FacetField> facetFieldModel) {
    6460        // Is there a selection for this facet?
    65         final IModel<FacetField> facetFieldModel = item.getModel();
    6661        final String facetName = facetFieldModel.getObject().getName();
    6762        final Collection<String> selectionValues = model.getObject().getSelectionValues(facetName);
    68 
    6963        // Show different panel, depending on selected values
    7064        if (selectionValues == null || selectionValues.isEmpty()) {
    7165            // No values selected, show value selection panel
    72             item.add(createFacetValuesPanel(id, facetFieldModel));
     66            return createFacetValuesPanel(id, facetFieldModel);
    7367        } else {
    7468            // Values selected, show selected values panel (with option to remove)
    75             item.add(createSelectedFacetPanel(id, facetName));
     69            return createSelectedFacetPanel(id, facetName);
    7670        }
    7771    }
    78 
    79     private FacetValuesPanel createFacetValuesPanel(String id, final IModel<FacetField> facetFieldModel) {
    80         return new FacetValuesPanel(id, facetFieldModel) {
    81 
    82             @Override
    83             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 now
    90                     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             @Override
    100             public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) {
    101                 // Values have been removed, calculate remainder
    102                 final Collection<String> currentSelection = model.getObject().getSelectionValues(facet);
    103                 final Collection<String> newSelection = new HashSet<String>(currentSelection);
    104                 newSelection.removeAll(valuesRemoved);
    105 
    106                 // Update model
    107                 model.getObject().selectValues(facet, newSelection);
    108 
    109                 if (target != null) {
    110                     // reload entire page for now
    111                     target.add(getPage());
    112                 }
    113             }
    114         };
    115     }
    11672}
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SearchResultsPanel.java

    r4560 r4579  
    1717package eu.clarin.cmdi.vlo.wicket.components;
    1818
    19 import eu.clarin.cmdi.vlo.FacetConstants;
    2019import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2120import eu.clarin.cmdi.vlo.service.SolrDocumentService;
    22 import eu.clarin.cmdi.vlo.wicket.model.NullFallbackModel;
    23 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldModel;
    2421import eu.clarin.cmdi.vlo.wicket.provider.SolrDocumentProvider;
    2522import java.util.Arrays;
     
    9390    @Override
    9491    protected void onConfigure() {
     92        super.onConfigure();
     93       
    9594        // only show pagination navigators if there's more than one page
    9695        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  
    2424    <body>
    2525        <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" />
    3928        </wicket:panel>
    4029    </body>
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.html

    r4530 r4579  
    6262            </div>
    6363
    64             <div class="topbar facet collapsedfacet" id="collections">
     64            <div wicket:id="collectionsFacet">[COLLECTIONS]</div>
     65           
     66<!--            <div class="topbar facet collapsedfacet" id="collections">
    6567                <div class="rtop"><div class="r1"></div><div class="r2"></div><div class="r3"></div><div class="r4"></div></div>
    6668                <a href="#" class="expandfacet"><span>expand</span></a>
     
    9092                    </ul>
    9193                </div>
    92                 <!-- rounded corners - bottom **** -->
     94                 rounded corners - bottom ****
    9395                <div class="rbottom"><div class="r4"></div><div class="r3"></div><div class="r2"></div><div class="r1"></div></div>
    94             </div>
     96            </div>-->
    9597
    9698            <div class="content">
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java

    r4543 r4579  
    33import eu.clarin.cmdi.vlo.wicket.components.FacetsPanel;
    44import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     5import eu.clarin.cmdi.vlo.wicket.components.SingleFacetPanel;
    56import eu.clarin.cmdi.vlo.wicket.components.SearchForm;
    67import eu.clarin.cmdi.vlo.wicket.components.SearchResultsPanel;
     
    2627        final Model<QueryFacetsSelection> queryModel = new Model<QueryFacetsSelection>(selection);
    2728
     29        add(new SingleFacetPanel("collectionsFacet", queryModel));
     30       
    2831        add(new FacetsPanel("facets", queryModel));
    2932
  • vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestFacetedSearchPage.java

    r4530 r4579  
    33import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;
    44import eu.clarin.cmdi.vlo.VloWicketApplication;
     5import eu.clarin.cmdi.vlo.config.VloConfig;
    56import eu.clarin.cmdi.vlo.config.VloSpringConfig;
    67import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     
    2728
    2829import static org.hamcrest.core.AnyOf.*;
     30import org.springframework.beans.factory.annotation.Qualifier;
    2931
    3032/**
     
    4850
    4951        @Override
     52        @Bean(name = VloSpringConfig.FACETS_PANEL_SERVICE)
    5053        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");
    5261        }
    5362
     
    5968
    6069    private WicketTester tester;
    61     @Autowired
     70    @Autowired(required = true)
    6271    private VloWicketApplication application;
    63     @Autowired
     72    @Autowired(required = true)
    6473    private Mockery mockery;
    65     @Autowired
     74
     75    @Autowired(required = true)
     76    @Qualifier(VloSpringConfig.FACETS_PANEL_SERVICE)
    6677    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)
    6884    private SolrDocumentService documentService;
    6985
     
    8197                atLeast(1).of(facetFieldsService).getFacetFieldCount();
    8298                will(returnValue(2L));
    83                 oneOf(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class)));
     99                atLeast(1).of(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class)));
    84100                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
    86108                // mock search results
    87109                atLeast(1).of(documentService).getDocumentCount(with(any(QueryFacetsSelection.class)));
Note: See TracChangeset for help on using the changeset viewer.