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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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}
Note: See TracChangeset for help on using the changeset viewer.