X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fpz2utils4jsf%2Fpazpar2%2FPz2Session.java;h=822b41611b8a0443a23afc975e2057fc445bd31c;hb=ab7a23c769e77affa25a47112d2e5e93ae23d7bc;hp=53e542d6dd5e40a2e4c74d6e0ea6833a5fa7bc75;hpb=f995bd0cb2162befcbeec565809566730a378641;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 53e542d..822b416 100644 --- a/src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java +++ b/src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java @@ -1,12 +1,15 @@ package com.indexdata.pz2utils4jsf.pazpar2; -import java.io.Serializable; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import java.util.concurrent.ConcurrentHashMap; +import javax.enterprise.context.SessionScoped; +import javax.inject.Named; + import org.apache.log4j.Logger; import com.indexdata.masterkey.pazpar2.client.exceptions.ProxyErrorException; @@ -16,13 +19,16 @@ import com.indexdata.pz2utils4jsf.pazpar2.data.ByTarget; import com.indexdata.pz2utils4jsf.pazpar2.data.Pazpar2ResponseData; import com.indexdata.pz2utils4jsf.pazpar2.data.Pazpar2ResponseParser; import com.indexdata.pz2utils4jsf.pazpar2.data.RecordResponse; +import com.indexdata.pz2utils4jsf.pazpar2.data.SearchResponse; import com.indexdata.pz2utils4jsf.pazpar2.data.ShowResponse; import com.indexdata.pz2utils4jsf.pazpar2.data.StatResponse; import com.indexdata.pz2utils4jsf.pazpar2.data.TermListsResponse; import com.indexdata.pz2utils4jsf.pazpar2.data.TermResponse; import com.indexdata.pz2utils4jsf.pazpar2.state.QueryStates; +import com.indexdata.pz2utils4jsf.utils.Utils; -public class Pz2Session implements Serializable, Pz2Interface { +@Named @SessionScoped +public class Pz2Session implements Pz2Interface { private static Logger logger = Logger.getLogger(Pz2Session.class); @@ -34,19 +40,28 @@ public class Pz2Session implements Serializable, Pz2Interface { private com.indexdata.masterkey.pazpar2.client.Pazpar2Client client = null; private TargetFilter targetFilter = null; private ResultsPager pager = null; - - public Pz2Session (Pz2Configurator pz2conf) { - logger.debug("Instantiating pz2"); - if (pz2conf == null) {logger.error("conf is null!!!!!!!!!!!!!!!"); } + + public Pz2Session () { + logger.info("Instantiating pz2 session object [" + Utils.objectId(this) + "]"); + } + + public void init(Pz2Configurator pz2conf) { + if (client==null) { + logger.info(Utils.objectId(this) + " is configuring itself using the provided " + Utils.objectId(pz2conf)); try { cfg = new com.indexdata.masterkey.pazpar2.client.Pazpar2ClientConfiguration(pz2conf.getConfig()); client = new com.indexdata.masterkey.pazpar2.client.Pazpar2ClientGeneric(cfg); resetDataObjects(); } catch (ProxyErrorException e) { e.printStackTrace(); - } + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } else { + logger.warn("Attempt to configure session but it already has a configured client"); + } } - + public void doSearch(String query) { setCommandParameter("search",new CommandParameter("query","=",query)); doSearch(); @@ -56,7 +71,7 @@ public class Pz2Session implements Serializable, Pz2Interface { queryStates.hasPendingStateChange("search",false); resetDataObjects(); setCommandParameter("show",new CommandParameter("start","=",0)); - logger.info("Searching using "+getCommand("search").getParameter("query").getEncodedQueryString()); + logger.debug(Utils.objectId(this) + " is searching using "+getCommand("search").getParameter("query").getEncodedQueryString()); doCommand("search"); } @@ -66,10 +81,10 @@ public class Pz2Session implements Serializable, Pz2Interface { * @return Number of activeclients at the time of the 'show' command. */ public String update () { - logger.info("Updating show,stat,termlist, and bytarget data from pazpar2"); + logger.debug("Updating show,stat,termlist,bytarget from pazpar2"); return update("show,stat,termlist,bytarget"); } - + /** * Refreshes the data objects listed in 'commands' from pazpar2 * @@ -96,13 +111,11 @@ public class Pz2Session implements Serializable, Pz2Interface { } } for (CommandThread thread : threadList) { - if (!thread.getCommand().getName().equals("search")) { - dataObjects.put(thread.getCommand().getName(), new Pazpar2ResponseParser().getObject(thread.getResponse())); - } + dataObjects.put(thread.getCommand().getName(), new Pazpar2ResponseParser().getObject(thread.getResponse())); } return getActiveClients(); } else { - logger.info("Skipped requests for " + commands + " as there's not yet a query."); + logger.debug("Skipped requests for " + commands + " as there's not yet a query."); resetDataObjects(); return "0"; } @@ -254,6 +267,44 @@ public class Pz2Session implements Serializable, Pz2Interface { logger.debug("************** request to set state key to: [" + key + "]"); queryStates.setCurrentStateKey(key); } + + public boolean hasErrors () { + if (dataObjects.get("search").isError()) { + logger.info("Error detected in search"); + return true; + } + for (String name : dataObjects.keySet()) { + if (dataObjects.get(name).isError()) { + logger.info("Error detected in " + name); + return true; + } + } + return false; + } + + public String getErrorMessages() { + StringBuilder msgs = new StringBuilder(""); + for (String name : dataObjects.keySet()) { + if (dataObjects.get(name).isError()) { + msgs.append(name + ": " + dataObjects.get(name).getErrorMessage()); + } + } + return msgs.toString(); + } + + public String getFirstErrorMessage() { + if (dataObjects.get("search").isError()) { + return "Error doing search: " + dataObjects.get("search").getErrorMessage(); + } + for (String name : dataObjects.keySet()) { + if (dataObjects.get(name).isError()) { + return name + ": " + dataObjects.get(name).getErrorMessage(); + } + } + return ""; + + } + private boolean hasTargetFilter(TargetFilter targetFilter) { return hasTargetFilter() && targetFilter.equals(this.targetFilter); @@ -298,9 +349,9 @@ public class Pz2Session implements Serializable, Pz2Interface { } } - private String getActiveClients() { - logger.debug("Active clients: "+getShow().getActiveClients()); + private String getActiveClients() { if (getShow()!=null) { + logger.debug("Active clients: "+getShow().getActiveClients()); return getShow().getActiveClients(); } else { return ""; @@ -366,13 +417,15 @@ public class Pz2Session implements Serializable, Pz2Interface { } private void resetDataObjects() { - logger.debug("Resetting show,stat,termlist,bytarget response objects."); + logger.debug("Resetting show,stat,termlist,bytarget,search response objects."); dataObjects = new ConcurrentHashMap(); dataObjects.put("show", new ShowResponse()); dataObjects.put("stat", new StatResponse()); dataObjects.put("termlist", new TermListsResponse()); dataObjects.put("bytarget", new ByTarget()); dataObjects.put("record", new RecordResponse()); + dataObjects.put("search", new SearchResponse()); } + }