Adds option to download any command respond
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / mkjsf / pazpar2 / ServiceProxyExtensions.java
1 package com.indexdata.mkjsf.pazpar2;\r
2 \r
3 import java.io.IOException;\r
4 import java.io.Serializable;\r
5 import java.io.UnsupportedEncodingException;\r
6 \r
7 import javax.enterprise.context.SessionScoped;\r
8 import javax.inject.Inject;\r
9 import javax.inject.Named;\r
10 \r
11 import org.apache.log4j.Logger;\r
12 import org.apache.myfaces.custom.fileupload.UploadedFile;\r
13 \r
14 import com.indexdata.mkjsf.config.ConfigurationReader;\r
15 import com.indexdata.mkjsf.pazpar2.commands.Pazpar2Commands;\r
16 import com.indexdata.mkjsf.pazpar2.commands.sp.InitDocUpload;\r
17 import com.indexdata.mkjsf.pazpar2.data.ResponseDataObject;\r
18 import com.indexdata.mkjsf.pazpar2.data.ResponseParser;\r
19 import com.indexdata.mkjsf.pazpar2.data.Responses;\r
20 import com.indexdata.mkjsf.pazpar2.sp.auth.ServiceProxyUser;\r
21 import com.indexdata.mkjsf.utils.Utils;\r
22 \r
23 @Named("pz2x") @SessionScoped\r
24 public class ServiceProxyExtensions implements ServiceProxyInterface, Serializable {\r
25     \r
26   private static final long serialVersionUID = 4221824985678758225L;\r
27   private static Logger logger = Logger.getLogger(ServiceProxyExtensions.class);  \r
28   private String initDocFileName = "";\r
29   private String initDocResponse = "";  \r
30   private InitDocUpload initDocUpload; \r
31     \r
32   @Inject ConfigurationReader configurator;  \r
33   @Inject ServiceProxyUser user;    \r
34   @Inject Pz2Bean pz2;\r
35   @Inject Pazpar2Commands pzreq;\r
36   @Inject Responses pzresp;\r
37 \r
38   \r
39   public ServiceProxyExtensions() {\r
40     this.initDocUpload = new InitDocUpload(this);\r
41     // TODO: \r
42     //stateMgr.addStateListener(this);\r
43   }\r
44     \r
45   public void login(String un, String pw) {\r
46     if (user.isAuthenticated() && user.getName().equals(un) && pz2.spClient.checkAuthentication(user)) {\r
47       logger.info("Repeat request from UI to authenticate user. Auth verified for given user name so skipping log-in.");\r
48     } else {\r
49       logger.info("doing un/pw login");\r
50       user.setName(un);\r
51       user.setPassword(pw);\r
52       login("dummy");\r
53     }\r
54   }\r
55 \r
56   @Override\r
57   public String login(String navigateTo) {\r
58     logger.info("doing login by " + user + " using " + pz2 + " and client " + pz2.getSpClient());\r
59     pz2.resetSearchAndRecordCommands();\r
60     pzresp.resetAllSessionData();\r
61     pz2.getSpClient().authenticate(user);    \r
62     return navigateTo;\r
63   }\r
64   \r
65   public void ipAuthenticate (ServiceProxyUser user) {\r
66     if (!user.isIpAuthenticated()) {\r
67       if (user.isAuthenticated()) {\r
68         user.clear();\r
69       }\r
70       pz2.resetSearchAndRecordCommands();\r
71       pzresp.resetAllSessionData();\r
72       pz2.getSpClient().ipAuthenticate(user);\r
73     }\r
74   }\r
75     \r
76   public String getInitDocPath () {\r
77     return pz2.getSpClient().getConfiguration().get("INIT_DOC_PATH");\r
78   }\r
79   \r
80   @Override\r
81   public void setInitFileName(String fileName) {\r
82     this.initDocFileName = fileName;\r
83     \r
84   }\r
85 \r
86   @Override\r
87   public String getInitFileName() {\r
88     return initDocFileName;\r
89   }\r
90 \r
91   @Override\r
92   public ClientCommandResponse postInit() throws UnsupportedEncodingException, IOException {    \r
93     String initDocPath = pz2.getSpClient().getInitDocPaths().get(0);\r
94     logger.info("Paths: " + pz2.getSpClient().getInitDocPaths());\r
95     logger.info("Path: " + initDocPath);\r
96     pz2.resetSearchAndRecordCommands();\r
97     pzresp.resetAllSessionData();\r
98     ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDocPath + getInitFileName());    \r
99     return response;\r
100   }\r
101   \r
102   @Override\r
103   public ClientCommandResponse postInit(byte[] initDoc, boolean includeDebug) throws UnsupportedEncodingException, IOException {    \r
104     pz2.resetSearchAndRecordCommands();\r
105     pzresp.resetAllSessionData();\r
106     ClientCommandResponse response = pz2.getSpClient().postInitDoc(initDoc,includeDebug);    \r
107     return response;\r
108   }\r
109 \r
110   @Override\r
111   public String getInitResponse() {\r
112     return initDocResponse;\r
113   }\r
114   \r
115   public void setUploadedInitDoc (UploadedFile uploadedFile) {\r
116     initDocUpload.setUploadedFile(uploadedFile);\r
117   }\r
118   \r
119   public UploadedFile getUploadedInitDoc () {\r
120     return initDocUpload.getUploadedFile();\r
121   }\r
122   \r
123   public void submitInitDoc () throws IOException {\r
124     HttpResponseWrapper response =  initDocUpload.submit();\r
125     ResponseDataObject responseObject = ResponseParser.getParser().getDataObject(response.getResponseString());\r
126     logger.info("Putting init response to : " + Utils.objectId(pzresp));\r
127     pzresp.put("init", responseObject);\r
128   }\r
129   \r
130   public void setIncludeInitDocDebug(boolean bool) {\r
131     logger.info(Utils.objectId(this) + " setting debug to " + bool);\r
132     initDocUpload.setIncludeDebug(bool);\r
133   }\r
134 \r
135   public boolean getIncludeInitDocDebug() {\r
136     return initDocUpload.getIncludeDebug();\r
137   }\r
138   \r
139   // TODO: Remove when possible\r
140   public InitDocUpload getInitDocUpload () {\r
141     return initDocUpload;\r
142   }\r
143 \r
144   \r
145   \r
146   \r
147 }\r