Renames pz2utils4jsf package to mkjsf
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / data / Pazpar2Responses.java
1 package com.indexdata.mkjsf.pazpar2.data;\r
2 \r
3 import java.io.Serializable;\r
4 import java.util.List;\r
5 import java.util.Map;\r
6 import java.util.concurrent.ConcurrentHashMap;\r
7 \r
8 import javax.enterprise.context.SessionScoped;\r
9 import javax.inject.Named;\r
10 \r
11 import org.apache.log4j.Logger;\r
12 \r
13 import com.indexdata.mkjsf.errors.ErrorHelper;\r
14 import com.indexdata.mkjsf.errors.ErrorInterface;\r
15 \r
16 @Named("pzresp") @SessionScoped\r
17 public class Pazpar2Responses implements Serializable {\r
18     \r
19   private static final long serialVersionUID = -7543231258346154642L;\r
20   protected Map<String,Pazpar2ResponseData> dataObjects = new ConcurrentHashMap<String,Pazpar2ResponseData>();\r
21   private static Logger logger = Logger.getLogger(Pazpar2Responses.class);\r
22   private ErrorHelper errorHelper = null;\r
23 \r
24   public Pazpar2Responses() {    \r
25   }\r
26   \r
27   public void put(String name, Pazpar2ResponseData responseData) {\r
28     dataObjects.put(name, responseData);\r
29   }\r
30   \r
31   public void setErrorHelper(ErrorHelper helper) {    \r
32     this.errorHelper = helper;\r
33   }\r
34   \r
35   public boolean hasApplicationError () {\r
36     if (getSearch().hasApplicationError()) {\r
37       logger.info("Error detected in search");\r
38       return true;\r
39     }\r
40     for (String name : dataObjects.keySet()) {\r
41       if (dataObjects.get(name).hasApplicationError()) {\r
42         logger.info("Error detected in " + name);\r
43         return true;\r
44       }\r
45     }    \r
46     return false;\r
47   }\r
48   \r
49   /**\r
50    * Returns a search command error, if any, otherwise the first\r
51    * error found for an arbitrary command, if any, otherwise\r
52    * an empty dummy error. \r
53    */    \r
54   public ErrorInterface getCommandError() {\r
55     CommandError error = new CommandError();\r
56     if (dataObjects.get("search").hasApplicationError()) {\r
57       error = dataObjects.get("search").getApplicationError();\r
58       error.setErrorHelper(errorHelper);\r
59     } else {\r
60       for (String name : dataObjects.keySet()) {     \r
61         if (dataObjects.get(name).hasApplicationError()) {     \r
62           error = dataObjects.get(name).getApplicationError();\r
63           error.setErrorHelper(errorHelper);\r
64           break;\r
65         } \r
66       }\r
67     }\r
68     return error;         \r
69   }\r
70   \r
71   public void reset() {\r
72     logger.debug("Resetting show,stat,termlist,bytarget,search response objects.");\r
73     dataObjects = new ConcurrentHashMap<String,Pazpar2ResponseData>();\r
74     dataObjects.put("show", new ShowResponse());\r
75     dataObjects.put("stat", new StatResponse());\r
76     dataObjects.put("termlist", new TermListsResponse());\r
77     dataObjects.put("bytarget", new ByTarget());\r
78     dataObjects.put("record", new RecordResponse());\r
79     dataObjects.put("search", new SearchResponse());\r
80   }\r
81 \r
82   public ShowResponse getShow () {\r
83     return ((ShowResponse) dataObjects.get("show"));\r
84   }\r
85   \r
86   public StatResponse getStat () {\r
87     return ((StatResponse) dataObjects.get("stat"));\r
88   }\r
89   \r
90   public RecordResponse getRecord() {\r
91     return ((RecordResponse) dataObjects.get("record"));\r
92   }\r
93   \r
94   public SearchResponse getSearch() {\r
95     return ((SearchResponse) dataObjects.get("search"));\r
96   }\r
97   \r
98   public TermListsResponse getTermLists () {\r
99     return ((TermListsResponse) dataObjects.get("termlist"));\r
100   }\r
101   \r
102   public List<TermResponse> getFacetTerms (String facet, int count) {\r
103     return (getTermLists().getTermList(facet).getTerms(count));\r
104   }\r
105     \r
106   public List<TermResponse> getFacetTerms (String facet) {\r
107     return (getTermLists().getTermList(facet).getTerms());\r
108   }\r
109   \r
110   public ByTarget getByTarget() {\r
111     return ((ByTarget) dataObjects.get("bytarget"));\r
112   }\r
113 \r
114   public boolean hasRecords () {\r
115     return getStat().getRecords() > 0            \r
116            && getShow().getHits() != null \r
117            && getShow().getHits().size()>0;\r
118   }\r
119   \r
120   public String getActiveClients() {    \r
121     if (getShow()!=null) {\r
122       logger.debug("Active clients: "+getShow().getActiveClients());\r
123       return getShow().getActiveClients();\r
124     } else {\r
125       return "";\r
126     }\r
127   }\r
128 \r
129 \r
130 }\r