Changeset 6813


Ignore:
Timestamp:
11/17/15 11:55:14 (9 years ago)
Author:
davor.ostojic@oeaw.ac.at
Message:

#795 VLO web-app generates unnecessary requests. The idea behind is to fire SOLR query only when selection is changed.

Location:
vlo/trunk/vlo-web-app/src
Files:
1 deleted
21 edited
2 copied

Legend:

Unmodified
Added
Removed
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/VloWicketApplication.java

    r6405 r6813  
    11package eu.clarin.cmdi.vlo;
    22
    3 import eu.clarin.cmdi.vlo.service.FacetDescriptionService;
    4 import eu.clarin.cmdi.vlo.config.VloConfig;
    5 import eu.clarin.cmdi.vlo.service.PermalinkService;
    6 import eu.clarin.cmdi.vlo.service.XmlTransformationService;
    7 import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
    8 import eu.clarin.cmdi.vlo.wicket.pages.AboutPage;
    9 import eu.clarin.cmdi.vlo.wicket.pages.HelpPage;
    10 import eu.clarin.cmdi.vlo.wicket.pages.AllFacetValuesPage;
    11 import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;
    12 import eu.clarin.cmdi.vlo.wicket.pages.RecordPage;
    13 import eu.clarin.cmdi.vlo.wicket.pages.SimpleSearchPage;
    14 import eu.clarin.cmdi.vlo.wicket.pages.VloBasePage;
    15 import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProvider;
    163import java.io.IOException;
    174import java.io.InputStream;
    185import java.util.Properties;
     6
    197import javax.inject.Inject;
     8
    209import org.apache.wicket.Application;
    2110import org.apache.wicket.markup.html.WebPage;
     
    2918import org.springframework.context.ApplicationContext;
    3019import org.springframework.context.ApplicationContextAware;
     20
     21import eu.clarin.cmdi.vlo.config.VloConfig;
     22import eu.clarin.cmdi.vlo.service.FacetDescriptionService;
     23import eu.clarin.cmdi.vlo.service.PermalinkService;
     24import eu.clarin.cmdi.vlo.service.XmlTransformationService;
     25import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
     26import eu.clarin.cmdi.vlo.wicket.pages.AboutPage;
     27import eu.clarin.cmdi.vlo.wicket.pages.AllFacetValuesPage;
     28import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;
     29import eu.clarin.cmdi.vlo.wicket.pages.HelpPage;
     30import eu.clarin.cmdi.vlo.wicket.pages.RecordPage;
     31import eu.clarin.cmdi.vlo.wicket.pages.SimpleSearchPage;
     32import eu.clarin.cmdi.vlo.wicket.pages.VloBasePage;
     33import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProvider;
    3134
    3235/**
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/FacetSelection.java

    r6314 r6813  
    3030
    3131    private final FacetSelectionType selectionType;
    32     private final Collection<String> values;
     32    private Collection<String> values;
    3333
    3434    /**
     
    7777        return values;
    7878    }
     79   
     80    public void setValues(Collection<String> values){
     81        this.values = values;
     82       
     83    }
     84   
     85    public void removeValues(Collection<String> valuesToBeRemoved){
     86        if(valuesToBeRemoved != null){
     87                for(String val: valuesToBeRemoved){
     88                        this.values.remove(val);
     89                }
     90        }
     91    }
     92   
    7993
    8094    public FacetSelection getCopy() {
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/QueryFacetsSelection.java

    r4974 r6813  
    122122        }
    123123    }
     124   
     125    public void addNewFacetValue(String facet, Collection<String> values){
     126        FacetSelection curSel = selection.get(facet);
     127        if(curSel != null){
     128                curSel.setValues(values);
     129        }else{
     130                curSel = new FacetSelection(values);                   
     131        }
     132               
     133        selectValues(facet, curSel);           
     134    }
     135   
     136    public void removeFacetValue(String facet, Collection<String> valuestoBeRemoved){
     137        FacetSelection curSel = selection.get(facet);
     138        if (curSel != null){
     139                curSel.removeValues(valuestoBeRemoved);                                 
     140        }
     141        //to remove facet from map if does not have any value
     142        selectValues(facet, curSel);
     143    }
    124144
    125145    @Override
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/FacetExpansionStateModel.java

    r4606 r6813  
    3030public class FacetExpansionStateModel implements IModel<ExpansionState> {
    3131
    32     private final IModel<FacetField> facetModel;
     32    private final IModel<String> facetName;
    3333    private final IModel<Map<String, ExpansionState>> expansionStateMapModel;
    3434
     
    3838     * @param expansionStateMapModel model that holds the map of expansion states
    3939     */
    40     public FacetExpansionStateModel(IModel<FacetField> facetModel, IModel<Map<String, ExpansionState>> expansionStateMapModel) {
    41         this.facetModel = facetModel;
     40    public FacetExpansionStateModel(IModel<String> facetName, IModel<Map<String, ExpansionState>> expansionStateMapModel) {
     41        this.facetName = facetName;
    4242        this.expansionStateMapModel = expansionStateMapModel;
    4343    }
     
    4545    @Override
    4646    public ExpansionState getObject() {
    47         final String facet = facetModel.getObject().getName();
     47        final String facet = facetName.getObject();
    4848        final ExpansionState state = expansionStateMapModel.getObject().get(facet);
    4949        if (state == null) {
     
    5656    @Override
    5757    public void setObject(ExpansionState object) {
    58         final String facet = facetModel.getObject().getName();
     58        final String facet = facetName.getObject();
    5959        expansionStateMapModel.getObject().put(facet, object);
    6060    }
     
    6262    @Override
    6363    public void detach() {
    64         facetModel.detach();
     64        facetName.detach();
    6565        expansionStateMapModel.detach();
    6666    }
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/FacetFieldModel.java

    r4869 r6813  
    2222import java.util.List;
    2323import org.apache.solr.client.solrj.response.FacetField;
     24import org.apache.wicket.model.AbstractReadOnlyModel;
    2425import org.apache.wicket.model.IModel;
    2526import org.apache.wicket.model.LoadableDetachableModel;
     
    3839 * @author twagoo
    3940 */
    40 public class FacetFieldModel extends LoadableDetachableModel<FacetField> {
     41public class FacetFieldModel extends AbstractReadOnlyModel<FacetField> {
    4142
    42     //todo: can probably be made more efficient/elegant than wrapping fields model
    4343    private final FacetFieldsModel fieldsModel;
     44    private final String facetName;
    4445   
    45     /**
    46      *
    47      * @param facetField facet field to provide
    48      * @param selectionModel model that provides current query/selection
    49      */
    50     public FacetFieldModel(FacetFieldsService service, FacetField facetField, IModel<QueryFacetsSelection> selectionModel) {
    51         super(facetField);
    52         fieldsModel = new FacetFieldsModel(service, Collections.singletonList(facetField.getName()), selectionModel, -1);
    53     }
    54 
     46   
    5547    /**
    5648     *
     
    5951     * @param selectionModel model that provides current query/selection
    6052     */
    61     public FacetFieldModel(FacetFieldsService service, String facet, IModel<QueryFacetsSelection> selectionModel, int valueLimit) {
    62         fieldsModel = new FacetFieldsModel(service, Collections.singletonList(facet), selectionModel, valueLimit);
     53    public FacetFieldModel(String facet, FacetFieldsService service, IModel<QueryFacetsSelection> selectionModel) {
     54        this(facet, new FacetFieldsModel(service, Collections.singletonList(facet), selectionModel, -1));
     55    }
     56   
     57    public FacetFieldModel(String facetName, FacetFieldsModel fieldsModel){
     58        this.fieldsModel = fieldsModel;
     59        this.facetName = facetName;
    6360    }
    6461
    6562    @Override
    66     protected FacetField load() {
    67         final List<FacetField> fieldsList = fieldsModel.getObject();
    68         if (fieldsList == null || fieldsList.isEmpty()) {
    69             return null;
    70         } else {
    71             return fieldsList.get(0);
    72         }
     63    public FacetField getObject() {
     64        return fieldsModel.getFacetField(facetName);
    7365    }
    7466
    75     @Override
    76     public void detach() {
    77         super.detach();
    78         fieldsModel.detach();
     67   
     68    public void detachFacetFieldsModel(){
     69        fieldsModel.detach();
    7970    }
     71
     72
    8073}
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/FacetFieldSelectionModel.java

    r6246 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.model;
    1818
    19 import eu.clarin.cmdi.vlo.pojo.FacetFieldSelection;
    20 import eu.clarin.cmdi.vlo.pojo.FacetSelection;
    21 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2219import java.util.Collection;
    2320import java.util.Collections;
    2421import java.util.List;
    2522import java.util.concurrent.CopyOnWriteArrayList;
     23
    2624import org.apache.solr.client.solrj.response.FacetField;
    2725import org.apache.wicket.model.AbstractReadOnlyModel;
    2826import org.apache.wicket.model.IModel;
     27
     28import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     29import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2930
    3031/**
     
    3435 * @author twagoo
    3536 */
    36 public class FacetFieldSelectionModel extends AbstractReadOnlyModel<FacetFieldSelection> implements FacetFieldSelection {
     37public class FacetFieldSelectionModel extends AbstractReadOnlyModel<FacetSelection> {
    3738
    3839    private final IModel<QueryFacetsSelection> selectionModel;
     
    4950    }
    5051
    51     @Override
     52 
     53    //@Override
     54        public IModel<FacetField> getFacetFieldAsModel() {
     55                return facetFieldModel;
     56        }
     57   
     58   
     59    //@Override
    5260    public FacetField getFacetField() {
    5361        return facetFieldModel.getObject();
    5462    }
     63   
    5564
    56     @Override
     65
     66   // @Override
    5767    public List<String> getFacetValues() {
    58         final String facetName = getFacetField().getName();
    59         final FacetSelection selection = getSelection().getSelectionValues(facetName);
     68        final FacetSelection selection = getObject();
    6069        if (selection == null) {
    6170            return Collections.emptyList();
     
    6978        }
    7079    }
     80   
     81   
    7182
    72     @Override
     83        //@Override
     84        public IModel<QueryFacetsSelection> getSelectionAsModel() {
     85                return selectionModel;
     86        }
     87   
     88
     89    //@Override
    7390    public QueryFacetsSelection getSelection() {
    7491        return selectionModel.getObject();
     
    7693
    7794    @Override
    78     public FacetFieldSelection getObject() {
    79         return this;
     95    public FacetSelection getObject() {
     96        final String facetName = getFacetField().getName();
     97        return getSelection().getSelectionValues(facetName);
    8098    }
    8199
     
    90108        return String.format("[Field: %s; Selection: %s]", facetFieldModel.getObject().getName(), selectionModel.getObject().toString());
    91109    }
    92    
     110
     111       
    93112}
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/model/FacetFieldsModel.java

    r4943 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.model;
    1818
    19 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    20 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    2119import java.util.List;
     20
    2221import org.apache.solr.client.solrj.response.FacetField;
    2322import org.apache.wicket.model.IModel;
    2423import org.apache.wicket.model.LoadableDetachableModel;
     24
     25import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     26import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     27import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    2528
    2629/**
     
    4144    private final IModel<QueryFacetsSelection> selectionModel;
    4245    private final int valueLimit;
     46   
     47   
     48    /**
     49     * now we are returning all facets and model is shared between facetValuesPanel and FacetsPagePanel
     50    *
     51    * @param service service to use for facet field retrieval
     52    * @param facets facets to include
     53    * @param selectionModel model that provides current query/selection
     54    */
     55    public FacetFieldsModel(FacetFieldsService service, List<String> facets, IModel<QueryFacetsSelection> selectionModel) {
     56        this(service, facets, selectionModel, -1);
     57    }
    4358
    4459    /**
     
    5671        this.valueLimit = valueLimit;
    5772    }
     73   
     74   
     75
    5876
    5977    @Override
     
    6785        selectionModel.detach();
    6886    }
     87   
     88    public FacetField getFacetField(String facetName){
     89        List<FacetField> facetList = getObject();
     90        if(facetList != null)
     91                for(FacetField facet: facetList)
     92                        if(facet.getName().equals(facetName))
     93                                return removeSelected(facet, selectionModel.getObject().getSelectionValues(facetName));
     94       
     95        return null;
     96    }
     97   
     98    private FacetField removeSelected(FacetField facetField, FacetSelection selection){
     99        FacetField filtered = new FacetField(facetField.getName());
     100        if(selection != null)
     101                for(FacetField.Count value: facetField.getValues())
     102                        if(selection.getValues().contains(value.getName()))
     103                                continue;
     104                        else
     105                                filtered.add(value.getName(), value.getCount());
     106        else
     107                filtered = facetField;
     108       
     109        return filtered;
     110    }
    69111
    70112}
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/AllFacetValuesPage.java

    r6372 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.pages;
    1818
    19 import eu.clarin.cmdi.vlo.config.VloConfig;
    20 import eu.clarin.cmdi.vlo.pojo.FacetSelection;
    21 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    22 import eu.clarin.cmdi.vlo.service.FacetParameterMapper;
    23 import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    24 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    25 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel;
    26 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
    27 import eu.clarin.cmdi.vlo.wicket.panels.search.AllFacetValuesPanel;
    28 import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
     19import java.util.Collection;
     20
    2921import org.apache.solr.client.solrj.response.FacetField;
    3022import org.apache.wicket.RestartResponseException;
     
    3931import org.apache.wicket.spring.injection.annot.SpringBean;
    4032import org.apache.wicket.util.string.StringValue;
     33
     34import eu.clarin.cmdi.vlo.config.VloConfig;
     35import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     36import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     37import eu.clarin.cmdi.vlo.service.FacetParameterMapper;
     38import eu.clarin.cmdi.vlo.service.PageParametersConverter;
     39import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
     40import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel;
     41import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
     42import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
     43import eu.clarin.cmdi.vlo.wicket.panels.search.AllFacetValuesPanel;
    4144
    4245/**
     
    7376        if (vloConfig.getAllFacetFields().contains(facet)) {
    7477            // create a new model so that all values will be retrieved
    75             setModel(new FacetFieldModel(facetFieldsService, facet, selectionModel, -1)); // gets all facet values
     78               
     79            setModel(new FacetFieldModel(facet, facetFieldsService, selectionModel)); // gets all facet values
    7680        }
    7781        if (getModelObject() == null) {
     
    97101
    98102            @Override
    99             protected void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target) {
     103            protected void onValuesSelected(Collection<String> values, AjaxRequestTarget target) {
    100104                // Create updated selection state
    101105                final QueryFacetsSelection newSelection;
     
    105109                    newSelection = new QueryFacetsSelection();
    106110                }
    107                 newSelection.selectValues(facet, values);
     111                newSelection.selectValues(getModelObject().getName(), new FacetSelection(values));
    108112
    109113                // Redirect to search page with updated model
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java

    r6334 r6813  
    11package eu.clarin.cmdi.vlo.wicket.pages;
    22
    3 import eu.clarin.cmdi.vlo.wicket.model.PermaLinkModel;
    4 import eu.clarin.cmdi.vlo.wicket.panels.SingleFacetPanel;
    5 import eu.clarin.cmdi.vlo.config.VloConfig;
    6 import eu.clarin.cmdi.vlo.wicket.panels.search.FacetsPanel;
    7 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    8 import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    9 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    10 import eu.clarin.cmdi.vlo.wicket.panels.search.FacetPanel;
    11 import eu.clarin.cmdi.vlo.wicket.panels.search.SearchFormPanel;
    12 import eu.clarin.cmdi.vlo.wicket.panels.search.SearchResultsPanel;
    13 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
    14 import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
    15 import eu.clarin.cmdi.vlo.wicket.panels.search.FacetValuesPanel;
    16 import eu.clarin.cmdi.vlo.wicket.panels.TopLinksPanel;
    17 import eu.clarin.cmdi.vlo.wicket.panels.search.AdvancedSearchOptionsPanel;
    183import java.util.List;
     4
    195import org.apache.solr.client.solrj.response.FacetField;
    206import org.apache.wicket.Component;
    217import org.apache.wicket.ajax.AjaxRequestTarget;
    228import org.apache.wicket.markup.html.WebMarkupContainer;
    23 import org.apache.wicket.request.mapper.parameter.PageParameters;
    249import org.apache.wicket.markup.html.panel.Panel;
    2510import org.apache.wicket.model.IModel;
    2611import org.apache.wicket.model.Model;
     12import org.apache.wicket.request.mapper.parameter.PageParameters;
    2713import org.apache.wicket.spring.injection.annot.SpringBean;
     14
     15import eu.clarin.cmdi.vlo.config.VloConfig;
     16import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     17import eu.clarin.cmdi.vlo.service.PageParametersConverter;
     18import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
     19import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
     20import eu.clarin.cmdi.vlo.wicket.model.FacetNamesModel;
     21import eu.clarin.cmdi.vlo.wicket.model.PermaLinkModel;
     22import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
     23import eu.clarin.cmdi.vlo.wicket.panels.SingleFacetPanel;
     24import eu.clarin.cmdi.vlo.wicket.panels.TopLinksPanel;
     25import eu.clarin.cmdi.vlo.wicket.panels.search.AdvancedSearchOptionsPanel;
     26import eu.clarin.cmdi.vlo.wicket.panels.search.FacetPanel;
     27import eu.clarin.cmdi.vlo.wicket.panels.search.FacetValuesPanel;
     28import eu.clarin.cmdi.vlo.wicket.panels.search.FacetsPanel;
     29import eu.clarin.cmdi.vlo.wicket.panels.search.SearchFormPanel;
     30import eu.clarin.cmdi.vlo.wicket.panels.search.SearchResultsPanel;
    2831
    2932/**
     
    4851    private Component navigation;
    4952    private Component searchForm;
     53   
     54   
     55    IModel<List<String>> facetNamesModel;
     56    FacetFieldsModel fieldsModel;
     57   
     58   
    5059
    5160    public FacetedSearchPage(IModel<QueryFacetsSelection> queryModel) {
    5261        super(queryModel);
     62        createModels();
    5363        addComponents();
    5464    }
     
    6070        final IModel<QueryFacetsSelection> queryModel = new Model<QueryFacetsSelection>(selection);
    6171        setModel(queryModel);
     72        createModels();
    6273        addComponents();
     74    }
     75   
     76   
     77    private void createModels(){
     78        facetNamesModel = new FacetNamesModel(vloConfig.getFacetFields());
     79        fieldsModel = new FacetFieldsModel(facetFieldsService, facetNamesModel.getObject(), getModel(), -1);
    6380    }
    6481
     
    139156        enclosure.setOutputMarkupId(true);
    140157        if (vloConfig.getCollectionFacet() != null) {
    141             final FacetPanel panel = new SingleFacetPanel("collectionsFacet", getModel(), vloConfig.getCollectionFacet(), facetFieldsService, 3) {
     158            final FacetPanel panel = new SingleFacetPanel("collectionsFacet", vloConfig.getCollectionFacet(), getModel(), facetFieldsService, 3) {
    142159
    143160                @Override
     
    158175
    159176    private Panel createFacetsPanel(final String id) {
    160         final IModel<QueryFacetsSelection> queryModel = getModel();
    161         final IModel<List<FacetField>> facetFieldsModel = new FacetFieldsModel(facetFieldsService, vloConfig.getFacetFields(), queryModel, FacetValuesPanel.MAX_NUMBER_OF_FACETS_TO_SHOW);
    162         final FacetsPanel panel = new FacetsPanel(id, facetFieldsModel, queryModel) {
     177       
     178        final FacetsPanel panel = new FacetsPanel(id, facetNamesModel, fieldsModel, getModel()) {
    163179
    164180            @Override
     
    172188
    173189    private void updateSelection(AjaxRequestTarget target) {
     190       
     191        //detach facetFieldsModel when selection is changed
     192        fieldsModel.detach();
     193       
    174194        // selection changed, update facets and search results
    175195        if (target != null) { // null if JavaScript disabled
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/SimpleSearchPage.java

    r6432 r6813  
    107107        // collection facet is optional...
    108108        if (vloConfig.getCollectionFacet() != null) {
    109             return new SingleFacetPanel(id, getModel(), vloConfig.getCollectionFacet(), facetFieldsService, 3) {
     109            return new SingleFacetPanel(id, vloConfig.getCollectionFacet(), getModel(), facetFieldsService, 3) {
    110110
    111111                @Override
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/ExpandablePanel.java

    r5023 r6813  
    3939public abstract class ExpandablePanel<T> extends GenericPanel<T> {
    4040
    41     private final IModel<ExpansionState> expansionModel;
     41    protected final IModel<ExpansionState> expansionModel;
    4242
    4343    /**
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/SingleFacetPanel.java

    r5140 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.panels;
    1818
     19import org.apache.wicket.model.IModel;
     20import org.apache.wicket.model.Model;
     21
    1922import eu.clarin.cmdi.vlo.pojo.ExpansionState;
    2023import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2124import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    2225import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel;
    23 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldSelectionModel;
    2426import eu.clarin.cmdi.vlo.wicket.panels.search.FacetPanel;
    25 import org.apache.wicket.model.IModel;
    26 import org.apache.wicket.model.Model;
    2727
    2828/**
     
    3131 */
    3232public abstract class SingleFacetPanel extends FacetPanel {
     33       
     34        //public FacetPanel(String id, IModel<String> facetName, IModel<FacetFieldSelection> selectionModel, IModel<ExpansionState> expansionState, int subListSize) {
    3335
    34     public SingleFacetPanel(String id, IModel<QueryFacetsSelection> queryModel, String facetName, FacetFieldsService facetFieldsService, int subListSize) {
     36    public SingleFacetPanel(String id, String facetName, IModel<QueryFacetsSelection> queryModel, FacetFieldsService facetFieldsService, int subListSize) {
    3537        //TODO: Limit to number of items shown while keeping 'more' function?
    36         super(id, new FacetFieldSelectionModel(new FacetFieldModel(facetFieldsService, facetName, queryModel, -1), queryModel), Model.of(ExpansionState.COLLAPSED), subListSize);
     38        super(id,
     39                        new Model(facetName),
     40                        new FacetFieldModel(facetName, facetFieldsService, queryModel),
     41                        queryModel,
     42                                Model.of(ExpansionState.COLLAPSED),
     43                                subListSize);
    3744    }
    3845
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/AllFacetValuesPanel.java

    r6437 r6813  
    2828import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldValuesProvider;
    2929import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProvider;
     30
     31import java.util.Collection;
    3032import java.util.Collections;
    3133import org.apache.solr.client.solrj.response.FacetField;
     
    143145                        // call callback
    144146                        onValuesSelected(
    145                                 item.getModelObject().getFacetField().getName(),
    146147                                // for now only single values can be selected
    147                                 new FacetSelection(Collections.singleton(item.getModelObject().getName())),
     148                                        Collections.singleton(item.getModelObject().getName()),
    148149                                target);
    149150                    }
     
    256257     * Callback triggered when values have been selected on this facet
    257258     *
    258      * @param facet name of the facet this panel represents
    259259     * @param values selected values
    260260     * @param target Ajax target allowing for a partial update. May be null
    261261     * (fallback)!
    262262     */
    263     protected abstract void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target);
     263    protected abstract void onValuesSelected(Collection<String> values, AjaxRequestTarget target);
    264264
    265265}
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetPanel.java

    r6248 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.panels.search;
    1818
    19 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldDescriptionModel;
    20 import eu.clarin.cmdi.vlo.pojo.ExpansionState;
    21 import eu.clarin.cmdi.vlo.pojo.FacetFieldSelection;
    22 import eu.clarin.cmdi.vlo.pojo.FacetSelection;
    23 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    24 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
    25 import eu.clarin.cmdi.vlo.wicket.panels.ExpandablePanel;
    2619import java.util.Collection;
    27 import java.util.HashSet;
     20
    2821import org.apache.solr.client.solrj.response.FacetField;
    2922import org.apache.wicket.ajax.AjaxRequestTarget;
     
    3124import org.apache.wicket.markup.html.basic.Label;
    3225import org.apache.wicket.model.IModel;
    33 import org.apache.wicket.model.PropertyModel;
    3426import org.slf4j.Logger;
    3527import org.slf4j.LoggerFactory;
     28
     29import eu.clarin.cmdi.vlo.pojo.ExpansionState;
     30import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     31import eu.clarin.cmdi.vlo.wicket.model.SelectionModel;
     32import eu.clarin.cmdi.vlo.wicket.model.SolrFieldDescriptionModel;
     33import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
     34import eu.clarin.cmdi.vlo.wicket.panels.ExpandablePanel;
    3635
    3736/**
     
    4342 * @author twagoo
    4443 */
    45 public abstract class FacetPanel extends ExpandablePanel<FacetFieldSelection> {
     44public abstract class FacetPanel extends ExpandablePanel<String> {
    4645    private final static Logger logger = LoggerFactory.getLogger(FacetPanel.class);
    47 
    48     private final IModel<ExpansionState> expansionStateModel;
    4946
    5047    private final SelectedFacetPanel selectedFacetPanel;
    5148    private final FacetValuesPanel facetValuesPanel;
    5249
    53     public FacetPanel(String id, IModel<FacetFieldSelection> selectionModel, IModel<ExpansionState> expansionState) {
    54         this(id, selectionModel, expansionState, 0);
     50    public FacetPanel(String id, IModel<String> facetNameModel, IModel<FacetField> facetFieldModel, final IModel<QueryFacetsSelection> selectionModel, IModel<ExpansionState> expansionState) {
     51        this(id, facetNameModel, facetFieldModel, selectionModel, expansionState, 0);
    5552    }
    5653
    57     public FacetPanel(String id, IModel<FacetFieldSelection> selectionModel, IModel<ExpansionState> expansionState, int subListSize) {
    58         super(id, selectionModel, expansionState);
    59         this.expansionStateModel = expansionState;
     54    public FacetPanel(String id, IModel<String> facetNameModel, IModel<FacetField> facetFieldModel, final IModel<QueryFacetsSelection> selectionModel, IModel<ExpansionState> expansionState, int subListSize) {
     55        super(id, facetNameModel, expansionState);
    6056
    6157        // panel showing values for selection
    62         facetValuesPanel = createFacetValuesPanel("facetValues", subListSize);
     58        facetValuesPanel = createFacetValuesPanel("facetValues", facetNameModel.getObject(), facetFieldModel, selectionModel, subListSize);
    6359        add(facetValuesPanel);
    6460
    6561        // panel showing current selection, allowing for deselection
    66         selectedFacetPanel = createSelectedFacetPanel("facetSelection");
     62        selectedFacetPanel = createSelectedFacetPanel("facetSelection", facetNameModel.getObject(), selectionModel);
    6763        add(selectedFacetPanel);
    6864    }
     
    7066    @Override
    7167    protected Label createTitleLabel(String id) {
    72         final IModel<String> facetNameModel = new PropertyModel<>(getModel(), "facetField.name");
    73         final Label label = new Label(id, new SolrFieldNameModel(facetNameModel));
    74         label.add(new AttributeAppender("title", new SolrFieldDescriptionModel(facetNameModel)));
     68        final Label label = new Label(id, new SolrFieldNameModel(getModel()));
     69        label.add(new AttributeAppender("title", new SolrFieldDescriptionModel(getModel())));
    7570        return label;
    7671    }
     
    7974    protected void onConfigure() {
    8075        super.onConfigure();
    81 
    82         final boolean valuesSelected = !getModelObject().getFacetValues().isEmpty();
     76       
     77        final boolean valuesSelected = !selectedFacetPanel.getModelObject().isEmpty();
    8378        facetValuesPanel.setVisible(!valuesSelected);
    8479        selectedFacetPanel.setVisible(valuesSelected);
    85 
    86         // hide this entire panel is no values are selectable
    87         setVisible(!isHideIfNoValues() || valuesSelected || getModelObject().getFacetField().getValueCount() > 0);
     80       
     81       
     82        // hide this entire panel if nothing is selected or there is nothing to be selected
     83        setVisible(!isHideIfNoValues() || valuesSelected || facetValuesPanel.getModelObject().getValueCount() > 0);
    8884    }
     85   
    8986
    9087    /**
     
    9794    }
    9895
    99     private FacetValuesPanel createFacetValuesPanel(String id, int subListSize) {
    100         return new FacetValuesPanel(id,
    101                 new PropertyModel<FacetField>(getModel(), "facetField"),
    102                 new PropertyModel<QueryFacetsSelection>(getModel(), "selection"), subListSize) {
     96    private FacetValuesPanel createFacetValuesPanel(String id, final String facetName, IModel<FacetField> facetFieldModel, final IModel<QueryFacetsSelection> selectionModel, int subListSize) {
     97        return new FacetValuesPanel(id, facetFieldModel, selectionModel, subListSize) {
    10398                    @Override
    104                     public void onValuesSelected(String facet, FacetSelection value, AjaxRequestTarget target) {
     99                    public void onValuesSelected(Collection<String> values, AjaxRequestTarget target) {
    105100                        // A value has been selected on this facet's panel, update the model!
    106                         FacetPanel.this.getModelObject().getSelection().selectValues(facet, value);
    107                         if (target != null) {
     101                        selectionModel.getObject().addNewFacetValue(facetName, values);
     102                       
     103                        if (target != null) {
    108104                            // reload entire page for now
    109105                            selectionChanged(target);
     
    113109    }
    114110
    115     private SelectedFacetPanel createSelectedFacetPanel(String id) {
    116         return new SelectedFacetPanel(id, getModel()) {
     111    private SelectedFacetPanel createSelectedFacetPanel(String id, final String facetName, final IModel<QueryFacetsSelection> selectionModel) {
     112        return new SelectedFacetPanel(id, facetName, new SelectionModel(facetName, selectionModel)) {
    117113            @Override
    118             public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) {
    119                 final QueryFacetsSelection selection = getModelObject().getSelection();
     114            public void onValuesUnselected(Collection<String> valuesRemoved, AjaxRequestTarget target) {
     115                // Values have been removed, calculate remainder
     116                selectionModel.getObject().removeFacetValue(facetName, valuesRemoved);
    120117
    121                 // Values have been removed, calculate remainder
    122                 final FacetSelection facetSelection = selection.getSelectionValues(facet);
    123                 final Collection<String> currentSelection = facetSelection.getValues();
    124                 final Collection<String> newSelection = new HashSet<String>(currentSelection);
    125                 newSelection.removeAll(valuesRemoved);
    126 
    127                 // Update model (keep selection type)
    128                 selection.selectValues(facet, new FacetSelection(facetSelection.getSelectionType(), newSelection));
    129 
    130                 // collapse after removal
    131                 // TODO: should be removed, but then list of values
    132                 // does not seem to update correctly
    133                 expansionStateModel.setObject(ExpansionState.COLLAPSED);
    134 
     118             // collapse after removal
     119             // TODO: should be removed, but then list of values
     120             // does not seem to update correctly
     121             expansionModel.setObject(ExpansionState.COLLAPSED);
     122               
    135123                if (target != null) {
    136124                    // reload entire page for now
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetValuesPanel.java

    r6437 r6813  
    2525import eu.clarin.cmdi.vlo.wicket.components.FieldValueLabel;
    2626import eu.clarin.cmdi.vlo.wicket.provider.PartitionedDataProvider;
     27import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel;
    2728import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
    2829import eu.clarin.cmdi.vlo.wicket.pages.AllFacetValuesPage;
     
    7374    private final int subListSize;
    7475    private final IModel<String> fieldNameModel;
    75 
     76   
    7677    @SpringBean
    7778    private FieldValueConverterProvider fieldValueConverterProvider;
     
    203204                // call callback
    204205                onValuesSelected(
    205                         item.getModelObject().getFacetField().getName(),
    206206                        // for now only single values can be selected
    207                         new FacetSelection(Collections.singleton(item.getModelObject().getName())),
     207                                Collections.singleton(item.getModelObject().getName()),
    208208                        target);
    209209            }
     
    243243                super.onConfigure();
    244244                // only show if there actually are more values!
    245                 setVisible(getModel().getObject().getValueCount() > MAX_NUMBER_OF_FACETS_TO_SHOW);
     245                setVisible(getModelObject().getValueCount() > MAX_NUMBER_OF_FACETS_TO_SHOW);
    246246            }
    247247
     
    271271
    272272            @Override
    273             protected void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target) {
     273            protected void onValuesSelected(Collection<String> values, AjaxRequestTarget target) {
    274274                if (target != null) {
    275275                    // target can be null if selection link was opened in a new tab
    276276                    window.close(target);
    277277                }
    278                 FacetValuesPanel.this.onValuesSelected(facet, values, target);
     278                FacetValuesPanel.this.onValuesSelected(values, target);
    279279            }
    280280        };
     
    289289        filterModel.detach();
    290290    }
     291   
    291292
    292293    /**
     
    298299     * (fallback)!
    299300     */
    300     protected abstract void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target);
    301 
     301    protected abstract void onValuesSelected(Collection<String> values, AjaxRequestTarget target);
     302   
    302303    @Override
    303304    protected void onBeforeRender() {
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetsPanel.java

    r6500 r6813  
    1818
    1919import eu.clarin.cmdi.vlo.JavaScriptResources;
    20 import eu.clarin.cmdi.vlo.pojo.ExpansionState;
    21 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    22 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    23 import eu.clarin.cmdi.vlo.wicket.model.FacetExpansionStateModel;
    24 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel;
    25 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldSelectionModel;
    2620import java.util.HashMap;
    2721import java.util.List;
    2822import java.util.Map;
    29 import org.apache.solr.client.solrj.response.FacetField;
     23
    3024import org.apache.wicket.Component;
    3125import org.apache.wicket.ajax.AjaxRequestTarget;
     
    4034import org.apache.wicket.model.IModel;
    4135import org.apache.wicket.model.util.MapModel;
    42 import org.apache.wicket.spring.injection.annot.SpringBean;
     36
     37import eu.clarin.cmdi.vlo.JavaScriptResources;
     38import eu.clarin.cmdi.vlo.pojo.ExpansionState;
     39import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     40import eu.clarin.cmdi.vlo.wicket.model.FacetExpansionStateModel;
     41import eu.clarin.cmdi.vlo.wicket.model.FacetFieldModel;
     42import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
    4343
    4444/**
     
    5050 * @author twagoo
    5151 */
    52 public abstract class FacetsPanel extends GenericPanel<List<FacetField>> {
     52public abstract class FacetsPanel extends GenericPanel<List<String>> {
    5353
    54     @SpringBean
    55     private FacetFieldsService facetFieldsService;
    5654    private MapModel<String, ExpansionState> expansionModel;
    5755
     
    6462     * selection state
    6563     */
    66     public FacetsPanel(final String id, final IModel<List<FacetField>> facetsModel, final IModel<QueryFacetsSelection> selectionModel) {
    67         super(id, facetsModel);
     64    public FacetsPanel(final String id, final IModel<List<String>> facetNamesModel, final FacetFieldsModel fieldsModel, final IModel<QueryFacetsSelection> selectionModel) {
     65        super(id, facetNamesModel);
    6866
    6967        final Map<String, ExpansionState> expansionStateMap = new HashMap<String, ExpansionState>();
    7068        expansionModel = new MapModel<String, ExpansionState>(expansionStateMap);
    71 
    72         final ListView<FacetField> facetsView = new ListView<FacetField>("facets", facetsModel) {
     69       
     70        final ListView<String> facetsView = new ListView<String>("facets", facetNamesModel) {
    7371
    7472            @Override
    75             protected void populateItem(ListItem<FacetField> item) {
    76                 // Create a facet field model which does a lookup by name,
     73            protected void populateItem(ListItem<String> item) {
     74                // Create a facet field model which does a lookup by name,
    7775                // making it dynamic in case the selection and therefore
    7876                // set of available values changes
    79                 final IModel<FacetField> facetFieldModel = new FacetFieldModel(facetFieldsService, item.getModelObject(), selectionModel);
    8077                item.add(
    81                         new FacetPanel("facet",
    82                                 new FacetFieldSelectionModel(facetFieldModel, selectionModel),
    83                                 new FacetExpansionStateModel(facetFieldModel, expansionModel)) {
     78                        new FacetPanel("facet",
     79                                        item.getModel(),
     80                                        new FacetFieldModel(item.getModelObject(), fieldsModel),
     81                                selectionModel,
     82                                new FacetExpansionStateModel(item.getModel(), expansionModel)) {
    8483
    8584                            @Override
     
    139138    private void setAllFacetsExpansionState(final ExpansionState state) {
    140139        final Map<String, ExpansionState> expansionMap = expansionModel.getObject();
    141         for (FacetField facet : getModelObject()) {
    142             expansionMap.put(facet.getName(), state);
     140        for (String facetName : getModelObject()) {
     141            expansionMap.put(facetName, state);
    143142        }
    144143    }
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/SelectedFacetPanel.java

    r6002 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.panels.search;
    1818
    19 import eu.clarin.cmdi.vlo.pojo.FacetFieldSelection;
    20 import eu.clarin.cmdi.vlo.wicket.components.FieldValueLabel;
     19import java.util.ArrayList;
    2120import java.util.Collection;
    2221import java.util.Collections;
    2322import java.util.List;
     23import java.util.concurrent.CopyOnWriteArrayList;
     24
    2425import org.apache.wicket.ajax.AjaxRequestTarget;
    2526import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxFallbackLink;
     
    2728import org.apache.wicket.markup.html.list.ListView;
    2829import org.apache.wicket.markup.html.panel.GenericPanel;
     30import org.apache.wicket.model.AbstractReadOnlyModel;
    2931import org.apache.wicket.model.IModel;
    30 import org.apache.wicket.model.PropertyModel;
     32import org.apache.wicket.model.Model;
     33
     34import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     35import eu.clarin.cmdi.vlo.wicket.components.FieldValueLabel;
    3136
    3237/**
     
    3641 * @author twagoo
    3742 */
    38 public abstract class SelectedFacetPanel extends GenericPanel<FacetFieldSelection> {
     43public abstract class SelectedFacetPanel extends GenericPanel<FacetSelection> {
    3944
    40     public SelectedFacetPanel(String id, final IModel<FacetFieldSelection> model) {
     45    public SelectedFacetPanel(String id, String facetName, final IModel<FacetSelection> model) {
    4146        super(id, model);
    4247
    4348        // Add removers for all selected values for collapsed state
    44         add(createSelectionRemovers("facetValueRemover"));
     49        add(createSelectionRemovers("facetValueRemover", facetName));
    4550        // Add selected items to expanded state
    46         add(createSelectionRemovers("selectedItem"));
     51        add(createSelectionRemovers("selectedItem", facetName));
    4752    }
    48 
    49     private ListView<String> createSelectionRemovers(String id) {
     53       
     54    private ListView<String> createSelectionRemovers(String id, String facetName) {
    5055        // Model of the list of selected values in this facet
    51         final PropertyModel<List<String>> propertyModel = new PropertyModel<List<String>>(getModel(), "facetValues");
    52         final PropertyModel<String> fieldNameModel = new PropertyModel(getModel(), "facetField.name");
     56       
     57        List<String> selectedValues;
     58                if (getModelObject().getValues() != null)
     59                        selectedValues = new CopyOnWriteArrayList<String>(getModelObject().getValues());
     60                else
     61                        selectedValues = Collections.emptyList();
     62               
     63               
     64        final IModel<List<String>> propertyModel = new AbstractReadOnlyModel<List<String>>() {
     65               
     66                        @Override
     67                        public List<String> getObject() {
     68                                return new ArrayList(SelectedFacetPanel.this.getModelObject().getValues());
     69                        }
     70               
     71                };
     72                final IModel<String> fieldNameModel = new Model<String>(facetName);
     73        //final PropertyModel<List<String>> propertyModel= new PropertyModel<List<String>>(getModel(), "facetValues");
     74        //final PropertyModel<String> fieldNameModel = new PropertyModel(getModel(), "facetField.name");
     75       
     76       
    5377        // Repeating container of value + unselection links
    5478        final ListView<String> listView = new ListView<String>(id, propertyModel) {
     
    79103     * (fallback)!
    80104     */
    81     protected abstract void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target);
     105    protected abstract void onValuesUnselected(Collection<String> valuesRemoved, AjaxRequestTarget target);
    82106
    83107    public class RemoveLink extends IndicatingAjaxFallbackLink {
     
    94118            // Remove a single value
    95119            // Call callback
    96             onValuesUnselected(
    97                     SelectedFacetPanel.this.getModelObject().getFacetField().getName(),
    98                     Collections.singleton(valueModel.getObject()), target);
     120            onValuesUnselected(Collections.singleton(valueModel.getObject()), target);
    99121        }
    100122
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/SimpleSearchBrowsePanel.java

    r6437 r6813  
    1717package eu.clarin.cmdi.vlo.wicket.panels.search;
    1818
    19 import eu.clarin.cmdi.vlo.config.VloConfig;
    20 import eu.clarin.cmdi.vlo.pojo.FacetSelection;
    21 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    22 import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    23 import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
    24 import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
    25 import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
    26 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldDescriptionModel;
    27 import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
    28 import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;
    29 import eu.clarin.cmdi.vlo.wicket.pages.SimpleSearchPage;
     19import java.util.Collection;
     20
    3021import org.apache.solr.client.solrj.response.FacetField;
    3122import org.apache.wicket.ajax.AjaxRequestTarget;
     
    4435import org.apache.wicket.model.PropertyModel;
    4536import org.apache.wicket.spring.injection.annot.SpringBean;
     37
     38import eu.clarin.cmdi.vlo.config.VloConfig;
     39import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     40import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     41import eu.clarin.cmdi.vlo.service.PageParametersConverter;
     42import eu.clarin.cmdi.vlo.service.solr.FacetFieldsService;
     43import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
     44import eu.clarin.cmdi.vlo.wicket.model.FacetFieldsModel;
     45import eu.clarin.cmdi.vlo.wicket.model.SolrFieldDescriptionModel;
     46import eu.clarin.cmdi.vlo.wicket.model.SolrFieldNameModel;
     47import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;
     48import eu.clarin.cmdi.vlo.wicket.pages.SimpleSearchPage;
    4649
    4750/**
     
    125128
    126129                @Override
    127                 protected void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target) {
     130                protected void onValuesSelected(Collection<String> values, AjaxRequestTarget target) {
    128131                    // value selected, make a new selection (in this panel we do not want to change the existing selection)...
    129132                    final QueryFacetsSelection newSelection = selectionModel.getObject().getCopy();
    130                     newSelection.selectValues(facet, values);
     133                    newSelection.selectValues(getModelObject().getName(), new FacetSelection(values));
    131134                    // ...then submit to search page
    132135                    setResponsePage(FacetedSearchPage.class, paramsConverter.toParameters(newSelection));
  • vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/solr/impl/SearchResultsDaoImplTest.java

    r6284 r6813  
    1717package eu.clarin.cmdi.vlo.service.solr.impl;
    1818
    19 import com.google.common.collect.ImmutableList;
    2019import static eu.clarin.cmdi.vlo.FacetConstants.FIELD_COLLECTION;
    2120import static eu.clarin.cmdi.vlo.FacetConstants.FIELD_COUNTRY;
     
    2322import static eu.clarin.cmdi.vlo.FacetConstants.FIELD_ID;
    2423import static eu.clarin.cmdi.vlo.FacetConstants.FIELD_NAME;
    25 import eu.clarin.cmdi.vlo.config.VloConfig;
    26 import eu.clarin.cmdi.vlo.importer.CMDIData;
     24import static org.hamcrest.Matchers.equalTo;
     25
    2726import java.io.File;
    2827import java.util.List;
     28
    2929import org.apache.solr.client.solrj.SolrQuery;
    3030import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
     
    3737import org.junit.Before;
    3838import org.junit.Test;
    39 import static org.hamcrest.Matchers.*;
     39
     40import com.google.common.collect.ImmutableList;
     41
     42import eu.clarin.cmdi.vlo.config.VloConfig;
     43import eu.clarin.cmdi.vlo.importer.CMDIData;
    4044
    4145/**
  • vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/model/FacetFieldModelTest.java

    r4932 r6813  
    5858    @Test
    5959    public void testGetObject() {
    60         final FacetFieldModel instance = new FacetFieldModel(service, "facet4", selectionModel, 20);
     60        final FacetFieldModel instance = new FacetFieldModel("facet4", new FacetFieldsModel(service, ImmutableList.of("facet4"), selectionModel, 20));
    6161       
    6262        context.checking(new Expectations() {
     
    8383    @Test
    8484    public void testGetObjectNotIncluded() {
    85         final FacetFieldModel instance = new FacetFieldModel(service, "facet4", selectionModel, 20);
     85        final FacetFieldModel instance = new FacetFieldModel("facet4", new FacetFieldsModel(service, ImmutableList.of("facet4"), selectionModel, 20));
    8686
    8787        context.checking(new Expectations() {
  • vlo/trunk/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/pages/TestFacetedSearchPage.java

    r5231 r6813  
    6060                will(returnValue(2L));
    6161                atLeast(1).of(facetFieldsService).getFacetFields(with(any(QueryFacetsSelection.class)), with(any(List.class)), with(any(Integer.class)));
    62                 will(returnValue(Arrays.asList(new FacetField("collection"), new FacetField("language"), new FacetField("resource class"))));
     62                will(returnValue(Arrays.asList(
     63                                new FacetField("languageCode"),
     64                                new FacetField("collection"),
     65                                new FacetField("resourceClass"),
     66                                new FacetField("country"),
     67                                new FacetField("modality"),
     68                                new FacetField("genre"),
     69                                new FacetField("subject"),
     70                                new FacetField("format"),
     71                                new FacetField("organisation"),
     72                                new FacetField("availability"),
     73                                new FacetField("nationalProject"),
     74                                new FacetField("keywords"),
     75                                new FacetField("dataProvider")
     76                )));
    6377
    6478                // mock search results
Note: See TracChangeset for help on using the changeset viewer.