Changeset 4566


Ignore:
Timestamp:
02/25/14 14:34:29 (10 years ago)
Author:
twagoo
Message:

separated document query factory from facet query factory (both in interface and implementation)

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

Legend:

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

    r4565 r4566  
    2323import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory;
    2424import eu.clarin.cmdi.vlo.service.impl.SearchResultsDaoImpl;
     25import eu.clarin.cmdi.vlo.service.impl.SolrDocumentQueryFactoryImpl;
    2526import eu.clarin.cmdi.vlo.service.impl.SolrDocumentServiceImpl;
    2627import eu.clarin.cmdi.vlo.service.impl.SolrFacetFieldsService;
     
    7071    @Bean
    7172    public FacetFieldsService facetFieldsService() {
    72         return new SolrFacetFieldsService(searchResultsDao(), queryFactory());
     73        return new SolrFacetFieldsService(searchResultsDao(), facetQueryFactory());
    7374    }
    7475   
    7576    @Bean
    7677    public SolrDocumentService documentService() {
    77         return new SolrDocumentServiceImpl(searchResultsDao(), queryFactory());
     78        return new SolrDocumentServiceImpl(searchResultsDao(), documentQueryFactory());
    7879    }
    7980
     
    8485
    8586    @Bean
    86     public SolrFacetQueryFactory queryFactory() {
     87    public SolrFacetQueryFactory facetQueryFactory() {
    8788        return new SolrFacetQueryFactoryImpl(vloConfig().getFacetFields());
     89    }
     90   
     91    @Bean
     92    public SolrDocumentQueryFactoryImpl documentQueryFactory() {
     93        return new SolrDocumentQueryFactoryImpl();
    8894    }
    8995
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/SolrFacetQueryFactory.java

    r4565 r4566  
    3131
    3232    SolrQuery createCountFacetsQuery();
    33    
    34     SolrQuery createDocumentQuery(QueryFacetsSelection selection, int first, int count);
    3533
    3634}
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrDocumentServiceImpl.java

    r4565 r4566  
    1919import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2020import eu.clarin.cmdi.vlo.service.SearchResultsDao;
     21import eu.clarin.cmdi.vlo.service.SolrDocumentQueryFactory;
    2122import eu.clarin.cmdi.vlo.service.SolrDocumentService;
    22 import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory;
    2323import java.util.List;
    2424import org.apache.solr.client.solrj.SolrQuery;
     
    3232
    3333    private final SearchResultsDao searchResultsDao;
    34     private final SolrFacetQueryFactory queryFatory;
     34    private final SolrDocumentQueryFactory queryFatory;
    3535
    36     public SolrDocumentServiceImpl(SearchResultsDao searchResultsDao, SolrFacetQueryFactory queryFatory) {
     36    public SolrDocumentServiceImpl(SearchResultsDao searchResultsDao, SolrDocumentQueryFactory queryFatory) {
    3737        this.searchResultsDao = searchResultsDao;
    3838        this.queryFatory = queryFatory;
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/SolrFacetQueryFactoryImpl.java

    r4565 r4566  
    1717package eu.clarin.cmdi.vlo.service.impl;
    1818
    19 import eu.clarin.cmdi.vlo.FacetConstants;
    2019import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory;
    2120import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    22 import java.util.ArrayList;
    23 import java.util.Collection;
    2421import java.util.List;
    25 import java.util.Map;
    2622import org.apache.solr.client.solrj.SolrQuery;
    27 import org.apache.solr.client.solrj.util.ClientUtils;
    2823
    2924/**
     
    3328 * @author twagoo
    3429 */
    35 public class SolrFacetQueryFactoryImpl implements SolrFacetQueryFactory {
     30public class SolrFacetQueryFactoryImpl extends AbstractSolrQueryFactory implements SolrFacetQueryFactory {
    3631   
    37     private static final String SOLR_SEARCH_ALL = "*:*";
    3832    private final SolrQuery facetCountQuery;
    3933    private final String[] facets;
     
    5852    }
    5953   
    60     @Override
    61     public SolrQuery createDocumentQuery(QueryFacetsSelection selection, int first, int count) {
    62         final SolrQuery query = getDefaultDocumentQuery();
    63         addQueryFacetParameters(query, selection);
    64         query.setStart(first);
    65         query.setRows(count);
    66         return query;
    67     }
    68    
    69     protected void addQueryFacetParameters(final SolrQuery query, QueryFacetsSelection queryFacetsSelections) {
    70         final String queryString = queryFacetsSelections.getQuery();
    71        
    72         if (queryString == null) {
    73             query.setQuery(SOLR_SEARCH_ALL);
    74         } else {
    75             query.setQuery(ClientUtils.escapeQueryChars(queryString));
    76         }
    77        
    78         final Map<String, Collection<String>> selections = queryFacetsSelections.getSelection();
    79         if (selections != null) {
    80             final List<String> encodedQueries = new ArrayList(selections.size()); // assuming every facet has one selection, most common scenario
    81             for (Map.Entry<String, Collection<String>> selection : selections.entrySet()) {
    82                 final String facetName = selection.getKey();
    83                 final Collection<String> values = selection.getValue();
    84                 if (values != null) {
    85                     for (String value : values) {
    86                         encodedQueries.add(String.format("%s:%s", facetName, ClientUtils.escapeQueryChars(value)));
    87                     }
    88                 }
    89             }
    90             query.setFilterQueries(encodedQueries.toArray(new String[encodedQueries.size()]));
    91         }
    92     }
    93    
    9454    private SolrQuery getDefaultFacetQuery() {
    9555        SolrQuery query = new SolrQuery();
     
    10161    }
    10262   
    103     private SolrQuery getDefaultDocumentQuery() {
    104         SolrQuery query = new SolrQuery();
    105         query.setFields(FacetConstants.FIELD_NAME, FacetConstants.FIELD_ID, FacetConstants.FIELD_DESCRIPTION, FacetConstants.FIELD_COLLECTION, FacetConstants.FIELD_RESOURCE);
    106         query.setSort(SolrQuery.SortClause.asc(FacetConstants.FIELD_NAME));
    107         return query;
    108     }
    109    
    11063    @Override
    11164    public synchronized SolrQuery createCountFacetsQuery() {
Note: See TracChangeset for help on using the changeset viewer.