1 package com.indexdata.pz2utils4jsf.pazpar2.commands;
\r
3 import javax.enterprise.context.SessionScoped;
\r
5 import org.apache.log4j.Logger;
\r
7 import com.indexdata.pz2utils4jsf.pazpar2.Expression;
\r
8 import com.indexdata.pz2utils4jsf.pazpar2.state.StateManager;
\r
11 public class SearchCommand extends Pazpar2Command {
\r
13 private static final long serialVersionUID = -1888520867838597236L;
\r
14 private static Logger logger = Logger.getLogger(SearchCommand.class);
\r
16 public SearchCommand(StateManager stateMgr) {
\r
17 super("search",stateMgr);
\r
20 public void setSession (String sessionId) {
\r
21 setParameter(new CommandParameter("session","=",sessionId));
\r
24 public void setQuery(String query) {
\r
25 setParameter(new CommandParameter("query","=",query));
\r
28 public String getQuery () {
\r
29 return getParameter("query") == null ? null : getParameter("query").getValueWithExpressions();
\r
33 * Sets a facet, in CQL, to restrict the current results,
\r
34 * then executes the search
\r
36 * @param facetKey i.e. 'au' for author
\r
37 * @param term i.e. 'Dickens, Charles'
\r
39 public void setFacet(String facetKey, String term) {
\r
40 if (term != null && term.length()>0) {
\r
41 getParameter("query").addExpression(new Expression(facetKey,"=",term));
\r
46 * Sets a facet to limit the current query by. The
\r
47 * facet is appended to the query string itself (rather
\r
48 * as a separately managed entity. It will thus appear
\r
49 * in a query field as retrieved by getQuery(). It will
\r
50 * not be removed by removeFacet(...)
\r
52 * @param facetKey i.e. 'au' for author
\r
53 * @param term i.e. 'Dickens, Charles'
\r
55 public void setFacetOnQuery (String facetKey, String term) {
\r
56 String facetExpression = facetKey + "=" + term;
\r
57 if (term != null && term.length()>0) {
\r
58 String currentQuery= getParameterValue("query");
\r
59 setParameter(new CommandParameter("query","=", currentQuery + " and " + facetExpression));
\r
64 * Removes a facet set by setFacet(...), then executes
\r
67 * Will not remove facets set by setFacetOnQuery(...)
\r
69 * @param facetKey i.e. 'au' for author
\r
70 * @param term i.e. 'Dickens, Charles'
\r
72 public void removeFacet(String facetKey, String term) {
\r
73 if (getParameter("query") != null) {
\r
74 getParameter("query").removeExpression(new Expression(facetKey,"=",term));
\r
78 public void setFilter(String filterExpression) {
\r
79 setParameter(new CommandParameter("filter","=",filterExpression));
\r
82 public String getFilter() {
\r
83 return getParameter("filter") == null ? null : getParameter("filter").getValueWithExpressions();
\r
87 public void setLimit (String limit) {
\r
91 public void addFilter(String filterExpression) {
\r
92 if (hasParameterSet("filter")) {
\r
93 setFilter(filterExpression);
\r
96 getParameter("filter");
\r
100 public void removeFilters () {
\r
104 public void removeFilter(String filterExpression) {
\r
108 public SearchCommand copy () {
\r
109 SearchCommand newCommand = new SearchCommand(stateMgr);
\r
110 for (String parameterName : parameters.keySet()) {
\r
111 newCommand.setParameterSilently(parameters.get(parameterName).copy());
\r