1 package com.indexdata.pz2utils4jsf.pazpar2;
\r
3 import java.io.ByteArrayOutputStream;
\r
4 import java.io.IOException;
\r
6 import org.apache.log4j.Logger;
\r
8 import com.indexdata.pz2utils4jsf.pazpar2.CommandThread;
\r
9 import com.indexdata.pz2utils4jsf.pazpar2.Pazpar2Command;
\r
10 import com.indexdata.utils.XmlUtils;
\r
11 import com.indexdata.masterkey.pazpar2.client.ClientCommand;
\r
12 import com.indexdata.masterkey.pazpar2.client.Pazpar2Client;
\r
13 import com.indexdata.masterkey.pazpar2.client.exceptions.Pazpar2ErrorException;
\r
15 public class CommandThread extends Thread {
\r
17 private static Logger logger = Logger.getLogger(CommandThread.class);
\r
18 Pazpar2Command command;
\r
19 Pazpar2Client client;
\r
20 private ByteArrayOutputStream baos = new ByteArrayOutputStream();
\r
21 private StringBuilder response = new StringBuilder("");
\r
23 public CommandThread (Pazpar2Command command, Pazpar2Client client) {
\r
24 this.command = command;
\r
25 this.client = client;
\r
29 ClientCommand clientCommand = new ClientCommand(command.getName(), command.getEncodedQueryString());
\r
30 if (command.getName().equals("search")) {
\r
31 client.setSearchCommand(clientCommand);
\r
34 long start = System.currentTimeMillis();
\r
35 client.executeCommand(clientCommand, baos);
\r
36 response.append(baos.toString("UTF-8"));
\r
37 long end = System.currentTimeMillis();
\r
38 logger.debug("Executed " + command.getName() + " in " + (end-start) + " ms." );
\r
39 } catch (IOException e) {
\r
40 logger.error("Message: " + e.getMessage());
\r
41 response = new StringBuilder("<"+command.getName()+"><error exception=\"io\">"+XmlUtils.escape(e.getMessage())+"</error></"+command.getName()+">");
\r
42 logger.error(response.toString());
\r
43 } catch (Pazpar2ErrorException e) {
\r
44 logger.error(e.getMessage());
\r
45 response = new StringBuilder("<"+command.getName()+"><error exception=\"pazpar2error\">"+XmlUtils.escape(e.getMessage())+"</error></"+command.getName()+">");
\r
46 logger.error(response.toString());
\r
50 public String getResponse () {
\r
51 return response.toString();
\r
54 public Pazpar2Command getCommand() {
\r