/* Copyright (C) 2012 Martin Virag <martin.virag@eea.sk> * * This file is part of Open Data Node. * * Open Data Node is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Open Data Node is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Open Data Node. If not, see <http://www.gnu.org/licenses/>. */ package sk.opendatanode.ui.search.facet; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.wicket.Application; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.request.mapper.parameter.PageParameters; import sk.opendatanode.facet.FacetFactory; import sk.opendatanode.facet.FacetInfo; import sk.opendatanode.facet.FacetItemType; import sk.opendatanode.solr.SolrType; import sk.opendatanode.utils.SolrQueryHelper; public class FacetPanel extends Panel{ private static final long serialVersionUID = 4635123246467080919L; private List<FacetInfo> facetInfoList = new ArrayList<FacetInfo>(); private PageParameters parameters = null; private boolean stripTags; public FacetPanel(String id, PageParameters params, Map<String, Integer> facetItems) { super(id); stripTags = Application.get().getMarkupSettings().getStripWicketTags(); //no wicket tags in this panel this.parameters = params; selectFacetCategories(params, facetItems); add(new FacetListView("facetList", facetInfoList)); } /** * putting together of facets for each type * @param params * @param facetItems */ private void selectFacetCategories(PageParameters params, Map<String, Integer> facetItems) { boolean all = SolrQueryHelper.hasTypeAll(params); if(all || SolrQueryHelper.hasType(SolrType.ORGANIZATION, params)) { add(FacetItemType.LEGAL_FORM, facetItems); add(FacetItemType.SEAT, facetItems); add(FacetItemType.DATE_FROM, facetItems); add(FacetItemType.DATE_TO, facetItems); } if (all || SolrQueryHelper.hasType(SolrType.PROCUREMENT, params)) { add(FacetItemType.YEAR, facetItems); add(FacetItemType.PRICE, facetItems); add(FacetItemType.CURRENCY, facetItems); add(FacetItemType.VAT, facetItems); } if(all || SolrQueryHelper.hasType(SolrType.POLITICAL_PARTY_DONATION, params)) { add(FacetItemType.PARTY, facetItems); add(FacetItemType.VALUE, facetItems); add(FacetItemType.YEAR, facetItems); } } private void add(FacetItemType type, Map<String, Integer> facetItems) { FacetInfo info = FacetFactory.getFacetInfo(type, facetItems); if(info != null) facetInfoList.add(info); } private class FacetListView extends ListView<FacetInfo> { private static final long serialVersionUID = -8448695059163993780L; public FacetListView(String id, List<FacetInfo> facetList) { super(id, facetList); } @Override protected void populateItem(ListItem<FacetInfo> item) { FacetInfo facetInfo = item.getModelObject(); item.add(new Label("facetName", facetInfo.getName())); item.add(new FacetItemPanel("facetItem", facetInfo.getItemList(), parameters)); item.setRenderBodyOnly(true); } } @Override protected void onBeforeRender() { super.onBeforeRender(); Application.get().getMarkupSettings().setStripWicketTags(true); } @Override protected void onAfterRender() { super.onAfterRender(); Application.get().getMarkupSettings().setStripWicketTags(stripTags); } }