1 package com.indexdata.mkjsf.pazpar2.commands;
\r
3 import org.apache.log4j.Logger;
\r
5 import com.indexdata.mkjsf.pazpar2.ClientCommandResponse;
\r
6 import com.indexdata.mkjsf.pazpar2.HttpResponseWrapper;
\r
7 import com.indexdata.mkjsf.pazpar2.Pz2Service;
\r
8 import com.indexdata.mkjsf.pazpar2.commands.sp.RecordCommandSp;
\r
9 import com.indexdata.mkjsf.pazpar2.commands.sp.ServiceProxyCommand;
\r
10 import com.indexdata.mkjsf.pazpar2.data.RecordResponse;
\r
11 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;
\r
12 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;
\r
14 public class RecordCommand extends Pazpar2Command implements ServiceProxyCommand {
\r
16 private static final long serialVersionUID = 2817539422114569506L;
\r
17 private static Logger logger = Logger.getLogger(RecordCommand.class);
\r
19 public RecordCommand() {
\r
24 public ResponseDataObject run() {
\r
25 ResponseDataObject responseObject = null;
\r
26 if (hasParameterValue("id")) {
\r
27 HttpResponseWrapper commandResponse = Pz2Service.get().getSearchClient().executeCommand(this);
\r
29 if (commandResponse.getContentType().contains("xml")) {
\r
30 responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse)commandResponse);
\r
31 if (ResponseParser.docTypes.contains(responseObject.getType())) {
\r
32 logger.debug("Storing " + responseObject.getType() + " in pzresp. ");
\r
34 logger.debug("Command was 'record' but response not '<record>' - assuming raw record response.");
\r
35 ResponseDataObject recordResponse = new RecordResponse();
\r
36 recordResponse.setType("record");
\r
37 recordResponse.setXml(responseObject.getXml());
\r
38 recordResponse.setAttribute("activeclients", "0");
\r
39 responseObject = recordResponse;
\r
41 } else if (commandResponse.isBinary()) {
\r
42 responseObject = new RecordResponse();
\r
43 responseObject.setType(getCommandName());
\r
44 logger.info("Binary response");
\r
45 responseObject.setAttribute("activeclients", "0");
\r
46 responseObject.setXml("<record>binary response</record>");
\r
47 responseObject.setBinary(commandResponse.getBytes());
\r
49 logger.error("Response was not found to be XML or binary. The response was not handled.");
\r
51 Pz2Service.get().getPzresp().put(getCommandName(), responseObject);
\r
53 logger.debug("No record id parameter on this command. Ignoring request but clearing any previous record result.");
\r
54 Pz2Service.get().getPzresp().put(getCommandName(), new RecordResponse());
\r
56 return responseObject;
\r
59 public void setId(String recId) {
\r
60 setParameter(new CommandParameter("id","=",recId));
\r
63 public String getId () {
\r
64 return getParameterValue("id");
\r
67 public void setOffset (String offset) {
\r
68 setParameter(new CommandParameter("offset","=",offset));
\r
71 public String getOffset () {
\r
72 return getParameterValue("offset");
\r
75 public void setChecksum (String checksum) {
\r
76 setParameter(new CommandParameter("checksum","=",checksum));
\r
79 public String getChecksum () {
\r
80 return getParameterValue("checksum");
\r
83 public void setNativesyntax (String nativesyntax) {
\r
84 setParameterInState(new CommandParameter("nativesyntax","=",nativesyntax));
\r
87 public String getNativesyntax () {
\r
88 return getParameterValue("nativesyntax");
\r
91 public void setSyntax (String syntax) {
\r
92 setParameterInState(new CommandParameter("syntax","=",syntax));
\r
95 public String getSyntax () {
\r
96 return getParameterValue("syntax");
\r
99 public void setEsn (String esn) {
\r
100 setParameter(new CommandParameter("esn","=",esn));
\r
103 public String getEsn () {
\r
104 return getParameterValue("esn");
\r
107 public void setBinary (String binary) {
\r
108 setParameter(new CommandParameter("binary","=",binary));
\r
111 public String getBinary () {
\r
112 return getParameterValue("binary");
\r
116 public RecordCommand copy () {
\r
117 RecordCommand newCommand = new RecordCommand();
\r
118 for (String parameterName : parameters.keySet()) {
\r
119 newCommand.setParameterInState(parameters.get(parameterName).copy());
\r
126 * Returns a record command object with Service Proxy extension parameters
\r
129 public RecordCommandSp getSp () {
\r
130 return new RecordCommandSp(this);
\r
134 public boolean spOnly() {
\r