X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fdata%2FResponses.java;h=1df2363586cc0646801d78ed6bbffcc384ab16ee;hb=056883036f0be0d1bf0a06d0f5842d382239adf9;hp=6f163483f27f762feafb4b41ee9facfb6b05faca;hpb=8adf7eecfbcb98af079f4f2d129a1f76b146aefc;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java index 6f16348..1df2363 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/data/Responses.java @@ -1,18 +1,24 @@ package com.indexdata.mkjsf.pazpar2.data; +import java.io.IOException; import java.io.Serializable; +import java.io.UnsupportedEncodingException; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.enterprise.context.SessionScoped; +import javax.faces.context.ExternalContext; +import javax.faces.context.FacesContext; import javax.inject.Named; import org.apache.log4j.Logger; import com.indexdata.mkjsf.errors.ErrorHelper; import com.indexdata.mkjsf.errors.ErrorInterface; -import com.indexdata.mkjsf.pazpar2.data.sp.SpResponses; +import com.indexdata.mkjsf.pazpar2.data.sp.AuthResponse; +import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse; +import com.indexdata.mkjsf.utils.Utils; @Named("pzresp") @SessionScoped public class Responses implements Serializable { @@ -69,17 +75,29 @@ public class Responses implements Serializable { return error; } - public void reset() { - logger.debug("Resetting show,stat,termlist,bytarget,search response objects."); - dataObjects = new ConcurrentHashMap(); + public void resetSearchResponses() { + logger.debug("Resetting show,stat,termlist,bytarget,record,search response objects."); 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()); + dataObjects.put("search", new SearchResponse()); } - + + public void resetAllSessionData () { + logger.debug("Resetting all response objects"); + dataObjects = new ConcurrentHashMap(); + resetSearchResponses(); + dataObjects.put("init", new InitResponse()); + dataObjects.put("auth", new AuthResponse()); + dataObjects.put("categories", new CategoriesResponse()); + } + + public InitResponse getInit () { + return ((InitResponse) dataObjects.get("init")); + } + public ShowResponse getShow () { return ((ShowResponse) dataObjects.get("show")); } @@ -99,7 +117,7 @@ public class Responses implements Serializable { public TermListsResponse getTermLists () { return ((TermListsResponse) dataObjects.get("termlist")); } - + public List getFacetTerms (String facet, int count) { return (getTermLists().getTermList(facet).getTerms(count)); } @@ -112,6 +130,17 @@ public class Responses implements Serializable { return ((ByTarget) dataObjects.get("bytarget")); } + // Service Proxy extras + public AuthResponse getAuth () { + return ((AuthResponse) dataObjects.get("auth")); + } + + public CategoriesResponse getCategories() { + return ((CategoriesResponse) dataObjects.get("categories")); + } + // Service Proxy extras + + public ResponseDataObject getResponseObject (String name) { return dataObjects.get(name); } @@ -123,17 +152,34 @@ public class Responses implements Serializable { } public String getActiveClients() { - if (getShow()!=null) { + if (getShow()!=null && getShow().getActiveClients().length()>0) { logger.debug("Active clients: "+getShow().getActiveClients()); - return getShow().getActiveClients(); + return String.valueOf( + Math.max(Integer.parseInt(getShow().getActiveClients()), + getStat().getActiveClients())); } else { return ""; } } - public SpResponses getSp() { - // TODO: - return null; + public void download(String commandName) throws UnsupportedEncodingException, IOException { + logger.info(Utils.objectId(this) + " got a download request for " + + commandName); + ResponseDataObject object = dataObjects.get(commandName); + FacesContext facesContext = FacesContext.getCurrentInstance(); + ExternalContext externalContext = facesContext.getExternalContext(); + if (object.getIsBinary()) { + externalContext.setResponseHeader("Content-Type","application/octet-stream"); + externalContext.setResponseHeader("Content-Length",String.valueOf(object.getBinary().length)); + externalContext.setResponseHeader("Content-Disposition","attachment;filename=\"" + commandName + ".data\""); + externalContext.getResponseOutputStream().write(object.getBinary()); + } else { + externalContext.setResponseHeader("Content-Type","application/xml; charset=\"utf-8\""); + externalContext.setResponseHeader("Content-Length",String.valueOf(dataObjects.get(commandName).getXml().getBytes("UTF-8").length)); + externalContext.setResponseHeader("Content-Disposition","attachment;filename=\"" + commandName + ".xml\""); + externalContext.getResponseOutputStream().write(dataObjects.get(commandName).getXml().getBytes("UTF-8")); + } + facesContext.responseComplete(); } - -} + +} \ No newline at end of file