Changeset 4967


Ignore:
Timestamp:
04/14/14 12:44:56 (10 years ago)
Author:
Twan Goosen
Message:

implemented encoding of selection type into query parameters

Location:
vlo/branches/vlo-3.0/vlo-web-app/src
Files:
4 edited

Legend:

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

    r4966 r4967  
    1515 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    1616 */
    17 
    1817package eu.clarin.cmdi.vlo;
    1918
     
    2322 */
    2423public class VloWebAppParameters {
     24
    2525    public final static String THEME = "theme";
    2626    public final static String DOCUMENT_ID = "docId";
    2727    public static final String QUERY = "q";
    2828    public static final String FILTER_QUERY = "fq";
     29    public static final String FILTER_QUERY_TYPE = "fqType";
    2930}
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/FacetSelection.java

    r4965 r4967  
    3535    }
    3636
     37    public FacetSelection(FacetSelectionType type) {
     38        this(type, Lists.<String>newArrayList());
     39    }
     40
    3741    public FacetSelection(FacetSelectionType selectionType, Collection<String> values) {
    3842        this.selectionType = selectionType;
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/solr/impl/QueryFacetsSelectionParametersConverter.java

    r4966 r4967  
    1818
    1919import com.google.common.collect.Maps;
     20import static eu.clarin.cmdi.vlo.VloWebAppParameters.*;
    2021import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     22import eu.clarin.cmdi.vlo.pojo.FacetSelectionType;
    2123import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2224import eu.clarin.cmdi.vlo.service.PageParametersConverter;
     
    2729import org.apache.wicket.request.mapper.parameter.PageParameters;
    2830import org.apache.wicket.util.string.StringValue;
    29 import static eu.clarin.cmdi.vlo.VloWebAppParameters.*;
     31import org.slf4j.Logger;
     32import org.slf4j.LoggerFactory;
    3033
    3134/**
     
    3639public class QueryFacetsSelectionParametersConverter implements PageParametersConverter<QueryFacetsSelection> {
    3740
     41    public final static Logger logger = LoggerFactory.getLogger(QueryFacetsSelectionParametersConverter.class);
     42
    3843    @Override
    3944    public QueryFacetsSelection fromParameters(PageParameters params) {
    40         // Assuming AND. TODO: decode NOT,OR,not empty. Abandon multimap stategy?
    4145        // Get query string from params
    4246        final String query = params.get(QUERY).toOptionalString();
    4347
     48        final List<StringValue> facetSelectionTypes = params.getValues(FILTER_QUERY_TYPE);
     49        final List<StringValue> facetValues = params.getValues(FILTER_QUERY);
     50        final HashMap<String, FacetSelection> selection = Maps.newHashMapWithExpectedSize(facetValues.size());
     51
     52        for (StringValue selectionType : facetSelectionTypes) {
     53            if (!selectionType.isEmpty()) {
     54                final String[] fqType = selectionType.toString().split(":");
     55                if (fqType.length == 2) {
     56                    final String facet = fqType[0];
     57                    final String type = fqType[1].toUpperCase();
     58
     59                    try {
     60                        final FacetSelectionType facetSelectionType = FacetSelectionType.valueOf(type);
     61                        selection.put(facet, new FacetSelection(facetSelectionType));
     62                    } catch (IllegalArgumentException ex) {
     63                        logger.warn("Unknown selection type passed into query parameter {}: {}", FILTER_QUERY_TYPE, type);
     64                    }
     65                } else {
     66                    logger.info("Illegal query parameter value for {}: {}", FILTER_QUERY_TYPE, selectionType);
     67                }
     68            }
     69        }
     70
    4471        // Get facet selections from params
    45         final List<StringValue> facetValues = params.getValues(FILTER_QUERY);
    46 
    47         final HashMap<String, FacetSelection> selection = Maps.newHashMapWithExpectedSize(facetValues.size());
    4872        for (StringValue facetValue : facetValues) {
    4973            if (!facetValue.isEmpty()) {
    50                 String[] fq = facetValue.toString().split(":");
     74                final String[] fq = facetValue.toString().split(":");
    5175                if (fq.length == 2) {
    5276                    // we have a facet - value pair
     
    5882                        selection.put(facet, new FacetSelection(Arrays.asList(value)));
    5983                    }
     84                } else {
     85                    logger.info("Illegal query parameter value for {}: {}", FILTER_QUERY, facetValue);
    6086                }
    6187            }
  • vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/impl/QueryFacetsSelectionParametersConverterTest.java

    r4963 r4967  
    2020import com.google.common.collect.Maps;
    2121import eu.clarin.cmdi.vlo.pojo.FacetSelection;
     22import eu.clarin.cmdi.vlo.pojo.FacetSelectionType;
    2223import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2324import java.util.Arrays;
     
    5960        params.add("fq", "facet1:valueB");
    6061        params.add("fq", "facet2:valueC");
     62        params.add("fq", "illegal-no-colon"); //should get ignored
    6163        params.add("fq", ""); // not a valid facet selection
    6264        params.add("fq", "invalid"); // not a valid facet selection
     65        params.add("fqType", "facet1:or");
     66        params.add("fqType", "facet3:not_empty");
     67        params.add("fqType", "facet4:illegaltype"); //should get ignored
     68        params.add("fqType", "illegal-no-colon"); //should get ignored
    6369
    6470        final QueryFacetsSelection result = instance.fromParameters(params);
    6571        assertEquals("query", result.getQuery());
    66         assertEquals(2, result.getFacets().size());
     72        assertEquals(3, result.getFacets().size());
    6773        assertThat(result.getFacets(), hasItem("facet1"));
    6874        assertThat(result.getFacets(), hasItem("facet2"));
     
    7076        assertThat(result.getSelectionValues("facet1").getValues(), hasItem("valueB"));
    7177        assertThat(result.getSelectionValues("facet2").getValues(), hasItem("valueC"));
     78        // OR explicitly set
     79        assertEquals(FacetSelectionType.OR, result.getSelectionValues("facet1").getSelectionType());
     80        // AND is default
     81        assertEquals(FacetSelectionType.AND, result.getSelectionValues("facet2").getSelectionType());
     82        // NOT_EMPTY explicitly set
     83        assertEquals(FacetSelectionType.NOT_EMPTY, result.getSelectionValues("facet3").getSelectionType());
    7284    }
    7385
Note: See TracChangeset for help on using the changeset viewer.