/* 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;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import sk.opendatanode.solr.SolrType;
import sk.opendatanode.utils.SolrQueryHelper;
public class SearchQueryPage extends Panel{
private static final long serialVersionUID = 9058238555708124775L;
private String query = null;
private String selected = SolrType.ORGANIZATION.getReadableString();
public SearchQueryPage(String id, PageParameters params) {
super(id);
this.query = params.get("q").toString("").trim();
setSelected(params);
SearchForm form = new SearchForm("searchForm");
form.add(new Label("selected", selected));
form.add(new Label("defaultValue", selected));
form.add(new Label("all", SolrType.ALL.getReadableString()));
form.add(new Label("org", SolrType.ORGANIZATION.getReadableString()));
form.add(new Label("obs", SolrType.PROCUREMENT.getReadableString()));
form.add(new Label("spo", SolrType.POLITICAL_PARTY_DONATION.getReadableString()));
form.add(new TextField<String>("query", new PropertyModel<String>(this, "query")));
add(form);
}
private void setSelected(PageParameters params) {
if(SolrQueryHelper.hasType(SolrType.ORGANIZATION, params))
selected = SolrType.ORGANIZATION.getReadableString();
else if(SolrQueryHelper.hasType(SolrType.PROCUREMENT, params))
selected = SolrType.PROCUREMENT.getReadableString();
else if(SolrQueryHelper.hasType(SolrType.POLITICAL_PARTY_DONATION, params))
selected = SolrType.POLITICAL_PARTY_DONATION.getReadableString();
else
selected = SolrType.ALL.getReadableString();
}
private final class SearchForm extends Form<Void> {
private static final long serialVersionUID = 7442088284418137882L;
public SearchForm(String id) {
super(id);
}
@Override
protected void onSubmit() {
PageParameters params = new PageParameters();
if (query != null && !query.isEmpty())
params.add("q", query);
if(getSelectedType() != null)
params.add("fq", "type:"+getSelectedType()+"*");
setResponsePage(getApplication().getHomePage(), params);
}
private String getSelectedType() {
selected = getRequest().getRequestParameters().getParameterValue("selected")
.toString(SolrType.ORGANIZATION.getReadableString());
if(selected.equals(SolrType.ALL.getReadableString()))
return null;
String type = SolrType.getTypeFromReadableString(selected).getTypeString();
return type.substring(0, 3);
}
}
}