f37f98e8c831b6df9d66b3327fd380ace6c349c3
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / Pz2ProxyBean.java
1 package com.indexdata.pz2utils4jsf.pazpar2;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.UnsupportedEncodingException;\r
5 \r
6 import javax.annotation.PostConstruct;\r
7 import javax.enterprise.context.SessionScoped;\r
8 import javax.enterprise.inject.Alternative;\r
9 import javax.inject.Inject;\r
10 import javax.inject.Named;\r
11 \r
12 import org.apache.log4j.Logger;\r
13 \r
14 import com.indexdata.pz2utils4jsf.config.ConfigurationReader;\r
15 import com.indexdata.pz2utils4jsf.pazpar2.commands.CommandParameter;\r
16 import com.indexdata.pz2utils4jsf.pazpar2.sp.ServiceProxyClient;\r
17 import com.indexdata.pz2utils4jsf.pazpar2.sp.ServiceProxyInterface;\r
18 import com.indexdata.pz2utils4jsf.pazpar2.sp.auth.ServiceProxyUser;\r
19 import com.indexdata.pz2utils4jsf.utils.Utils;\r
20 \r
21 @Named("pz2") @SessionScoped @Alternative\r
22 public class Pz2ProxyBean extends Pz2Bean implements ServiceProxyInterface {\r
23     \r
24   private static final long serialVersionUID = 4221824985678758225L;\r
25   private static Logger logger = Logger.getLogger(Pz2ProxyBean.class);  \r
26   private String initDocFileName = "";\r
27   private String initDocResponse = "";\r
28   private String serviceProxyUrl = "";  \r
29     \r
30   @Inject ConfigurationReader configurator;\r
31   @Inject ServiceProxyUser user;    \r
32   \r
33   public Pz2ProxyBean() {\r
34   }\r
35   \r
36   @PostConstruct\r
37   public void postConstruct() {\r
38     if (searchClient == null) {\r
39       logger.debug(Utils.objectId(this) + " will instantiate a ServiceProxyClient next.");    \r
40       searchClient = new ServiceProxyClient();\r
41       logger.info("Using [" + Utils.objectId(searchClient) + "] configured by [" \r
42                             + Utils.objectId(configurator) + "]" );    \r
43       configureClient(searchClient,configurator);\r
44     } else {\r
45       logger.debug("Pz2ProxyBean:postConstruct: searchClient already instantiated " +\r
46                         "during construction of parent object Pz2Bean.");\r
47     }\r
48   }\r
49 \r
50   @Override\r
51   public String login(String navigateTo) {\r
52     logger.info("doing login");\r
53     ((ServiceProxyClient)searchClient).authenticate(user);    \r
54     pzreq.getRecordInState().removeParametersSilently();\r
55     pzreq.getSearchInState().removeParametersSilently();\r
56     pzresp.reset();\r
57     return navigateTo;\r
58   }\r
59 \r
60   @Override\r
61   public void setServiceProxyUrl(String url) {\r
62     logger.info("Setting Service Proxy url: " + url);\r
63     serviceProxyUrl = url;\r
64     pzreq.getSearchInState().removeParametersSilently();\r
65     pzresp.reset();\r
66   }\r
67   \r
68   public String getServiceProxyUrl() {\r
69     return serviceProxyUrl;\r
70   }\r
71     \r
72   public String getInitDocPath () {\r
73     return searchClient.getConfiguration().get("INIT_DOC_PATH");\r
74   }\r
75   \r
76   @Override\r
77   public void setInitFileName(String fileName) {\r
78     this.initDocFileName = fileName;\r
79     \r
80   }\r
81 \r
82   @Override\r
83   public String getInitFileName() {\r
84     return initDocFileName;\r
85   }\r
86 \r
87   @Override\r
88   public String postInit() throws UnsupportedEncodingException, IOException {    \r
89     String initDocPath = ((ServiceProxyClient)searchClient).getInitDocPaths()[0];\r
90     logger.info("Paths: " + ((ServiceProxyClient)searchClient).getInitDocPaths());\r
91     logger.info("Path: " + initDocPath);\r
92     pzresp.reset();\r
93     byte[] response = ((ServiceProxyClient)searchClient).postInitDoc(initDocPath + getInitFileName());\r
94     initDocResponse = new String(response,"UTF-8");\r
95     return initDocResponse;\r
96   }\r
97   \r
98   @Override\r
99   public String postInit(byte[] initDoc) throws UnsupportedEncodingException, IOException {    \r
100     pzresp.reset();\r
101     byte[] response = ((ServiceProxyClient)searchClient).postInitDoc(initDoc);\r
102     initDocResponse = new String(response,"UTF-8");\r
103     return initDocResponse;\r
104   }\r
105 \r
106 \r
107   @Override\r
108   public String getInitResponse() {\r
109     return initDocResponse;\r
110   }\r
111   \r
112   public void setAceFilter(String filterExpression) {\r
113     //setCommandParameter("record",new CommandParameter("acefilter","=",filterExpression));\r
114   }\r
115   \r
116   public String getAceFilter () {\r
117     return null;\r
118     // return getCommandParameterValue("record","acefilter","");\r
119   }\r
120 \r
121 \r
122 }\r