- /* (non-Javadoc)\r
- * @see com.indexdata.pz2utils4jsf.pazpar2.Pz2Interface#update(java.lang.String)\r
- */\r
- public String update(String commands) {\r
- return pz2.update(commands);\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see com.indexdata.pz2utils4jsf.pazpar2.Pz2Interface#toggleRecord(java.lang.String)\r
- */\r
- public String toggleRecord(String recid) {\r
- return pz2.toggleRecord(recid);\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see com.indexdata.pz2utils4jsf.pazpar2.Pz2Interface#getShow()\r
- */\r
- public ShowResponse getShow() {\r
- return pz2.getShow();\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see com.indexdata.pz2utils4jsf.pazpar2.Pz2Interface#getStat()\r
- */\r
- public StatResponse getStat() {\r
- return pz2.getStat();\r
- }\r
+ public void doSearch() { \r
+ stateMgr.hasPendingStateChange("search",false);\r
+ pzresp.reset();\r
+ // resets some record and show command parameters without \r
+ // changing state or creating state change feedback\r
+ pzreq.getRecord().removeParametersInState(); \r
+ pzreq.getShow().setParameterInState(new CommandParameter("start","=",0)); \r
+ logger.debug(Utils.objectId(this) + " is searching using "+pzreq.getCommand("search").getUrlEncodedParameterValue("query"));\r
+ doCommand("search"); \r
+ }\r
+ \r
+ /**\r
+ * Refreshes 'show', 'stat', 'termlist', and 'bytarget' data object from pazpar2\r
+ * \r
+ * @return Number of activeclients at the time of the 'show' command.\r
+ */\r
+ public String update () {\r
+ logger.debug("Updating show,stat,termlist,bytarget from pazpar2");\r
+ return update("show,stat,termlist,bytarget");\r
+ }\r
+ \r
+ /**\r
+ * Refreshes the data objects listed in 'commands' from pazpar2\r
+ * \r
+ * @param commands\r
+ * @return Number of activeclients at the time of the 'show' command\r
+ */\r
+ public String update (String commands) {\r
+ if (! errors.hasConfigurationErrors()) {\r
+ if (commandsAreValid(commands)) {\r
+ if (hasQuery()) {\r
+ handleQueryStateChanges(commands);\r
+ logger.debug("Processing request for " + commands); \r
+ List<CommandThread> threadList = new ArrayList<CommandThread>();\r
+ StringTokenizer tokens = new StringTokenizer(commands,",");\r
+ while (tokens.hasMoreElements()) { \r
+ threadList.add(new CommandThread(pzreq.getCommand(tokens.nextToken()),searchClient)); \r
+ }\r
+ for (CommandThread thread : threadList) {\r
+ thread.start();\r
+ }\r
+ for (CommandThread thread : threadList) {\r
+ try {\r
+ thread.join();\r
+ } catch (InterruptedException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ for (CommandThread thread : threadList) {\r
+ String commandName = thread.getCommand().getName();\r
+ String response = thread.getResponse();\r
+ responseLogger.debug("Response was: " + response);\r
+ Pazpar2ResponseData responseObject = Pazpar2ResponseParser.getParser().getDataObject(response);\r
+ pzresp.put(commandName, responseObject); \r
+ }\r
+ if (commands.equals("record")) {\r
+ logger.debug("Record: Active clients: "+pzresp.getRecord().getActiveClients());\r
+ return pzresp.getRecord().getActiveClients();\r
+ } else {\r
+ return pzresp.getActiveClients();\r
+ } \r
+ } else {\r
+ logger.debug("Skipped requests for " + commands + " as there's not yet a query."); \r
+ pzresp.reset();\r
+ return "0";\r
+ }\r
+ } else {\r
+ logger.error("Did not attemt to run command(s) due to a validation error.");\r
+ return "0";\r
+ }\r
+ } else { \r
+ logger.error("Did not attempt to execute query since there are configuration errors.");\r
+ return "0";\r
+ }\r