source: vlo/trunk/vlo_web_app/src/main/java/eu/clarin/cmdi/vlo/pages/ShowAllFacetValuesPage.java @ 2768

Last change on this file since 2768 was 2768, checked in by keeloo, 11 years ago

Integrated parameter branche into trunk again

File size: 2.9 KB
Line 
1package eu.clarin.cmdi.vlo.pages;
2
3import java.util.Map;
4
5import org.apache.wicket.PageParameters;
6import org.apache.wicket.markup.html.WebMarkupContainer;
7import org.apache.wicket.markup.html.basic.Label;
8import org.apache.wicket.markup.html.link.BookmarkablePageLink;
9import org.apache.wicket.markup.repeater.RepeatingView;
10
11public class ShowAllFacetValuesPage extends BasePage {
12
13        public static final String SELECTED_FACET_PARAM = "selectedFacet";
14        public static final String FACET_MIN_OCCURS = "facetMinOccurs";
15        public static final Integer FACET_MIN_OCCURS_VALUE = 2; // for parameter FACET_MIN_OCCURS to show only values that occur with this minimal frequency
16
17        public ShowAllFacetValuesPage(PageParameters parameters) {
18                super(parameters);
19                final SearchPageQuery query = new SearchPageQuery(parameters);
20
21                // show facets that were already chosen
22                addFilteredFacets(query);
23               
24                // filter for minimal frequency of values
25                addOccurrencesFilter(parameters);
26               
27                String selectedFacet = parameters.getString(SELECTED_FACET_PARAM);
28                Integer facetMinOccurs = parameters.getAsInteger(FACET_MIN_OCCURS, 1);
29                add(new Label("category", selectedFacet));
30                SolrFacetFieldDataProvider data = new SolrFacetFieldDataProvider(selectedFacet, query);
31                add(new AlphabeticalPanel("alphaPanel", data, query, facetMinOccurs));
32        }
33       
34        /**
35         * Adds a link to allow filtering for minimal occurrences of a value or to show all values again
36         * @param parameters
37         */
38        private void addOccurrencesFilter(PageParameters parameters) {
39                PageParameters newParameters = (PageParameters) parameters.clone();
40                newParameters.remove(FACET_MIN_OCCURS);
41                if(!parameters.containsKey(FACET_MIN_OCCURS) || parameters.getAsInteger(FACET_MIN_OCCURS) == 1) {
42                        newParameters.add(FACET_MIN_OCCURS, FACET_MIN_OCCURS_VALUE.toString());
43                        add(new BookmarkablePageLink<Void>("filter", ShowAllFacetValuesPage.class, newParameters).add(new Label("filterLabel", "Show only values that occur at least "+FACET_MIN_OCCURS_VALUE+" times")));
44                } else {
45                        add(new BookmarkablePageLink<Void>("filter", ShowAllFacetValuesPage.class, newParameters).add(new Label("filterLabel", "Show all values")));
46                }
47        }
48       
49        /**
50         * Add view that shows already selected facets
51         * @param query
52         */
53        private void addFilteredFacets(SearchPageQuery query) {
54                Map<String, String> filterQueries = query.getFilterQueryMap();
55                RepeatingView filteredFacets = new RepeatingView("filteredFacets");
56                if (filterQueries != null && !filterQueries.isEmpty()) {
57                        WebMarkupContainer wmc = new WebMarkupContainer(filteredFacets.newChildId());
58                        wmc.add(new Label("filteredFacet", "Selected categories:"));
59                        filteredFacets.add(wmc);
60                        for (String fq : filterQueries.keySet()) {
61                                wmc = new WebMarkupContainer(filteredFacets.newChildId());
62                                wmc.add(new Label("filteredFacet", fq + " = " + filterQueries.get(fq)));
63                                filteredFacets.add(wmc);
64                        }
65                }
66                add(filteredFacets);           
67        }
68}
Note: See TracBrowser for help on using the repository browser.