X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fpz2utils4jsf%2Fpazpar2%2FPz2Session.java;h=ed4c0880e867debb45f15e6d737e26830a1cc2fe;hb=33338bd223ec711264392b7768d89d0f3fbce677;hp=d5066780bdd6ace1a820bd9bd24b6d7f5dfd2a8f;hpb=6ecfe8692fcb0f9840b28325f413fc698093fa88;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java b/src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java index d506678..ed4c088 100644 --- a/src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java +++ b/src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java @@ -42,14 +42,14 @@ public class Pz2Session implements Pz2Interface { protected List configurationErrors = null; protected SearchClient searchClient = null; - protected TargetFilter targetFilter = null; + protected SingleTargetFilter singleTargetFilter = null; protected ResultsPager pager = null; public Pz2Session () { logger.info("Instantiating pz2 session object [" + Utils.objectId(this) + "]"); } - public void init(SearchClient searchClient, ConfigurationReader configReader) { + public void configureClient(SearchClient searchClient, ConfigurationReader configReader) { configurationErrors = new ArrayList(); errorHelper = new ErrorHelper(configReader); logger.debug(Utils.objectId(this) + " will configure search client for the session"); @@ -62,8 +62,7 @@ public class Pz2Session implements Pz2Interface { // To avoid that, a context free client is cloned from the context // dependent one. // If propagation to threads gets supported, the cloning can go. - this.searchClient = searchClient.cloneMe(); - + this.searchClient = searchClient.cloneMe(); } catch (ConfigurationException e) { configurationErrors.add(new ConfigurationError("Search Client","Configuration",e.getMessage(),new ErrorHelper(configReader))); } @@ -79,6 +78,7 @@ public class Pz2Session implements Pz2Interface { public void doSearch() { queryStates.hasPendingStateChange("search",false); resetDataObjects(); + removeCommand("record"); setCommandParameter("show",new CommandParameter("start","=",0)); logger.debug(Utils.objectId(this) + " is searching using "+getCommand("search").getParameter("query").getEncodedQueryString()); doCommand("search"); @@ -127,7 +127,12 @@ public class Pz2Session implements Pz2Interface { Pazpar2ResponseData responseObject = Pazpar2ResponseParser.getParser().getDataObject(response); dataObjects.put(commandName, responseObject); } - return getActiveClients(); + if (commands.equals("record")) { + logger.debug("Record: Active clients: "+getRecord().getActiveClients()); + return getRecord().getActiveClients(); + } else { + return getActiveClients(); + } } else { logger.debug("Skipped requests for " + commands + " as there's not yet a query."); resetDataObjects(); @@ -169,29 +174,29 @@ public class Pz2Session implements Pz2Interface { doSearch(); } - public void setTargetFilter (String targetId, String targetName) { - if (hasTargetFilter(new TargetFilter(targetId,targetName))) { - logger.debug("Already using target filter " + this.targetFilter.getFilterExpression()); + public void setSingleTargetFilter (String targetId, String targetName) { + if (hasSingleTargetFilter(new SingleTargetFilter(targetId,targetName))) { + logger.debug("Already using target filter " + this.singleTargetFilter.getFilterExpression()); } else { - this.targetFilter = new TargetFilter(targetId,targetName); - setCommandParameter("search",new CommandParameter("filter","=",this.targetFilter.getFilterExpression())); + this.singleTargetFilter = new SingleTargetFilter(targetId,targetName); + setCommandParameter("search",new CommandParameter("filter","=",this.singleTargetFilter.getFilterExpression())); doSearch(); } } - public TargetFilter getTargetFilter () { - return targetFilter; + public SingleTargetFilter getSingleTargetFilter () { + return singleTargetFilter; } - public void removeTargetFilter () { - logger.debug("Removing target filter " + targetFilter.getFilterExpression()); - this.targetFilter = null; + public void removeSingleTargetFilter () { + logger.debug("Removing target filter " + singleTargetFilter.getFilterExpression()); + this.singleTargetFilter = null; removeCommandParameter("search","filter"); doSearch(); } - public boolean hasTargetFilter() { - return targetFilter != null; + public boolean hasSingleTargetFilter() { + return singleTargetFilter != null; } public void setSort (String sortOption) { @@ -228,22 +233,29 @@ public class Pz2Session implements Pz2Interface { public int getStart() { return getCommandParameterValue("show","start",0); } - + public String toggleRecord (String recId) { if (hasRecord(recId)) { removeCommand("record"); dataObjects.put("record", new RecordResponse()); return ""; } else { - return updateRecord(recId); + setRecordId(recId); + return doCommand("record"); } } - private String updateRecord(String recId) { - setCommandParameter("record",new CommandParameter("id","=",recId)); - return doCommand("record"); + @Override + public void setRecordId(String recId) { + setCommandParameter("record",new CommandParameter("id","=",recId)); } + @Override + public String getRecordId () { + return getCommandParameterValue("record","recid",""); + } + + @Override public boolean hasRecord (String recId) { return getCommand("record").hasParameters() && getRecord().getRecId().equals(recId); } @@ -336,8 +348,8 @@ public class Pz2Session implements Pz2Interface { } - protected boolean hasTargetFilter(TargetFilter targetFilter) { - return hasTargetFilter() && targetFilter.equals(this.targetFilter); + protected boolean hasSingleTargetFilter(SingleTargetFilter targetFilter) { + return hasSingleTargetFilter() && targetFilter.equals(this.singleTargetFilter); } protected boolean hasQuery() { @@ -368,14 +380,14 @@ public class Pz2Session implements Pz2Interface { protected void handleQueryStateChanges (String commands) { if (queryStates.hasPendingStateChange("search")) { - logger.debug("Found pending search change. Doing search before updating " + commands); + logger.debug("Found pending search change. Doing search before updating " + commands); doSearch(); } if (queryStates.hasPendingStateChange("record") && ! commands.equals("record")) { logger.debug("Found pending record ID change. Doing record before updating " + commands); queryStates.hasPendingStateChange("record",false); if (getCommand("record").hasParameters()) { - updateRecord(getCommand("record").getParameter("id").getSimpleValue()); + update("record"); } else { removeCommand("record"); dataObjects.put("record", new RecordResponse()); @@ -460,5 +472,19 @@ public class Pz2Session implements Pz2Interface { dataObjects.put("record", new RecordResponse()); dataObjects.put("search", new SearchResponse()); } + + @Override + public void setFilter(String filterExpression) { + logger.debug("Setting filter to " + filterExpression); + setCommandParameter("search",new CommandParameter("filter","=",filterExpression)); + } + + public String getFilter() { + return getCommandParameterValueSimple("search", "filter", ""); + } + + public boolean hasFilter () { + return getFilter().length()>0; + } }