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