Moves Auth response class to SP data package
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / data / Responses.java
index 1999774..1df2363 100644 (file)
@@ -16,6 +16,8 @@ import org.apache.log4j.Logger;
 \r
 import com.indexdata.mkjsf.errors.ErrorHelper;\r
 import com.indexdata.mkjsf.errors.ErrorInterface;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.AuthResponse;\r
+import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
 import com.indexdata.mkjsf.utils.Utils;\r
 \r
 @Named("pzresp") @SessionScoped\r
@@ -89,16 +91,13 @@ public class Responses implements Serializable {
     resetSearchResponses();\r
     dataObjects.put("init", new InitResponse());\r
     dataObjects.put("auth", new AuthResponse());\r
+    dataObjects.put("categories", new CategoriesResponse());\r
   }\r
   \r
   public InitResponse getInit () {    \r
     return ((InitResponse) dataObjects.get("init"));\r
   }\r
   \r
-  public AuthResponse getAuth () {\r
-    return ((AuthResponse) dataObjects.get("auth"));\r
-  }\r
-\r
   public ShowResponse getShow () {\r
     return ((ShowResponse) dataObjects.get("show"));\r
   }\r
@@ -118,7 +117,7 @@ public class Responses implements Serializable {
   public TermListsResponse getTermLists () {\r
     return ((TermListsResponse) dataObjects.get("termlist"));\r
   }\r
-  \r
+    \r
   public List<TermResponse> getFacetTerms (String facet, int count) {\r
     return (getTermLists().getTermList(facet).getTerms(count));\r
   }\r
@@ -131,6 +130,17 @@ public class Responses implements Serializable {
     return ((ByTarget) dataObjects.get("bytarget"));\r
   }\r
 \r
+  // Service Proxy extras   \r
+  public AuthResponse getAuth () {\r
+    return ((AuthResponse) dataObjects.get("auth"));\r
+  }\r
+\r
+  public CategoriesResponse getCategories() {\r
+    return ((CategoriesResponse) dataObjects.get("categories"));\r
+  }\r
+  // Service Proxy extras\r
+  \r
+\r
   public ResponseDataObject getResponseObject (String name) {\r
     return dataObjects.get(name);\r
   }\r
@@ -155,12 +165,21 @@ public class Responses implements Serializable {
   public void download(String commandName) throws UnsupportedEncodingException, IOException {\r
     logger.info(Utils.objectId(this) + " got a download request for "\r
         + commandName);\r
+    ResponseDataObject object = dataObjects.get(commandName);    \r
     FacesContext facesContext = FacesContext.getCurrentInstance();\r
     ExternalContext externalContext = facesContext.getExternalContext();\r
-    externalContext.setResponseHeader("Content-Type","application/xml; charset=\"utf-8\"");\r
-    externalContext.setResponseHeader("Content-Length",String.valueOf(dataObjects.get(commandName).getXml().getBytes("UTF-8").length));\r
-    externalContext.setResponseHeader("Content-Disposition","attachment;filename=\"" + commandName + ".xml\"");\r
-    externalContext.getResponseOutputStream().write(dataObjects.get(commandName).getXml().getBytes("UTF-8"));\r
+    if (object.getIsBinary()) {\r
+      externalContext.setResponseHeader("Content-Type","application/octet-stream");\r
+      externalContext.setResponseHeader("Content-Length",String.valueOf(object.getBinary().length));\r
+      externalContext.setResponseHeader("Content-Disposition","attachment;filename=\"" + commandName + ".data\"");\r
+      externalContext.getResponseOutputStream().write(object.getBinary());      \r
+    } else {\r
+      externalContext.setResponseHeader("Content-Type","application/xml; charset=\"utf-8\"");\r
+      externalContext.setResponseHeader("Content-Length",String.valueOf(dataObjects.get(commandName).getXml().getBytes("UTF-8").length));\r
+      externalContext.setResponseHeader("Content-Disposition","attachment;filename=\"" + commandName + ".xml\"");\r
+      externalContext.getResponseOutputStream().write(dataObjects.get(commandName).getXml().getBytes("UTF-8"));\r
+    }\r
     facesContext.responseComplete();\r
   }\r
+  \r
 }
\ No newline at end of file