Changeset 4987


Ignore:
Timestamp:
04/16/14 09:35:01 (10 years ago)
Author:
Twan Goosen
Message:

RecordPage? now only has a constructor with parameters. Added new parameter converters. All links to record pages use these so that URL's become semi-bookmarkable (and search engine indexable)

Location:
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/VloWebAppParameters.java

    r4967 r4987  
    2828    public static final String FILTER_QUERY = "fq";
    2929    public static final String FILTER_QUERY_TYPE = "fqType";
     30    public static final String SEARCH_INDEX = "index";
     31    public static final String SEARCH_COUNT = "count";
    3032}
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java

    r4983 r4987  
    2222import eu.clarin.cmdi.vlo.VloWicketApplication;
    2323import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
     24import eu.clarin.cmdi.vlo.pojo.SearchContext;
    2425import eu.clarin.cmdi.vlo.service.FieldFilter;
    2526import eu.clarin.cmdi.vlo.service.handle.HandleClient;
     
    3132import eu.clarin.cmdi.vlo.service.impl.ExclusiveFieldFilter;
    3233import eu.clarin.cmdi.vlo.service.handle.impl.HandleRestApiClient;
     34import eu.clarin.cmdi.vlo.service.impl.DocumentParametersConverter;
    3335import eu.clarin.cmdi.vlo.service.impl.UriResolverImpl;
    3436import eu.clarin.cmdi.vlo.service.impl.InclusiveFieldFilter;
     
    4345import eu.clarin.cmdi.vlo.service.solr.impl.AutoCompleteServiceImpl;
    4446import eu.clarin.cmdi.vlo.service.impl.QueryFacetsSelectionParametersConverter;
     47import eu.clarin.cmdi.vlo.service.impl.SearchContextParametersConverter;
    4548import eu.clarin.cmdi.vlo.service.solr.impl.SearchResultsDaoImpl;
    4649import eu.clarin.cmdi.vlo.service.solr.impl.SolrDocumentQueryFactoryImpl;
     
    5760import org.apache.solr.client.solrj.SolrServer;
    5861import org.apache.solr.client.solrj.impl.HttpSolrServer;
     62import org.apache.solr.common.SolrDocument;
    5963import org.springframework.context.annotation.Bean;
    6064import org.springframework.context.annotation.Configuration;
     
    150154    }
    151155
    152     @Bean
     156    @Bean(name="queryParametersConverter")
    153157    public PageParametersConverter<QueryFacetsSelection> queryParametersConverter() {
    154158        return new QueryFacetsSelectionParametersConverter();
     159    }
     160   
     161    @Bean(name="documentParamsConverter")
     162    public PageParametersConverter<SolrDocument> documentParamsConverter() {
     163        return new DocumentParametersConverter();
     164    }
     165   
     166    @Bean(name="searchContextParamsConverter")
     167    public PageParametersConverter<SearchContext> searchContextParamsConverter(){
     168        return new SearchContextParametersConverter(queryParametersConverter());
    155169    }
    156170
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/NextRecordLink.java

    r4690 r4987  
    1818
    1919import eu.clarin.cmdi.vlo.pojo.SearchContext;
     20import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    2021import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
    2122import eu.clarin.cmdi.vlo.wicket.model.SearchContextModel;
    22 import eu.clarin.cmdi.vlo.wicket.model.SolrDocumentModel;
    2323import eu.clarin.cmdi.vlo.wicket.pages.RecordPage;
    2424import java.util.List;
     
    2626import org.apache.wicket.markup.html.link.Link;
    2727import org.apache.wicket.model.IModel;
     28import org.apache.wicket.request.mapper.parameter.PageParameters;
    2829import org.apache.wicket.spring.injection.annot.SpringBean;
    2930
     
    3940    @SpringBean
    4041    private SolrDocumentService documentService;
     42    @SpringBean(name="documentParamsConverter")
     43    private PageParametersConverter<SolrDocument> documentParamConverter;
     44    @SpringBean(name="searchContextParamsConverter")
     45    private PageParametersConverter<SearchContext> contextParamConverter;
    4146    private final IModel<SearchContext> model;
    4247
     
    5459        if (documents.size() > 0) {
    5560            // found it, go there
    56             setResponsePage(new RecordPage(new SolrDocumentModel(documents.get(0)), SearchContextModel.next(context)));
     61            final PageParameters params = documentParamConverter.toParameters(documents.get(0));
     62            params.mergeWith(contextParamConverter.toParameters(SearchContextModel.next(context)));
     63            setResponsePage(RecordPage.class, params);
    5764        }
    5865    }
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/PreviousRecordLink.java

    r4690 r4987  
    1818
    1919import eu.clarin.cmdi.vlo.pojo.SearchContext;
     20import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    2021import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
    2122import eu.clarin.cmdi.vlo.wicket.model.SearchContextModel;
    22 import eu.clarin.cmdi.vlo.wicket.model.SolrDocumentModel;
    2323import eu.clarin.cmdi.vlo.wicket.pages.RecordPage;
    2424import java.util.List;
     
    2626import org.apache.wicket.markup.html.link.Link;
    2727import org.apache.wicket.model.IModel;
     28import org.apache.wicket.request.mapper.parameter.PageParameters;
    2829import org.apache.wicket.spring.injection.annot.SpringBean;
    2930
     
    3940    @SpringBean
    4041    private SolrDocumentService documentService;
     42    @SpringBean(name="documentParamsConverter")
     43    private PageParametersConverter<SolrDocument> documentParamConverter;
     44    @SpringBean(name="searchContextParamsConverter")
     45    private PageParametersConverter<SearchContext> contextParamConverter;
     46
    4147    private final IModel<SearchContext> model;
    4248
     
    5460        if (documents.size() > 0) {
    5561            // found it, go there
    56             setResponsePage(new RecordPage(new SolrDocumentModel(documents.get(0)), SearchContextModel.previous(context)));
     62            final PageParameters params = documentParamConverter.toParameters(documents.get(0));
     63            params.mergeWith(contextParamConverter.toParameters(SearchContextModel.previous(context)));
     64            setResponsePage(RecordPage.class, params);
    5765        }
    5866    }
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/RecordPageLink.java

    r4686 r4987  
    1818
    1919import eu.clarin.cmdi.vlo.pojo.SearchContext;
     20import eu.clarin.cmdi.vlo.service.PageParametersConverter;
    2021import eu.clarin.cmdi.vlo.wicket.pages.RecordPage;
    2122import org.apache.solr.common.SolrDocument;
    2223import org.apache.wicket.markup.html.link.Link;
    2324import org.apache.wicket.model.IModel;
     25import org.apache.wicket.request.mapper.parameter.PageParameters;
     26import org.apache.wicket.spring.injection.annot.SpringBean;
    2427
    2528/**
     
    2831 */
    2932public class RecordPageLink extends Link {
     33
     34    @SpringBean(name="documentParamsConverter")
     35    private PageParametersConverter<SolrDocument> documentParamConverter;
     36    @SpringBean(name="searchContextParamsConverter")
     37    private PageParametersConverter<SearchContext> contextParamConverter;
    3038
    3139    private final IModel<SolrDocument> documentModel;
     
    4048    @Override
    4149    public void onClick() {
    42         setResponsePage(new RecordPage(documentModel, selectionModel));
     50        final PageParameters params = documentParamConverter.toParameters(documentModel.getObject());
     51        params.mergeWith(contextParamConverter.toParameters(selectionModel.getObject()));
     52        setResponsePage(RecordPage.class, params);
    4353    }
    4454
     
    4959        selectionModel.detach();
    5060    }
    51    
    52    
    5361
    5462}
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/AllFacetValuesPage.java

    r4963 r4987  
    2525import eu.clarin.cmdi.vlo.wicket.panels.search.AllFacetValuesPanel;
    2626import eu.clarin.cmdi.vlo.wicket.panels.BreadCrumbPanel;
    27 import java.util.Collection;
    2827import org.apache.solr.client.solrj.response.FacetField;
    2928import org.apache.wicket.RestartResponseException;
     
    4847    @SpringBean
    4948    private FacetFieldsService facetFieldsService;
    50     @SpringBean
     49    @SpringBean(name="queryParametersConverter")
    5150    private PageParametersConverter<QueryFacetsSelection> parametersConverter;
    5251
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java

    r4971 r4987  
    3838    @SpringBean
    3939    private VloConfig vloConfig;
    40     @SpringBean
     40    @SpringBean(name="queryParametersConverter")
    4141    private PageParametersConverter<QueryFacetsSelection> paramsConverter;
    4242
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/RecordPage.java

    r4986 r4987  
    2626import eu.clarin.cmdi.vlo.wicket.model.CollectionListModel;
    2727import eu.clarin.cmdi.vlo.wicket.model.HandleLinkModel;
     28import eu.clarin.cmdi.vlo.wicket.model.SearchContextModel;
    2829import eu.clarin.cmdi.vlo.wicket.model.SolrDocumentModel;
    2930import eu.clarin.cmdi.vlo.wicket.model.SolrFieldModel;
     
    5455import org.apache.wicket.request.mapper.parameter.PageParameters;
    5556import org.apache.wicket.spring.injection.annot.SpringBean;
    56 import org.apache.wicket.util.string.StringValue;
    5757
    5858/**
     
    6262public class RecordPage extends VloBasePage<SolrDocument> {
    6363
    64     @SpringBean
     64    @SpringBean(name="documentParamsConverter")
     65    private PageParametersConverter<SolrDocument> documentParamConverter;
     66    @SpringBean(name="queryParametersConverter")
    6567    private PageParametersConverter<QueryFacetsSelection> selectionParametersConverter;
     68    @SpringBean(name="searchContextParamsConverter")
     69    private PageParametersConverter<SearchContext> contextParamConverter;
    6670    @SpringBean(name = "basicPropertiesFilter")
    6771    private FieldFilter basicPropertiesFilter;
     
    8084    public RecordPage(PageParameters params) {
    8185        super(params);
    82         // Coming from bookmark or external link, so no navigation context
    83         this.navigationModel = null;
    84 
    85         final QueryFacetsSelection selection = selectionParametersConverter.fromParameters(params);
    86         selectionModel = Model.of(selection);
    87 
    88         final StringValue docId = params.get(VloWebAppParameters.DOCUMENT_ID);
    89         if (docId.isEmpty()) {
    90             Session.get().error("No document ID provided");
     86
     87        // get search context from params if available
     88        final SearchContext searchContext = contextParamConverter.fromParameters(params);
     89        if (searchContext instanceof SearchContextModel) {
     90            this.navigationModel = (SearchContextModel) (searchContext);
     91        } else if (searchContext != null) {
     92            this.navigationModel = Model.of(searchContext);
     93        } else {
     94            this.navigationModel = null;
     95        }
     96
     97        // get selection from context or parameters
     98        if (navigationModel == null) {
     99            final QueryFacetsSelection selection = selectionParametersConverter.fromParameters(params);
     100            selectionModel = Model.of(selection);
     101        } else {
     102            selectionModel = new PropertyModel(navigationModel, "selection");
     103        }
     104
     105        // get document from parameters
     106        final SolrDocument document = documentParamConverter.fromParameters(params);
     107        if (null == document) {
     108            Session.get().error(String.format("Document with ID %s could not be found", params.get(VloWebAppParameters.DOCUMENT_ID)));
    91109            throw new RestartResponseException(new FacetedSearchPage(selectionModel));
    92         }
    93         final SolrDocumentModel documentModel = new SolrDocumentModel(docId.toString());
    94         if (null == documentModel.getObject()) {
    95             Session.get().error(String.format("Document with ID %s could not be found", docId));
    96             throw new RestartResponseException(new FacetedSearchPage(selectionModel));
    97         }
    98         setModel(documentModel);
    99 
    100         addComponents();
    101     }
    102 
    103     /**
    104      * Constructor using existing models (when constructed explicitly in code)
    105      *
    106      * @param documentModel
    107      * @param contextModel
    108      */
    109     public RecordPage(IModel<SolrDocument> documentModel, IModel<SearchContext> contextModel) {
    110         super(documentModel);
    111         this.navigationModel = contextModel;
    112         this.selectionModel = new PropertyModel(contextModel, "selection");
     110        } else {
     111            setModel(new SolrDocumentModel(document));
     112        }
     113
    113114        addComponents();
    114115    }
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/BreadCrumbPanel.java

    r4973 r4987  
    5151public class BreadCrumbPanel extends GenericPanel<QueryFacetsSelection> {
    5252
    53     @SpringBean
     53    @SpringBean(name="queryParametersConverter")
    5454    private PageParametersConverter<QueryFacetsSelection> paramsConverter;
    5555
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/TopLinksPanel.java

    r4966 r4987  
    5555public class TopLinksPanel extends GenericPanel<QueryFacetsSelection> {
    5656
    57     @SpringBean
     57    @SpringBean(name="queryParametersConverter")
    5858    private PageParametersConverter<QueryFacetsSelection> paramsConverter;
    5959    @SpringBean
Note: See TracChangeset for help on using the changeset viewer.