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
18 private RecordCommandSp spCommand = null;
\r
20 public RecordCommand() {
\r
25 public ResponseDataObject run() {
\r
26 ResponseDataObject responseObject = null;
\r
27 if (hasParameterValue("id")) {
\r
28 HttpResponseWrapper commandResponse = Pz2Service.get().getSearchClient().executeCommand(this);
\r
30 if (commandResponse.getContentType().contains("xml")) {
\r
31 responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse)commandResponse);
\r
32 if (ResponseParser.docTypes.contains(responseObject.getType())) {
\r
33 logger.debug("Storing " + responseObject.getType() + " in pzresp. ");
\r
35 logger.debug("Command was 'record' but response not '<record>' - assuming raw record response.");
\r
36 ResponseDataObject recordResponse = new RecordResponse();
\r
37 recordResponse.setType("record");
\r
38 recordResponse.setXml(responseObject.getXml());
\r
39 recordResponse.setAttribute("activeclients", "0");
\r
40 responseObject = recordResponse;
\r
42 } else if (commandResponse.isBinary()) {
\r
43 responseObject = new RecordResponse();
\r
44 responseObject.setType(getCommandName());
\r
45 logger.info("Binary response");
\r
46 responseObject.setAttribute("activeclients", "0");
\r
47 responseObject.setXml("<record>binary response</record>");
\r
48 responseObject.setBinary(commandResponse.getBytes());
\r
50 logger.error("Response was not found to be XML or binary. The response was not handled.");
\r
52 Pz2Service.get().getPzresp().put(getCommandName(), responseObject);
\r
54 logger.debug("No record id parameter on this command. Ignoring request but clearing any previous record result.");
\r
55 Pz2Service.get().getPzresp().put(getCommandName(), new RecordResponse());
\r
57 return responseObject;
\r
60 public void setId(String recId) {
\r
61 setParameter(new CommandParameter("id","=",recId));
\r
64 public String getId () {
\r
65 return getParameterValue("id");
\r
68 public void setOffset (String offset) {
\r
69 setParameter(new CommandParameter("offset","=",offset));
\r
72 public String getOffset () {
\r
73 return getParameterValue("offset");
\r
76 public void setChecksum (String checksum) {
\r
77 setParameter(new CommandParameter("checksum","=",checksum));
\r
80 public String getChecksum () {
\r
81 return getParameterValue("checksum");
\r
84 public void setNativesyntax (String nativesyntax) {
\r
85 setParameterInState(new CommandParameter("nativesyntax","=",nativesyntax));
\r
88 public String getNativesyntax () {
\r
89 return getParameterValue("nativesyntax");
\r
92 public void setSyntax (String syntax) {
\r
93 setParameterInState(new CommandParameter("syntax","=",syntax));
\r
96 public String getSyntax () {
\r
97 return getParameterValue("syntax");
\r
100 public void setEsn (String esn) {
\r
101 setParameter(new CommandParameter("esn","=",esn));
\r
104 public String getEsn () {
\r
105 return getParameterValue("esn");
\r
108 public void setBinary (String binary) {
\r
109 setParameter(new CommandParameter("binary","=",binary));
\r
112 public String getBinary () {
\r
113 return getParameterValue("binary");
\r
117 public RecordCommand copy () {
\r
118 RecordCommand newCommand = new RecordCommand();
\r
119 for (String parameterName : parameters.keySet()) {
\r
120 newCommand.setParameterInState(parameters.get(parameterName).copy());
\r
122 newCommand.spCommand = this.spCommand;
\r
128 * Returns a record command object with Service Proxy extension parameters
\r
131 public RecordCommandSp getSp () {
\r
132 if (spCommand==null) {
\r
133 spCommand = new RecordCommandSp(this);
\r
139 public boolean spOnly() {
\r