package com.indexdata.mkjsf.pazpar2.commands;\r
\r
import javax.enterprise.context.SessionScoped;\r
+import javax.inject.Named;\r
\r
import org.apache.log4j.Logger;\r
\r
-import com.indexdata.mkjsf.pazpar2.state.StateManager;\r
+import com.indexdata.mkjsf.pazpar2.Pz2Bean;\r
+import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;\r
+import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
\r
-@SessionScoped\r
-public class SearchCommand extends Pazpar2Command {\r
+@SessionScoped @Named\r
+public class SearchCommand extends Pazpar2Command implements ServiceProxyCommand {\r
\r
private static final long serialVersionUID = -1888520867838597236L;\r
private static Logger logger = Logger.getLogger(SearchCommand.class);\r
private SingleTargetFilter singleTargetFilter = null;\r
+ \r
+ public SearchCommand() {\r
+ super("search");\r
+ }\r
\r
- public SearchCommand(StateManager stateMgr) {\r
- super("search",stateMgr);\r
+ public ResponseDataObject run() {\r
+ logger.info("Running " + getCommandName());\r
+ Pz2Bean.get().getStateMgr().hasPendingStateChange("search",false);\r
+ Pz2Bean.get().getPzresp().resetSearchAndBeyond();\r
+ Pz2Bean.get().getPzreq().getRecord().removeParametersInState(); \r
+ Pz2Bean.get().getPzreq().getShow().setParameterInState(new CommandParameter("start","=",0)); \r
+ Pz2Bean.get().getSearchClient().setSearchCommand(this);\r
+ return super.run();\r
}\r
+\r
\r
public void setQuery(String query) { \r
setParameter(new CommandParameter("query","=",query));\r
\r
public void addFilter(String filterExpression) {\r
// TODO: implement\r
- if (hasParameterSet("filter")) {\r
+ if (hasParameterValue("filter")) {\r
setFilter(filterExpression);\r
} else {\r
getParameter("filter");\r
return getParameterValue("maxrecs");\r
}\r
\r
- public void setSort () {\r
- setParameter(new CommandParameter("sort","=","sort"));\r
+ public void setSort (String sort) {\r
+ setParameter(new CommandParameter("sort","=",sort));\r
}\r
\r
public String getSort () {\r
return getParameterValue("sort");\r
}\r
\r
+ public void setRank (String rank) {\r
+ setParameter(new CommandParameter("rank","=",rank));\r
+ }\r
+ \r
+ public String getRank () {\r
+ return getParameterValue("rank");\r
+ }\r
+ \r
+ public void setMergekey (String mergekey) {\r
+ setParameter(new CommandParameter("mergekey","=",mergekey));\r
+ }\r
+ \r
+ public String getMergekey () {\r
+ return getParameterValue("mergekey");\r
+ }\r
+ \r
+ \r
/**\r
* Sets a facet, in CQL, to restrict the current results,\r
* then executes the search \r
if (hasSingleTargetFilter(new SingleTargetFilter(targetId,targetName))) {\r
logger.debug("Already using target filter " + this.singleTargetFilter.getFilterExpression());\r
} else { \r
+ logger.debug("Setting new single target filter for [" + targetName + "]");\r
this.singleTargetFilter = new SingleTargetFilter(targetId,targetName);\r
setParameter(new CommandParameter("filter","=",this.singleTargetFilter.getFilterExpression())); \r
} \r
}\r
\r
public SingleTargetFilter getSingleTargetFilter () {\r
- logger.debug("request to get the current single target filter");\r
+ logger.debug("request to get the current single target filter " + singleTargetFilter);\r
return singleTargetFilter;\r
}\r
\r
* Removes the current target filter from the search\r
* \r
*/\r
- public void removeSingleTargetFilter () {\r
+ public String removeSingleTargetFilter () {\r
logger.debug("Removing target filter " + singleTargetFilter.getFilterExpression());\r
this.singleTargetFilter = null;\r
- removeParameter("filter"); \r
+ removeParameter("filter");\r
+ return null;\r
}\r
\r
/**\r
logger.debug("Checking if a single target filter is set: " + (singleTargetFilter != null));\r
return singleTargetFilter != null; \r
}\r
-\r
+ \r
/**\r
* Resolves if the current search command has a target filter - to\r
* be used by the UI for conditional rendering of target filter info.\r
* filter\r
*/\r
protected boolean hasSingleTargetFilter(SingleTargetFilter targetFilter) {\r
+ logger.debug("Checking if target filter for [" + targetFilter.getTargetName() + "] is set.");\r
return hasSingleTargetFilter() && targetFilter.equals(this.singleTargetFilter);\r
}\r
\r
public SearchCommand copy () {\r
- SearchCommand newCommand = new SearchCommand(stateMgr);\r
+ SearchCommand newCommand = new SearchCommand();\r
for (String parameterName : parameters.keySet()) {\r
newCommand.setParameterInState(parameters.get(parameterName).copy()); \r
}\r
return newCommand;\r
}\r
\r
+ @Override\r
+ public ServiceProxyCommand getSp() {\r
+ return this;\r
+ }\r
+\r
+ @Override\r
+ public boolean spOnly() {\r
+ return false;\r
+ }\r
+\r
}\r