X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fcommands%2FPazpar2Command.java;h=fd74c3752bcc09081eb3c9f2b3462665e4131333;hb=95b6d2c90bde9b9946b79479f42233f6d7645f77;hp=06aebf3f7d2b07d1bbc220d06552bea7d438dff6;hpb=11ff48b9d37193a89a4b74da75db8c58415c46a6;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/commands/Pazpar2Command.java b/src/main/java/com/indexdata/mkjsf/pazpar2/commands/Pazpar2Command.java index 06aebf3..fd74c37 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/commands/Pazpar2Command.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/commands/Pazpar2Command.java @@ -3,15 +3,18 @@ package com.indexdata.mkjsf.pazpar2.commands; import java.io.Serializable; import java.util.HashMap; import java.util.Map; +import java.util.StringTokenizer; import org.apache.log4j.Logger; import com.indexdata.mkjsf.pazpar2.ClientCommandResponse; import com.indexdata.mkjsf.pazpar2.HttpResponseWrapper; import com.indexdata.mkjsf.pazpar2.Pz2Bean; +import com.indexdata.mkjsf.pazpar2.SearchClient; import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand; import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject; import com.indexdata.mkjsf.pazpar2.data.ResponseParser; +import com.indexdata.mkjsf.pazpar2.data.Responses; public abstract class Pazpar2Command implements Serializable { @@ -20,8 +23,7 @@ public abstract class Pazpar2Command implements Serializable { protected String name = ""; protected Map parameters = new HashMap(); - public Pazpar2Command () { - + public Pazpar2Command () { } public void setCommandName(String name) { @@ -38,15 +40,41 @@ public abstract class Pazpar2Command implements Serializable { return name; } - public ResponseDataObject run() { - logger.info("Running " + getCommandName() + " using " + Pz2Bean.get().getSearchClient()); - HttpResponseWrapper httpResponse = Pz2Bean.get().getSearchClient().executeCommand(this); - logger.info("Parsing response for " + getCommandName()); + public ResponseDataObject run() { + return run(Pz2Bean.get().getSearchClient(), + Pz2Bean.get().getPzresp()); + } + + public ResponseDataObject runWith(String... parameters) { + for (String parameter : parameters) { + StringTokenizer tokenizer = new StringTokenizer(parameter,"="); + String name = (String) tokenizer.nextElement(); + String value = (String) tokenizer.nextElement(); + CommandParameter commandParameter = new CommandParameter(name,"=",value); + setParameterInState(commandParameter); + } + return run(); + } + + /** + * For running the command in a thread. Client and Responses must be + * provided because at this point the CDI bean cannot be retrieved + * from within a thread. + * + * @param client + * @param pzresp + * @return + */ + public ResponseDataObject run(SearchClient client,Responses pzresp) { + logger.debug("Running " + getCommandName() + " using " + client); + HttpResponseWrapper httpResponse = client.executeCommand(this); + logger.debug("Parsing response for " + getCommandName()); ResponseDataObject responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse) httpResponse); - logger.info("Storing response for " + getCommandName()); - Pz2Bean.get().getPzresp().put(getCommandName(), responseObject); - return responseObject; + logger.trace("Storing response for " + getCommandName()); + pzresp.put(getCommandName(), responseObject); + return responseObject; } + public void setParameter (CommandParameter parameter) { Pazpar2Command copy = this.copy(); @@ -143,8 +171,7 @@ public abstract class Pazpar2Command implements Serializable { } public String getParameterValue(String parameterName) { - return getParameter(parameterName)==null ? "" : getParameter(parameterName).getValueWithExpressions(); - + return getParameter(parameterName)==null ? "" : getParameter(parameterName).getValueWithExpressions(); } public String getUrlEncodedParameterValue(String parameterName) { @@ -161,11 +188,10 @@ public abstract class Pazpar2Command implements Serializable { private void checkInState(Pazpar2Command command) { Pz2Bean.get().getStateMgr().checkIn(command); - // if (stateMgr() != null) { - // stateMgr().checkIn(command); - // } else { - // logger.info("Command '" + command.getCommandName() + "' not affecting state (history) as no state manager was defined for this command."); - // } + } + + public String navigateTo (String target) { + return target; } public abstract ServiceProxyCommand getSp();