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
15 * Represents a Pazpar2 <code>record</code> command.
\r
17 * @author Niels Erik
\r
20 public class RecordCommand extends Pazpar2Command implements ServiceProxyCommand {
\r
22 private static final long serialVersionUID = 2817539422114569506L;
\r
23 private static Logger logger = Logger.getLogger(RecordCommand.class);
\r
24 private RecordCommandSp spCommand = null;
\r
26 public RecordCommand() {
\r
31 public ResponseDataObject run() {
\r
32 ResponseDataObject responseObject = null;
\r
33 if (hasParameterValue("id")) {
\r
34 HttpResponseWrapper commandResponse = Pz2Service.get().getSearchClient().executeCommand(this);
\r
36 if (commandResponse.getContentType().contains("xml")) {
\r
37 responseObject = ResponseParser.getParser().getDataObject((ClientCommandResponse)commandResponse);
\r
38 if (ResponseParser.docTypes.contains(responseObject.getType())) {
\r
39 logger.debug("Storing " + responseObject.getType() + " in pzresp. ");
\r
41 logger.debug("Command was 'record' but response not '<record>' - assuming raw record response.");
\r
42 ResponseDataObject recordResponse = new RecordResponse();
\r
43 recordResponse.setType("record");
\r
44 recordResponse.setXml(responseObject.getXml());
\r
45 recordResponse.setAttribute("activeclients", "0");
\r
46 responseObject = recordResponse;
\r
48 } else if (commandResponse.isBinary()) {
\r
49 responseObject = new RecordResponse();
\r
50 responseObject.setType(getCommandName());
\r
51 logger.info("Binary response");
\r
52 responseObject.setAttribute("activeclients", "0");
\r
53 responseObject.setXml("<record>binary response</record>");
\r
54 responseObject.setBinary(commandResponse.getBytes());
\r
56 logger.error("Response was not found to be XML or binary. The response was not handled.");
\r
58 Pz2Service.get().getPzresp().put(getCommandName(), responseObject);
\r
60 logger.debug("No record id parameter on this command. Ignoring request but clearing any previous record result.");
\r
61 Pz2Service.get().getPzresp().put(getCommandName(), new RecordResponse());
\r
63 return responseObject;
\r
67 * Sets the <code>id</code> parameter. See Pazpar2 documentation for details.
\r
69 * @param recId record ID
\r
71 public void setId(String recId) {
\r
72 setParameter(new CommandParameter("id","=",recId));
\r
76 * Returns the <code>id</code> parameter value.
\r
78 public String getId () {
\r
79 return getParameterValue("id");
\r
83 * Sets the <code>offset</code> parameter. See Pazpar2 documentation for details.
\r
85 public void setOffset (String offset) {
\r
86 setParameter(new CommandParameter("offset","=",offset));
\r
90 * Returns the <code>offset</code> parameter value.
\r
92 public String getOffset () {
\r
93 return getParameterValue("offset");
\r
97 * Sets the <code>checksum</code> parameter. See Pazpar2 documentation for details.
\r
99 public void setChecksum (String checksum) {
\r
100 setParameter(new CommandParameter("checksum","=",checksum));
\r
104 * Returns the <code>checksum</code> parameter value.
\r
106 public String getChecksum () {
\r
107 return getParameterValue("checksum");
\r
111 * Sets the <code>nativesyntax</code> parameter. See Pazpar2 documentation for details.
\r
113 public void setNativesyntax (String nativesyntax) {
\r
114 setParameterInState(new CommandParameter("nativesyntax","=",nativesyntax));
\r
118 * Returns the <code>nativesyntax</code> parameter value.
\r
120 public String getNativesyntax () {
\r
121 return getParameterValue("nativesyntax");
\r
125 * Sets the <code>syntax</code> parameter. See Pazpar2 documentation for details.
\r
127 public void setSyntax (String syntax) {
\r
128 setParameterInState(new CommandParameter("syntax","=",syntax));
\r
132 * Returns the <code>syntax</code> parameter value.
\r
134 public String getSyntax () {
\r
135 return getParameterValue("syntax");
\r
139 * Sets the <code>esn</code> parameter. See Pazpar2 documentation for details.
\r
141 public void setEsn (String esn) {
\r
142 setParameter(new CommandParameter("esn","=",esn));
\r
146 * Returns the <code>esn</code> parameter value.
\r
148 public String getEsn () {
\r
149 return getParameterValue("esn");
\r
153 * Sets the <code>binary</code> parameter. See Pazpar2 documentation for details.
\r
155 public void setBinary (String binary) {
\r
156 setParameter(new CommandParameter("binary","=",binary));
\r
160 * Returns the <code>binary</code> parameter value.
\r
162 public String getBinary () {
\r
163 return getParameterValue("binary");
\r
167 public RecordCommand copy () {
\r
168 RecordCommand newCommand = new RecordCommand();
\r
169 for (String parameterName : parameters.keySet()) {
\r
170 newCommand.setParameterInState(parameters.get(parameterName).copy());
\r
172 newCommand.spCommand = this.spCommand;
\r
178 * Returns a record command object with Service Proxy extension parameters
\r
181 public RecordCommandSp getSp () {
\r
182 if (spCommand==null) {
\r
183 spCommand = new RecordCommandSp(this);
\r
189 public boolean spOnly() {
\r