import com.indexdata.mkjsf.errors.ConfigurationException;\r
import com.indexdata.mkjsf.errors.ErrorCentral;\r
import com.indexdata.mkjsf.errors.ErrorHelper;\r
-import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Command;\r
import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
import com.indexdata.mkjsf.pazpar2.data.RecordResponse;\r
-import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
import com.indexdata.mkjsf.pazpar2.data.Responses;\r
import com.indexdata.mkjsf.pazpar2.state.StateListener;\r
import com.indexdata.mkjsf.pazpar2.state.StateManager;\r
import com.indexdata.mkjsf.utils.Utils;\r
\r
@Named("pz2") @SessionScoped\r
-public class Pz2Service implements Pz2Interface, StateListener, Configurable, Serializable {\r
+public class Pz2Service implements StateListener, Configurable, Serializable {\r
\r
private static final String MODULE_NAME = "service";\r
private static String SERVICE_TYPE_TBD = "TBD", SERVICE_TYPE_PZ2 = "PZ2", SERVICE_TYPE_SP = "SP";\r
pzreq.getRecord().removeParametersInState();\r
pzreq.getSearch().removeParametersInState(); \r
}\r
- \r
+ \r
+ \r
/**\r
- * Refreshes 'show', 'stat', 'termlist', and 'bytarget' data object from pazpar2\r
+ * Updates display data objects by issuing the following pazpar2 commands: \r
+ * 'show', 'stat', 'termlist' and 'bytarget'.\r
* \r
- * @return Number of activeclients at the time of the 'show' command.\r
- */\r
+ * If there is an outstanding change to the search command, a search\r
+ * will be issued before the updates are performed. \r
+ * \r
+ * Returns a count of the remaining active clients from the most recent search.\r
+ * \r
+ * After refreshing the data from pazpar2 the UI components displaying those \r
+ * data should be re-rendered.\r
+ * \r
+ * @return count of activeclients \r
+ */ \r
public String update () {\r
logger.debug("Updating show,stat,termlist,bytarget from pazpar2");\r
if (errors.hasConfigurationErrors()) {\r
}\r
\r
}\r
- \r
+ \r
+ /**\r
+ * Will retrieve -- or alternatively remove -- the record with the given \r
+ * recid from memory.\r
+ * \r
+ * A pazpar2 'record' command will then be issued. The part of the UI \r
+ * showing record data should thus be re-rendered.\r
+ * \r
+ * @param recid\r
+ * @return\r
+ */\r
public String toggleRecord (String recId) {\r
if (hasRecord(recId)) {\r
pzreq.getRecord().removeParameters(); \r
return "";\r
} else {\r
pzreq.getRecord().setId(recId);\r
- doCommand("record");\r
+ pzreq.getRecord().run();\r
+ // doCommand("record");\r
return pzresp.getRecord().getActiveClients();\r
}\r
}\r
\r
- @Override\r
+ /**\r
+ * Resolves whether the backend has a record with the given recid in memory \r
+ * \r
+ * @return true if the bean currently holds the record with recid\r
+ */ \r
public boolean hasRecord (String recId) {\r
return pzreq.getCommand("record").hasParameters() && pzresp.getRecord().getRecId().equals(recId);\r
}\r
\r
+ /**\r
+ * Returns the current hash key, used for internal session state tracking\r
+ * and potentially for browser history entries\r
+ * \r
+ * A UI author would not normally be concerned with retrieving this. It's used by the\r
+ * framework internally\r
+ * \r
+ * @return string that can be used for browsers window.location.hash\r
+ */\r
public String getCurrentStateKey () { \r
return stateMgr.getCurrentState().getKey();\r
}\r
\r
+ /**\r
+ * Sets the current state key, i.e. when user clicks back or forward in browser history.\r
+ * Would normally be automatically handled by the frameworks components.\r
+ * \r
+ * @param key corresponding to browsers hash string\r
+ */\r
public void setCurrentStateKey(String key) { \r
stateMgr.setCurrentStateKey(key);\r
}\r
return pzreq.getCommand("search").hasParameterValue("query"); \r
}\r
\r
- \r
- @Override\r
+ /**\r
+ * Returns a component for drawing a pager to navigate by.\r
+ * @return ResultsPager pager component\r
+ */\r
public ResultsPager getPager () {\r
if (pager == null) {\r
pager = new ResultsPager(pzresp); \r
return pager; \r
}\r
\r
- @Override\r
+ /**\r
+ * Initiates a pager object, a component holding the data to draw a sequence\r
+ * of page numbers to navigate by and mechanisms to navigate with\r
+ * \r
+ * @param pageRange number of pages to display in the pager\r
+ * @return ResultsPager the initiated pager component\r
+ */\r
public ResultsPager setPager (int pageRange) {\r
pager = new ResultsPager(pzresp,pageRange,pzreq);\r
return pager;\r
* @param commandName The command to be executed\r
* @return An XML response parsed to form a response data object\r
*/\r
+ /*\r
protected ResponseDataObject doCommand(String commandName) {\r
Pazpar2Command command = pzreq.getCommand(commandName);\r
if (command.spOnly() && isPazpar2Service()) {\r
return responseObject;\r
}\r
}\r
+ */\r
\r
@Override\r
public void stateUpdated(String commandName) {\r
}\r
}\r
\r
- \r
- @Override\r
public void setServiceUrl(String url) {\r
if (url!=null && searchClient != null && !url.equals(searchClient.getServiceUrl())) {\r
pzreq.getRecord().removeParametersInState();\r
return spClient;\r
} \r
\r
- @Override\r
public boolean getAuthenticationRequired () {\r
return spClient.isAuthenticatingClient();\r
}\r
\r
- @Override\r
public String getCheckHistory () {\r
return ":pz2watch:stateForm:windowlocationhash";\r
}\r
\r
- @Override\r
public String getWatchActiveclients () {\r
return ":pz2watch:activeclientsForm:activeclientsField";\r
}\r
\r
- @Override\r
public String getWatchActiveclientsRecord () {\r
return ":pz2watch:activeclientsForm:activeclientsFieldRecord";\r
}\r
return new ArrayList<String>();\r
}\r
\r
- @Override\r
public void setServiceTypePZ2() {\r
setServiceType(SERVICE_TYPE_PZ2); \r
}\r
\r
- @Override\r
public void setServiceTypeSP() {\r
setServiceType(SERVICE_TYPE_SP); \r
}\r
\r
- @Override\r
public void setServiceTypeTBD() {\r
setServiceType(SERVICE_TYPE_TBD); \r
}\r